117 / 736ECL

Eclipse Attack

Вузол підключений, але нападник приховує від нього решту мережі

Інтернет працює, з’єднання відкриті, а вузол усе одно не бачить справжніх подій у Bitcoin. Під час Eclipse Attack противник контролює його шляхи до інших вузлів і вирішує, які повідомлення надійдуть.

Eclipse Attack цілеспрямовано ізолює вузол від чесних пірів, залишаючи зв’язок із нападником. Full Node — програма, яка самостійно перевіряє правила Bitcoin. Вона продовжує цю перевірку, але може отримувати лише неповну або застарілу картину мережі. Атака не робить недійсні дані дійсними — вона використовує те, чого вузол не бачить.

Анна приймає платіж у біткоїні й стежить за власним вузлом — комп’ютером із програмою для участі в мережі Bitcoin. Він показує активні з’єднання, проте всі важливі шляхи назовні контролює противник. Повідомлення надходять, але лише дозволені ним. Це суть Eclipse Attack. Одного шкідливого з’єднання зазвичай недостатньо: робочий шлях до чесного вузла може принести приховані блоки й порушити контроль нападника. Блок об’єднує транзакції в пакет, який додають до спільної історії. [1] [6]

Ethan Heilman, Alison Kendler, Aviv Zohar і Sharon Goldberg описали 2015 року атаки на тогочасну мережу Bitcoin. Вони досліджували, як заповнити адресні таблиці вузла адресами нападника, щоб після повторного підключення він з’єднався лише з комп’ютерами нападника. Вони скористалися механізмом вибору з’єднань, не зламуючи математичних методів, які захищають, зокрема, цифрові підписи. Дослідження також запропонувало захист; його історичні результати не вимірюють успішність проти сьогоднішньої версії Bitcoin Core. [1] [7]

Здобувши ізоляцію, противник може обирати, які блоки й транзакції передавати Анні, а які затримувати. Він також може перешкоджати поширенню її власних транзакцій або спостерігати за їхнім походженням. Сам контроль з’єднань не потребує більшості потужності майнінгу. Однак не всі подальші атаки стають безкоштовними: для створення нових блоків, наприклад, потрібна справжня робота. [1] [6]

Full Node Анни й далі перевіряє підписи, умови витрачання та дозволену винагороду майнера. Підписати тут означає за допомогою приватного ключа, секретного числового значення, створити перевірний доказ дозволу на платіж. Інші можуть перевірити підпис, не знаючи цього секрету. Вузол Анни не прийме хибну транзакцію лише тому, що її надіслало єдине доступне джерело. Проте перевірка не виявить дійсного блоку, який узагалі не надійшов. Так само можна впевнитися у справжності доставленого листа, не знаючи, що хтось затримав усі новіші. Дійсність і повнота доступної інформації — різні питання. [5] [9]

Вузол може залишатися на останньому відомому блоці, поки інші продовжують роботу. Ізольований майнер може навіть видобувати блоки на покинутій гілці й втратити очікувану винагороду. Але довге очікування блоку саме по собі не доводить атаку: майнінг випадковий, а проблеми спричиняє й звичайний збій. Важлива сукупність ознак, а не лише повільне оновлення екрана. [1] [5] [8]

Нападник може показувати Анні дійсну приватну гілку з її платежем, водночас витрачаючи ті самі кошти інакше в решті мережі. Після відновлення зв’язку вузол може обрати дійсну гілку з більшою накопиченою роботою. Це Reorg — заміна частини прийнятої історії. Платіж із покинутої гілки може втратити підтвердження. Але нападник мусить забезпечити Proof of Work для своїх блоків. Це перевірний результат пошуку, що потребує значних обчислень; такі блоки теж мають його містити. Потрібну роботу можуть виконати й майнери, яких нападник ізолював. Вигадана кількість підтверджень не обдурить Full Node; успіх також залежить від тривалості ізоляції та ресурсів противника. [1] [5] [6]

Захист намагається не допустити, щоб усі з’єднання опинилися в одного противника. Bitcoin Core групує відомі адреси й підтримує мережеву різноманітність під час вибору вихідних з’єднань. IP-адреса вказує місце в мережі, до якого підключається програма. Утім, різні IP можуть належати одному оператору чи проходити через ту саму інфраструктуру. Ці заходи зменшують концентрацію й ускладнюють атаку, але не доводять незалежності кожного піра. [3] [4]

Bitcoin Core використовує короткі з’єднання feeler, щоб перевірити доступність іншої адреси. Додаткові з’єднання для передавання блоків виконують іншу роль: можуть принести нові заголовки — стислі технічні записи блоків — й інший погляд на продовження ланцюга. Тому неправильно казати, що кожен feeler одразу завантажує актуальну історію. Наведений код Bitcoin Core 29.0 показує ці різні механізми; жоден сам не гарантує припинення ізоляції. [4] [8]

Відомий пір, доданий вручну, може відкрити ще один шлях, якщо доступний і справді пов’язаний із рештою мережі. Однак кілька з’єднань через одного провайдера не обов’язково незалежні. Варто використовувати підтримуване ПЗ й розуміти налаштування, а не сліпо копіювати чужі списки адрес. Власна перевірка зберігається: довіра до доступності джерела не дає йому права надсилати недійсні блоки. [2] [4] [6]

Sybil Attack означає, що один противник діє під багатьма ідентичностями, і це може полегшити Eclipse Attack. Eclipse описує успішне відрізання конкретного вузла чи вибраної групи від чесних джерел. Ширше розділення мережі відокремлює цілі її частини й не обов’язково виникає саме так. Для користувача важливо, що Full Node забезпечує самостійну перевірку, але потребує також інформації поза контролем нападника. [1] [6]

Для повної картини прочитайте також Sybil Attack, Block Propagation, Compact Blocks, Nakamoto Consensus, Bitcoin, Full Node. На цю статтю також посилаються Подвійна витрата, Byzantine Generals Problem, Nakamoto Consensus, Sybil Attack.

DOC · 001Heilman et al. — Eclipse Attacks on BitcoinПервинне джерело DOC · 002Bitcoin Developer Guide — P2P NetworkДокументація DOC · 003Bitcoin Core v29.0 — addrmanДокументація DOC · 004Bitcoin Core v29.0 — Peer connectionsДокументація DOC · 005Bitcoin Developer Guide — Block ChainДокументація DOC · 006Bitcoin Optech — Eclipse attacksДокументація DOC · 007USENIX Security 2015 — Eclipse Attacks on Bitcoin’s Peer-to-Peer NetworkПервинне джерело DOC · 008Bitcoin Core v29.0 — Message processingДокументація DOC · 009Bitcoin Core v29.0 — Block validationДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада