Двойное шифрование: как Z-Text защищает ваши сообщения
Большинство зашифрованных мессенджеров используют один уровень шифрования. Z-Text применяет два независимых уровня, каждый из которых защищает от разных типов угроз.
Большинство зашифрованных мессенджеров полагаются на один уровень шифрования. Z-Text использует два независимых уровня шифрования, каждый из которых защищает от различных векторов угроз. В этой статье объясняется, как они работают вместе, обеспечивая эшелонированную защиту ваших сообщений.
Уровень 1: Защита блокчейном
Первый уровень шифрования обеспечивается самим блокчейном BitcoinZ. Защищённые транзакции используют zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) для шифрования всех данных транзакции.
Когда сообщение Z-Text отправляется как защищённая транзакция, от всех наблюдателей сети скрывается следующее:
- Адрес отправителя
- Адрес получателя
- Сумма транзакции
- Мемо-поле (где хранится сообщение)
Только обладатель ключа просмотра z-адреса получателя может расшифровать мемо-поле и прочитать содержимое сообщения. Это обеспечивает защиту от пассивного сетевого наблюдения и анализа блокчейна.
Уровень 2: Шифрование ключом контакта
Второй уровень добавляет сквозное шифрование поверх защиты блокчейном. В процессе рукопожатия Z-Text устанавливает общий секретный ключ между двумя контактами, используя обмен ключами по протоколу Elliptic Curve Diffie-Hellman (ECDH).
Перед тем как любое сообщение помещается в мемо-поле транзакции, оно шифруется этим общим ключом. Это означает, что даже если кто-то получит ключ просмотра z-адреса (путём принуждения, кражи или через будущую уязвимость), он всё равно не сможет прочитать сообщения без отдельно полученного ключа контакта.
Обмен ключами через рукопожатие
Ключ контакта устанавливается через протокол рукопожатия без необходимости доверия:
- Алиса отправляет запрос на рукопожатие на z-адрес Боба, содержащий её эфемерный открытый ключ (зашифрованный в мемо-поле защищённой транзакции)
- Боб принимает, отправляя свой эфемерный открытый ключ обратно Алисе (также через защищённую транзакцию)
- И Алиса, и Боб независимо вычисляют один и тот же общий секрет, используя ECDH
- Этот общий секрет становится симметричным ключом шифрования для всех будущих сообщений
Преимущество этого подхода в том, что даже обмен ключами защищён первым уровнем шифрования. Наблюдатель не может видеть обмениваемые открытые ключи и даже то, что происходит рукопожатие.
Почему важны два уровня
Каждый уровень защищает от различных сценариев атак:
- Только уровень 1 защищает от сетевых наблюдателей и аналитиков блокчейна, но уязвим при компрометации ключа просмотра
- Только уровень 2 защищает от компрометации ключа просмотра, но был бы уязвим, если бы сообщения отправлялись в открытом виде в блокчейне
- Оба уровня вместе требуют от злоумышленника одновременной компрометации двух независимых криптографических систем
Это принцип эшелонированной защиты, применённый к шифрованию сообщений. Ни одна точка отказа не может раскрыть ваши сообщения.
Криптографические примитивы
Стек шифрования Z-Text использует хорошо зарекомендовавшие себя криптографические примитивы:
- zk-SNARKs (Groth16) для защищённых транзакций уровня 1
- ECDH на основе Curve25519 для обмена ключами
- ChaCha20-Poly1305 для симметричного шифрования уровня 2
- BLAKE2b для деривации ключей
Все криптографические операции выполняются в ядре приложения на Rust с использованием реализаций с постоянным временем выполнения для предотвращения атак по побочным каналам на основе времени.
Практические последствия
Для пользователя двухуровневое шифрование полностью прозрачно. Приложение автоматически выполняет обмен ключами и шифрование. Сообщения отображаются в привычном интерфейсе чата без каких-либо указаний на сложную криптографию, работающую за кулисами.
Результатом является уровень безопасности сообщений, превосходящий то, что может предложить любой централизованный мессенджер — не потому, что криптография сложнее, а потому, что модель доверия принципиально иная. Нет сервера, который можно вызвать в суд, нет компании, на которую можно надавить, и нет единого ключа, который открывает всё.
Похожие статьи
Блокчейн-рукопожатие: обмен ключами без доверенной третьей стороны
Прежде чем два пользователя Z-Text смогут обмениваться сообщениями, они должны выполнить криптографическое рукопожатие. В этой статье рассказывается, как оно работает и почему важно для безопасности.
Z-Text, Signal и Telegram: сравнение конфиденциальности
Не все обещания конфиденциальности одинаковы. В этой статье архитектура Z-Text сравнивается с двумя популярными альтернативами: Signal и Telegram.