
Библиотека крипто/протокола мессенджера Voron (X3DH-lite + Double Ratchet, group sender-keys, onion transport) — запрошена внешняя проверка
Это ядро криптографии и протокола обмена сообщениями небольшого проекта E2EE-мессенджера, выделенное для внешнего ревью. Это не весь продукт — клиент для Android и конфигурация развёртывания намеренно оставлены за бортом; это только та часть, на которую нужно посмотреть.
common/ — сама библиотека:
e2ee/ — X3DH-lite (асинхронное согласование ключей) + Double Ratchet поверх, построенный на
Curve25519/ChaCha20-Poly1305/Ed25519/HKDF (примитивы от JDK, ничего самодельного на
этом уровне).crypto/ — тонкие обёртки над этими примитивами JDK.group/ — групповая переписка через схему sender-keys (подход pre-MLS, который использовали ранние группы
WhatsApp/Signal), а также подписанная хеш-цепочка событий на стороне клиента для
членства/ролей, поскольку ретранслятор вообще не имеет понятия о группах.onion/ — опциональный транспорт с многоуровневым шифрованием (фиксированное количество прыжков, выравнивание размеров пакетов),
чтобы ретранслятор не мог напрямую связать IP-адрес соединения с ключом идентичности.client/, transport/, backup/ — протокол передачи, транспортное рукопожатие Noise_IK и формат
зашифрованного резервного копирования.server/ — эталонная реализация ретранслятора: маршрутизация с хранением и пересылкой, каталог prekey,
офлайн-почтовый ящик, роль лукового прыжка. Намеренно минимальное доверие: ретранслятор никогда не видит открытый текст,
никогда не хранит сообщение дольше, чем требуется для доставки, и (по замыслу) не имеет никакого понятия о членстве в группах.client/ — простой консольный тестовый стенд JVM (не реальное приложение), используемый для взаимодействия common/server
друг с другом в интеграционных тестах, а также несколько автономных PoC-эксплойтов (см. ниже).security-audit/ — отчёты предыдущих внутренних ревью, найденные ошибки, а также
уже исправленные. Прочитайте это, прежде чем сообщать о чём-то — велика вероятность, что это уже
здесь. REPORT.md — основной; ADVERSARIAL_REVIEW_PAVEL.md — более поздний, узкий проход;
fuzz/ и client/.../exploit/ содержат запускаемые PoC, а не только описания.security-audit/ как раз о том, "что может сделать враждебный ретранслятор".group/GroupCryptoSession.kt).security-audit/REPORT.md и ADVERSARIAL_REVIEW_PAVEL.md, а не что-то скрываемое.common/src/main/kotlin/messenger/common/e2ee/) —
это единственная действительно оригинальная криптографическая конструкция здесь, всё под ней —
стандартное. Она несколько раз прошла внутреннее ревью (см. security-audit/), но никогда
никем за пределами этого проекта.common/src/main/kotlin/messenger/common/group/GroupControlLog.kt)
— подписанная хеш-цепочка на стороне клиента без какого-либо применения на сервере../gradlew test
Стандартный проект Gradle/Kotlin, JDK 17+. Для модульного набора тестов не требуется доступ к сети или запущенные сервисы. security-audit/README.md содержит инструкции для живого фаззинга ретранслятора и
PoC корреляции лука, для которых нужны локальные процессы (никогда не запускайте это на
продуктивном хосте).
Независимый криптографический аудит этого кода не проводился. Всё в security-audit/ — это
внутреннее инженерное ревью — тщательное, но саморевью, без формальных доказательств и без
профессиональной/институциональной репутации. Относитесь к этому как к отправной точке для ревью, а не
как к сертификации.