ОТКРЫТЫЙ КОД

Наши приложения для Windows, Android, iOS и Linux
полностью с открытым кодом.

Весь код приложений Colitu для Windows, Android, iOS и Linux открыт на GitHub. Прочитав код, вы сами увидите, что приложение должно делать на устройстве. Ниже мы отдельно объясняем, что открытый код доказывает, а что нет.

Windows

colitu/windows
GPL-3.0

Приложение для 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
GPL-3.0

Приложение для телефонов, планшетов и телевизоров: интерфейс, выбор протокола, VPN-сервис и обновление.

git clone https://github.com/colitu/android.git
cd android/android
./gradlew assemblePlaystoreDebug
Открыть исходный код на GitHub ↗

iPhone · iPad

colitu/ios
GPL-3.0

Приложение для iPhone и iPad: интерфейс, выбор протокола, туннель Network Extension и работа с аккаунтом.

git clone https://github.com/colitu/ios.git
cd ios
flutter pub get && flutter test
Открыть исходный код на GitHub ↗

Linux · Beta

colitu/linux
GPL-3.0

Приложение для 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
GPL-3.0

Расширение для 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 ГБ каждый месяц.