Windows
colitu/windowsПриложение для Windows 10 и 11: интерфейс, управление подключением, обновление и установщик.
git clone https://github.com/colitu/windows.git
cd windows\src
dotnet build ColituVPN.sln -c ReleaseОткрыть исходный код на GitHub ↗Android · Android TV
colitu/androidПриложение для телефонов, планшетов и телевизоров: интерфейс, выбор протокола, VPN-сервис и обновление.
git clone https://github.com/colitu/android.git
cd android/android
./gradlew assemblePlaystoreDebugОткрыть исходный код на GitHub ↗iPhone · iPad
colitu/iosПриложение для iPhone и iPad: интерфейс, выбор протокола, туннель Network Extension и работа с аккаунтом.
git clone https://github.com/colitu/ios.git
cd ios
flutter pub get && flutter testОткрыть исходный код на GitHub ↗Linux · Beta
colitu/linuxПриложение для Linux: интерфейс, управление подключением, kill switch на nftables и пакеты .deb/.rpm.
git clone https://github.com/colitu/linux.git
cd linux/src
dotnet publish ColituVPN -c Release -r linux-x64Открыть исходный код на GitHub ↗Chrome · Firefox
colitu/extensionРасширение для Chrome и Firefox: интерфейс, сессия, настройки прокси и пакеты для магазинов.
git clone https://github.com/colitu/extension.git
cd extension
npm test && npm run buildОткрыть исходный код на GitHub ↗Почему наш код открыт?
Выбрать VPN — значит доверить компании свой интернет-трафик. Мы хотим заслужить это доверие не словами, а кодом, который может проверить каждый.
VPN видит многое
Через VPN-приложение проходит весь трафик устройства. Доверять такой программе вслепую вы не должны.
Доказательство на стороне приложения
Когда код открыт, любой видит, что приложение собирает и куда отправляет. Но открытый код приложения не доказывает обещание «мы не ведём логов» на серверах; что делают серверы, мы описываем в документе о безопасности.
Больше глаз — надёжнее код
В закрытом коде ошибки могут годами оставаться незамеченными. Открытый код изучают исследователи по всему миру — проблемы находят и исправляют быстрее.
Свобода, которая принадлежит вам
Лицензия GPL-3.0 позволяет изучать код, собирать, изменять и распространять его. Это право у вас нельзя отнять.
Что можно проверить в коде?
- В приложении нет встроенного списка серверов: данные для подключения выдаются API для вашего аккаунта.
- Токены сессии хранятся на устройстве в зашифрованном виде: в Android — с Android Keystore, в iOS — в Keychain, в Windows — с DPAPI, в Linux — ключом, привязанным к компьютеру и пользователю.
- Приложения для Windows, Android и Linux устанавливают обновление, только если подпись ECDSA P-256 манифеста выпуска проверена и SHA-256 пакета совпадает с манифестом.
- В коде видно, как перебираются протоколы и как проверяется соединение.
- Каждый запрос и каждое поле, которые приложение отправляет в API, описаны в коде. Ни в одном приложении (Android, iOS, Windows, Linux) нет библиотек аналитики, рекламы или отчётов о сбоях.
Что открыто, а что нет?
Мы хотим быть честными в этом вопросе. Вот что открыто, а что нет:
- ✓Приложение для WindowsПолностью на GitHubОткрытые
- ✓Приложение для Android и Android TVПолностью на GitHubОткрытые
- ✓Приложение для LinuxПолностью на GitHub; пакеты собираются в GitHub ActionsОткрытые
- ✓Расширение для браузераПолностью на GitHubОткрытые
- ✓Приложение для iPhone и iPadПолностью на GitHub; сборки для TestFlight собираются в CodemagicОткрытые
- —Серверная инфраструктура и система аккаунтовЗакрыты, чтобы не ослаблять защиту от злоупотреблений и атак.Закрыто
Участвуйте
Мы рады сообщениям об ошибках, исправлениям переводов и предложениям на GitHub. Если публикуете свою версию, используйте собственное название и логотип: название и логотип Colitu не входят в GPL.
Нашли уязвимость?
Пожалуйста, не открывайте публичный issue — пришлите подробности на security@colitu.com. Мы ответим в течение 3 рабочих дней и дадим первичную оценку в течение 10 рабочих дней. Мы не преследуем добросовестные исследования.
Open-source проекты, которые мы используем
Приложения Colitu используют надёжные компоненты, которые open-source-сообщество развивает годами. Мы благодарим их авторов.
Открытый код, проверка и аудит — разные вещи
Что мы можем доказать сегодня, а что пока нет:
Контрольная сумма файла (SHA-256)
ЕстьКонтрольные суммы ниже доказывают, что загруженный файл побитово совпадает с опубликованным нами, то есть не был повреждён или изменён по дороге. Они не доказывают, что файл собран из помеченного тегом кода. Суммы берутся из манифеста выпуска на colitu.com; эта страница сама не проверяет подпись манифеста, поэтому сравните их и со значением в выпуске на GitHub.
Подписи издателя
ЧастичноAPK для Android подписаны ключом выпуска Colitu; Android принимает обновление только с той же подписью. Приложения для Windows, Android и Linux проверяют подпись ECDSA P-256 манифеста обновлений. Установщик Windows пока не подписан Authenticode (Windows SmartScreen может показать предупреждение); пакеты .deb и .rpm для Linux не подписаны GPG. Сборки для iPhone и iPad подписывает Apple.
Воспроизводимая сборка
Android, WindowsВ приложениях для Android и Windows файл, который вы соберёте сами из кода с тегом релиза на GitHub, получится байт в байт таким же, как наш. Так вы можете независимо убедиться, что опубликованный файл собран именно из этого кода. Сборки для iOS и Linux пока не воспроизводимы.
Независимый аудит
Пока нетНаши приложения и инфраструктура не проходили независимый аудит безопасности или тест на проникновение; дата не назначена. Слова и значки «открытый код» на этом сайте не означают аудит.
Что происходит на серверах
Открытый код приложений не доказывает, что делают наши серверы. Серверное ПО и система аккаунтов закрыты и не могут быть проверены извне. Что серверы записывают и чего не записывают, где и сколько хранятся данные — описано в документе о безопасности и в политике конфиденциальности. Документ о безопасности · Политика конфиденциальности
Проверьте скачанный файл
Каждый установщик на colitu.com связан с тегом релиза на GitHub и коммитом, на который он указывает. Контрольные суммы ниже взяты из подписанного манифеста релиза, который приложения используют при обновлении.
Windows · Версия 3.1.4
Релиз на GitHub ↗- Тег
- v3.1.4
- Commit
- d094ee5ae707459db12856515bb1885119965338
- ColituVPN-Setup-3.1.4-x64.exe
- SHA-256 3d58040d33883ea9cc0cc53824700688af02b8eee1e60b9e5f191e70ce7d2a9a
Манифест релиза подписан ECDSA P-256; приложение не устанавливает обновление, не проверив подпись и контрольную сумму файла.
Android · Версия 3.1.2
Релиз на GitHub ↗- Тег
- v3.1.2
- Commit
- 139d8de51bdc0ebe00f5e81abd07f308a56fb184
- Colitu-3.1.2.apk
- SHA-256 3a9a839dc93ea5bc726d23ab1d3492e46a66a72da9eae72945eb2b00a8841787
- Colitu-3.1.2-arm64-v8a.apk
- SHA-256 15781c5fb0b148b2c4bab89548a6f2b150da154953315d373cf81a190b4e0cd8
- Colitu-3.1.2-armeabi-v7a.apk
- SHA-256 8f8bd7ed8ca982b2875493c9db12b5089351395a5bd9342588b3ece3220f478b
- Сертификат подписи
- SHA-256 900e364616e5fce83766310f74bd06e4743a6936460a9e108edd096dfb5e82fc
Манифест выпуска подписан ECDSA P-256. Перед установкой обновления приложение проверяет подпись, сравнивает контрольную сумму APK с манифестом и проверяет, что сертификат подписи APK совпадает с сертификатом установленного приложения; старые версии оно не устанавливает. Хеш сертификата подписи на этой странице не входит в подписанную часть манифеста; проверьте сертификат в APK сами с помощью apksigner.
Linux · Версия 1.7.5
Релиз на GitHub ↗- Тег
- v1.7.5
- Commit
- 0a40ec778ed19ee337e4cd6c809ab02b81e5863e
- colitu-vpn_1.7.5_amd64.deb
- SHA-256 e33bf133b4cf6c56d00afa0d0aa3e076a90f656b48b5b456f9a6aa8efb95f1a6
- colitu-vpn_1.7.5_arm64.deb
- SHA-256 0cb175bd76af5f2aa2f384fb5a63da5a1e9872d7bf509abf4e31c8995d591ddf
- colitu-vpn-1.7.5-1.x86_64.rpm
- SHA-256 44fc743af6cc3695c745ab522f019d32e4aaf2dde056ebf9db8423f565d49cec
- colitu-vpn-1.7.5-1.aarch64.rpm
- SHA-256 132b74268b9b6e5f9e3b38501529662f0bc2b7ebe87ad596d499b09bda43b0ca
- colitu-vpn-1.7.5-linux-x64.tar.gz
- SHA-256 eb20314fc6177d8e13345fa8b5669858ebfbfb5f0a7d16df1b852a38ac11a9bd
- colitu-vpn-1.7.5-linux-arm64.tar.gz
- SHA-256 a388838e24852bca32d96cd33711a34006066761d430741715991a854fc832d1
Манифест релиза подписан ECDSA P-256; приложение не устанавливает обновление, не проверив подпись и контрольную сумму файла.
Как проверить самостоятельно
# Windows (PowerShell)
Get-FileHash .\ColituVPN-Setup-*-x64.exe -Algorithm SHA256
# Linux / macOS
sha256sum Colitu-*.apk
sha256sum colitu-vpn_*_amd64.deb
# Android signing certificate
apksigner verify --print-certs Colitu-*.apkПолученная контрольная сумма должна совпадать со значением на этой странице и в релизе на GitHub. Что файлы для Android и Windows собраны из кода с тегом релиза, можно доказать и по шагам воспроизводимой сборки ниже; для iOS и Linux та же сумма доказывает лишь, что это файл, который опубликовали мы.
Сборки для iPhone и iPad подписывает Apple, а устанавливаются они через TestFlight; коммит с тегом каждого выпуска опубликован на GitHub.
Что такое воспроизводимая сборка и зачем она нужна?
Открытый исходный код показывает, для чего написано приложение. Воспроизводимая сборка доказывает, что скачанный вами файл действительно получен из этого кода: кто бы ни собирал один и тот же код теми же инструментами, получится файл, байт в байт такой же.
Статус: приложения для Android и Windows собираются воспроизводимо. Сборки для iOS и Linux пока нет.
Доверять компьютеру, на котором идёт сборка, не нужно
Даже если исходный код чист, при взломе компьютера, на котором идёт сборка, в файл можно незаметно добавить код. Когда каждый может получить из одного кода один и тот же файл, такое добавление сразу заметно.
Не доверяйте и нам вслепую
Вы можете на своём компьютере убедиться, что опубликованный нами файл содержит не больше, чем код на GitHub. Так же будет заметна и другая версия, тайно подготовленная сотрудником или человеком под давлением.
Защита от атак на цепочку поставок
Приложение собирается с библиотеками других проектов. Версия и контрольная сумма каждой библиотеки зафиксированы в lock-файлах; готовые компоненты проверяются по SHA-256. Если что-то изменится незаметно, сборка остановится.
Автоматическая проверка при каждом изменении
Автоматическая сборка на GitHub при каждом изменении заново собирает собственные компоненты Colitu из исходного кода и сравнивает их байт в байт с файлами в репозитории: для Android — на Linux, для Windows — на Windows.
Как мы это обеспечиваем?
- Одни и те же инструменты: Gradle, JDK, Android NDK, .NET SDK, Go и Inno Setup закреплены по точным номерам версий.
- Одни и те же зависимости: каждая библиотека и контрольная сумма её содержимого записаны в файлах фиксации версий (lock-файлах); CI работает в режиме блокировки.
- Время и папка сборки в файл не попадают: вместо даты используется время commit, вместо путей к папкам — относительные пути.
- Одинаковый исходный код на любом компьютере: окончания строк в Windows такие же, как в Linux; если они отличаются, сборка релиза останавливается.
- Собственные компоненты Colitu (движок Adaptive Connect, клиент CSL, туннельный мост hev-socks5-tunnel) собираются из исходного кода по зафиксированному commit.
Что не охватывает?
- Одного файла в исходном коде нет: colitu-build.json. В нём резервные адреса API, которые используются при блокировках (а в Windows ещё и DNS-серверы блокировки рекламы). Мы не размещаем его на GitHub, чтобы блокировать его было сложнее; в опубликованном приложении он доступен для чтения. При проверке вы берёте этот файл из своей копии, всё остальное получается байт в байт таким же.
- Ядро Xray, sing-box, wintun и файлы геоданных — это официальные релизы их авторов. Мы их не собираем, а фиксируем по контрольным суммам SHA-256.
- Версию из Google Play Google заново упаковывает и подписывает для каждого устройства. Сравнение байт в байт выполняется с APK на colitu.com.
- Сборки для iPhone, iPad и Linux пока не воспроизводимы.
- Воспроизводимая сборка доказывает не то, что код безопасен, а то, что файл получен из этого кода. Она не заменяет независимый аудит безопасности.
Проверьте сами
# Android (JDK 21.0.12)
git clone https://github.com/colitu/android && cd android && git checkout v<version>
unzip -p Colitu_<version>_universal.apk colitu-build.json
cd android && COLITU_MIRRORS='<mirrors>' ./gradlew assembleDirectRelease
apksigcopier compare Colitu_<version>_arm64-v8a.apk \
--unsigned app/build/outputs/apk/direct/release/Colitu_<version>_arm64-v8a.apk
# Windows (PowerShell 7, .NET SDK from global.json, Inno Setup 6.7.3)
git clone https://github.com/colitu/windows; cd windows; git checkout v<version>
pwsh scripts/fetch-cores.ps1; pwsh scripts/build-sidecars.ps1
$values = "C:\Program Files\Colitu VPN\colitu-build.json"
pwsh scripts/build-installer.ps1 -Version <version> -SkipManifest -BuildValuesPath $values
Get-FileHash artifacts\installer\ColituVPN-Setup-<version>-x64.exeВ Android должен совпадать каждый байт, кроме подписи, а в Windows — весь установочный файл. Подробности и версии инструментов есть в руководстве каждого репозитория: Android ↗ · Windows ↗
Прочитайте код — потом решайте.
Пользуйтесь нашими открытыми приложениями бесплатно: 1 ГБ каждый месяц.
