Перейти к содержимому
buybitcoinsmart

Глоссарий / Узлы и ПО

Шифрованный транспорт BIP-324

Другие названия: транспорт v2.

Что такое Шифрованный транспорт BIP-324?
Шифрованный транспорт BIP-324 представляет собой одноранговый протокол связи биткоина версии 2, который шифрует каждое сообщение, которым обмениваются два узла, и делает соединение неотличимым от случайных данных для того, кто его прослушивает.

Определено в BIP-324.

Два узла, которые поддерживают BIP-324, проводят обмен эфемерными ключами до отправки любого сообщения биткоина, а затем оборачивают каждое сообщение в ChaCha20Poly1305. Спецификация была помечена как окончательная 10 июля 2024 года, а узел объявляет о поддержке флагом сервиса NODE_P2P_V2, бит 11. С вашими биткоинами ничего не меняется: меняется то, что пассивный наблюдатель больше не может прочитать транзакции, которые передает ваш узел.

Как это работает

BIP-324 заменяет фиксированные магические байты, которыми раньше открывалось соединение с биткоином, потоком, не имеющим никакой узнаваемой формы.

Сторона, которая инициирует соединение, генерирует одноразовый ключ secp256k1 и отправляет 64-байтовую кодировку ElligatorSwift своего публичного ключа. Эта кодировка и есть трюк: обычный публичный ключ распознается как точка на кривой, а любая 512-битовая строка является допустимой кодировкой ElligatorSwift, поэтому начальные байты статистически представляют собой просто шум. После этого любая из сторон может добавить до 4095 байтов произвольного заполнения, называемого мусором, чтобы соединение не обязательно начиналось ровно с 64 байтов. Оба конца выполняют X-only ECDH и пропускают результат через HKDF-SHA256, чтобы вывести четыре ключа шифрования, два 16-байтовых терминатора мусора и идентификатор сессии.

Эти начальные байты являются единственной частью обмена, которая передается в открытом виде. После терминаторов все, что идет по сети, состоит из пакетов. Пакет представляет собой 3-байтовое зашифрованное поле длины, за которым следует шифртекст ChaCha20Poly1305, охватывающий 1-байтовый заголовок и содержимое, что стоит 20 байтов плюс полезная нагрузка. Старший бит этого заголовка является битом игнорирования, и пакет, несущий его, представляет собой приманку: получатель подтверждает, что пакет расшифровывается, и затем отбрасывает его, и именно так узел может дополнять свой трафик, чтобы скрыть момент отправки реального сообщения. Ключи обновляются по принципу храповика каждые 224 пакета, интервал выбран так, чтобы почти простаивающее соединение, отправляющее только пинги раз в 20 минут, меняло ключи примерно каждые 3,11 дня, и этот храповик обеспечивает прямую секретность сессии (forward secrecy).

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

Где это видно

BIP-324 ничего не оставляет в блокчейне, поэтому он проявляется только в связи между двумя работающими узлами.

Поддержка объявляется в распространении адресов через флаг NODE_P2P_V2, который узлы узнают из сообщений addr и addrv2. Эти флаги проходят через недоверенные ретрансляторы и объединяются логическим ИЛИ, поэтому ложное объявление возможно, и BIP рекомендует клиенту v2, которого сразу отключили, повторить попытку с тем же узлом по v1. В обратном направлении узел v2 намеренно продолжает принимать входящие соединения v1, чтобы сеть не разделилась на две половины, не способные связаться друг с другом.

Второй видимый эффект состоит в более коротких сообщениях. Версия 1 тратила 12 байтов ASCII на каждое имя команды; версия 2 присваивает однобайтовые идентификаторы 28 типам сообщений, определенным к настоящему времени, поэтому inv представляет собой один байт 14, а getblocktxn имеет идентификатор 10, и любое сообщение с коротким идентификатором стоит на 3 байта меньше, чем его форма в v1. Все, чему идентификатор не присвоен, откатывается к 13-байтовой кодировке, то есть нулевому байту, за которым следует старое имя в ASCII, так что ничего не теряется.

Спецификация имеет статус Deployed, содержит тестовые векторы и наивную эталонную реализацию на Python, предназначенную только для демонстрации, и все еще дорабатывается: редакция 1.0.2 от 30 января 2026 года добавила таблицу идентификаторов типов сообщений во вспомогательный файл, чтобы другие BIP могли заявлять идентификаторы, не редактируя основной документ. В заголовке также указано, что BIP-324 заменяет BIP-151.

Часто задаваемые вопросы

Делает ли BIP-324 мои транзакции в биткоине приватными?

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

Нужно ли что-то включать, чтобы использовать транспорт v2?

Ничего в приложении-кошельке, потому что согласование происходит между узлами, а не между вами и биржей. Узел, который его поддерживает, объявляет флаг сервиса NODE_P2P_V2, и BIP рекомендует клиенту v2, которого сразу отключили, повторить попытку с этим узлом по v1, поэтому повторная попытка является задачей программного обеспечения узла, а не вашей.

Может ли наблюдатель по-прежнему определить, что я запускаю узел биткоина?

Да, несколькими способами. В BIP прямо сказано, что анализ времени и длины пакетов по-прежнему может выявить использование протокола v2, а злоумышленник, способный вмешиваться в соединения, может принудить узлы вернуться к незашифрованному v1. Псевдослучайный поток байтов повышает стоимость фингерпринтинга, а не устраняет его.

Читайте далее

Источники

Последняя проверка: 6 сентября 2026 г.

Связанные термины

Еще в разделе «Узлы и ПО»

Читать эту страницу на английском