Блокчейн-рукопожатие: обмен ключами без доверенной третьей стороны
Прежде чем два пользователя Z-Text смогут обмениваться сообщениями, они должны выполнить криптографическое рукопожатие. В этой статье рассказывается, как оно работает и почему важно для безопасности.
Прежде чем два пользователя 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. После установления общий ключ хранится локально и не нуждается в обновлении — все будущие сообщения между двумя контактами используют один и тот же ключ.
Если контакт удалён и добавлен заново, необходимо выполнить новое рукопожатие, генерирующее совершенно новый общий секрет.
Похожие статьи
Двойное шифрование: как Z-Text защищает ваши сообщения
Большинство зашифрованных мессенджеров используют один уровень шифрования. Z-Text применяет два независимых уровня, каждый из которых защищает от разных типов угроз.
Почему децентрализованные мессенджеры так важны
Миллиарды сообщений ежедневно проходят через централизованные серверы. Децентрализованные мессенджеры предлагают принципиально иную модель, в которой ни одна организация не контролирует инфраструктуру.