Технологии

Блокчейн-рукопожатие: обмен ключами без доверенной третьей стороны

Прежде чем два пользователя Z-Text смогут обмениваться сообщениями, они должны выполнить криптографическое рукопожатие. В этой статье рассказывается, как оно работает и почему важно для безопасности.

Z-Text Team·Engineering
28 ноября 2025 г.7 мин чтения

Прежде чем два пользователя Z-Text смогут обмениваться сообщениями, они должны пройти «рукопожатие» — криптографический протокол, устанавливающий общий ключ шифрования. В этой статье объясняется, как это работает и почему это важно для безопасности.

Зачем нужно рукопожатие?

В традиционных зашифрованных мессенджерах обмен ключами опосредуется центральным сервером. Когда вы отправляете сообщение кому-либо в Signal, их сервер обеспечивает начальное согласование ключей. Это работает хорошо, но создаёт зависимость от доверия — вы доверяете серверу доставку правильных ключей.

Z-Text не имеет серверов. Рукопожатие выполняется полностью через транзакции в блокчейне, что делает его бездоверительным и проверяемым. Ни один посредник не может подменить или наблюдать обмен ключами.

Протокол

Рукопожатие Z-Text следует модифицированному протоколу обмена ключами Диффи-Хеллмана, адаптированному для доставки через блокчейн:

Шаг 1: Инициация

Алиса хочет написать Бобу. Она знает z-адрес Боба. Приложение Алисы генерирует эфемерную пару ключей и создаёт защищённую транзакцию на z-адрес Боба. Мемо-поле транзакции содержит эфемерный открытый ключ Алисы и её z-адрес.

Поскольку это защищённая транзакция, никто, наблюдающий за блокчейном, не может увидеть, что Алиса отправила что-либо Бобу или что содержится в мемо-поле.

Шаг 2: Обнаружение

Когда Боб синхронизирует свой кошелёк, его приложение обнаруживает входящую транзакцию и считывает мемо-поле. Оно распознаёт это как запрос на рукопожатие благодаря специальному маркеру протокола в формате мемо-поля.

Приложение Боба отображает запрос на рукопожатие с z-адресом Алисы, предлагая ему принять или отклонить его.

Шаг 3: Ответ

Если Боб принимает, его приложение генерирует собственную эфемерную пару ключей и отправляет ответную транзакцию на z-адрес Алисы. Мемо-поле содержит эфемерный открытый ключ Боба.

Шаг 4: Деривация ключа

Теперь и Алиса, и Боб имеют эфемерные открытые ключи друг друга. Каждый независимо вычисляет общий секрет, используя Elliptic Curve Diffie-Hellman (ECDH). Математические свойства ECDH гарантируют, что обе стороны получат один и тот же общий секрет без его передачи по сети.

Этот общий секрет затем используется как основа для деривации симметричных ключей шифрования для всех будущих сообщений между Алисой и Бобом.

Свойства безопасности

Рукопожатие через блокчейн обеспечивает несколько важных свойств безопасности:

  • Конфиденциальность: обмен ключами скрыт внутри защищённых транзакций, невидимых для наблюдателей
  • Целостность: механизм proof-of-work блокчейна гарантирует, что транзакции не могут быть подделаны
  • Аутентичность: только владелец закрытого ключа z-адреса может создать ответ на рукопожатие
  • Отсутствие MITM: без центрального сервера нет посредника, который мог бы подменить ключи

Сравнение с Signal Protocol

Signal Protocol использует центральный сервер для хранения и доставки предварительных ключей. Хотя это обеспечивает асинхронный обмен ключами (вы можете написать тому, кто офлайн), это требует доверия серверам Signal в доставке правильных ключей.

Рукопожатие Z-Text через блокчейн также является асинхронным (Бобу не нужно быть онлайн, когда Алиса отправляет запрос), но механизмом доставки выступает децентрализованный блокчейн, а не корпоративный сервер. Этапы рукопожатия обнаруживаются через push-уведомления мемпула G-stream и завершаются за секунды на каждом шаге, а модель доверия принципиально сильнее.

Практические аспекты

Рукопожатие обычно завершается за секунды на каждом шаге благодаря push-уведомлениям мемпула G-stream. Каждый шаг требует небольшой комиссии за транзакцию BTCZ. После установления общий ключ хранится локально и не нуждается в обновлении — все будущие сообщения между двумя контактами используют один и тот же ключ.

Если контакт удалён и добавлен заново, необходимо выполнить новое рукопожатие, генерирующее совершенно новый общий секрет.

#cryptography#key-exchange#diffie-hellman#blockchain
ПоделитьсяTwitter

Похожие статьи