136 / 736V2P2P

BIP324

Зашифровані з’єднання між вузлами

Вузли Bitcoin обмінюються транзакціями та блоками. BIP324 заважає спостерігачеві їхнього інтернет-з’єднання просто читати ці повідомлення. Проте він не робить вузол анонімним і не звільняє його від перевірки отриманих даних.

BIP324 описує шифрування повідомлень, якими обмінюються вузли Bitcoin. Вузол — програма, що перевіряє транзакції та блоки й обмінюється даними з іншими учасниками мережі. Такі прямі з’єднання між учасниками мережі називають P2P, а їхній зашифрований варіант — v2 transport. Той, хто лише прослуховує з’єднання, не повинен мати змоги легко читати його вміст. Проте саме шифрування не підтверджує, з яким вузлом ви насправді спілкуєтеся. Публічний блокчейн і правила чинності транзакцій не змінюються.

Блок — пакет транзакцій, доданий до спільної історії Bitcoin. Блоки публічні, але спостерігати їх поширення — не те саме, що читати готовий ланцюг. У незашифрованому з’єднанні видно також порядок повідомлень, запити й момент передавання транзакції вузлом. Це допомагає пов’язувати мережеву активність із людьми. BIP324 обмежує таке просте читання вмісту пасивним спостерігачем. [1] [2] [7]

Два сумісні вузли узгоджують ключі під час з’єднання й далі спілкуються зашифровано. Їм не потрібно заздалегідь знати особу один одного або мати сертифікат центрального органу. Саме тому зашифрований не означає надійний. Інший вузол, звичайно, читає повідомлення й усе ще може належати нападнику. [1]

На початку з’єднання, під час процедури handshake, обидва вузли створюють тимчасові ключі. Приватний ключ — секретне числове значення; відповідний відкритий ключ можна передавати іншим. За допомогою ECDH кожен обчислює той самий спільний секрет, не передаючи приватних ключів. Із цього секрету виводяться ключі захисту передавання. ElligatorSwift кодує публічні ключі так, щоб ця частина обміну нагадувала випадкові дані й була менш упізнаваною за сталим шаблоном. Ці ключі служать лише мережевому з’єднанню. Це не приватні ключі для витрачання біткоїнів і не seed — секретне початкове значення для виведення ключів гаманця. Увімкнення зашифрованого передавання не потребує розкривати резервну копію гаманця. [1] [8]

Уявіть, що хтось перехопив повідомлення дорогою і змінив його вміст. BIP324 використовує ChaCha20Poly1305: шифрування з перевіркою того, що повідомлення відповідає ключу з’єднання й не було змінене. Без цього ключа зловмисник не може просто переписати дані та створити коректне повідомлення. Однак перевірка не доводить, що ключ спільний саме з потрібним вузлом. Активний посередник може під час встановлення з’єднань видавати себе перед кожною стороною за її співрозмовника. Тоді він має два окремі зашифровані з’єднання, читає повідомлення та передає їх між ними. Тому захист повідомлень і перевірка іншої сторони — різні завдання. [1]

Ключі змінюються під час обміну. Якщо старі секрети правильно видаляються, пізніший доступ до поточних ключів не відкриває автоматично весь попередній запис. Це називається forward secrecy. Вона не захищає повідомлення, які інший вузол уже прочитав або зберіг. Не допомагає вона й проти зловмисника, який постійно контролює комп’ютер; найновіша група повідомлень також може залишитися доступною для розкриття. [1]

Старіший v1 transport залишається доступним для сумісності. Якщо з’єднання v2 не вдається, програма може спробувати v1. Тому активний нападник може блокувати зашифровані з’єднання, намагаючись змусити програму повернутися до передавання без шифрування. BIP324 підвищує вартість пасивного стеження, але не обіцяє загального захисту від downgrade або доступності зв’язку. [1] [4]

BIP324 не приховує IP-адресу чи всі часові та об’ємні характеристики трафіку. IP-адреса — мережева адреса, яку пристрій використовує для зв’язку через інтернет. Tor може вирішувати іншу частину проблеми, але й поєднання не гарантує анонімності. Незалежно від шляху повідомлення Full Node має перевіряти транзакції, підписи та блоки. Саме шифрування не усуває Eclipse Attack, коли вузол оточують нападники. [1] [6]

Bitcoin Core 26.0 додав підтримку v2 у 2023 році, спочатку вимкнену за замовчуванням. Версія 27.0 увімкнула її стандартно. Рік цієї статті означає першу підтримку в Bitcoin Core, а не виникнення пропозиції. Транспорт узгоджується для кожного з’єднання окремо; сумісна програма не означає, що всі її peers використовують v2. [3] [4]

Оператор Bitcoin Core може прочитати стан командою bitcoin-cli getpeerinfo. Це запит через RPC, інтерфейс керування вузлом та отримання відомостей; ця команда не поширює транзакцій у мережі Bitcoin і не змінює налаштувань. Результат показує кожне з’єднання окремо. У transport_protocol_type значення v2 означає зашифроване передавання, v1 — старе незашифроване, а detecting — ще не визначений варіант. Поле session_id містить ідентифікатор з’єднання v2; інакше воно порожнє. Саме його існування не підтверджує іншу сторону. Два оператори можуть порівняти ідентифікатор свого взаємного з’єднання через інший довірений канал, щоб виявити посередника; звичайні з’єднання не роблять цього автоматично. Результат описує цю ланку, а не весь шлях транзакції мережею. Вивід також містить мережеві дані, які не потрібно оприлюднювати. [5] [1]

BIP324 називає авторами Dhruv Mehta, Tim Ruffing, Jonas Schnelli та Pieter Wuille. Номер присвоєно у 2019 році; під час перевірки 17 жовтня 2026 року статус — Deployed. Запровадження не потребує Soft Fork або зміни пропозиції біткоїнів. Це поступове вдосконалення зв’язку, користь якого залежить від правильної реалізації та фактично використаних з’єднань. [1]

Для повної картини прочитайте також Full Node, Eclipse Attack, Приватність у Bitcoin, Bitcoin Core. На цю статтю також посилаються Mix Network.

DOC · 001BIP 324 — Version 2 P2P Encrypted Transport ProtocolСпецифікація DOC · 002Bitcoin Optech — Version 2 P2P transportДокументація DOC · 003Bitcoin Core 26.0 releaseПервинне джерело DOC · 004Bitcoin Core 27.0 releaseПервинне джерело DOC · 005Bitcoin Core — getpeerinfo RPCДокументація DOC · 006Bitcoin Developer Reference — P2P networkДокументація DOC · 007Bitcoin Developer Guide — Block ChainДокументація DOC · 008Bitcoin Developer Reference — TransactionsДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада