Гнучкість системи (malleability)

Опис властивості «гнучкості транзакцій»

Порівняно недавно з'явився термін, який багато користувачів криптовалюта біткоіни не чули раніше - «гнучкість транзакцій». Mt Gox назвала його одним із основних причин тимчасового припинення зняття коштів. Також гнучкість транзакцій згадувалася як помилки, яка на цьому тижні використовувалася для масованої атаки на мережу Bitcoin. Отже, що ж це таке, як це працює, і чи слід нам турбуватися? Ось те, що ми знаємо.

Що таке «гнучкість транзакцій»?

Це вид атаки, який дозволяє зловмисникові змінити унікальний ідентифікатор транзакції біткоіни до її підтвердження в мережі Bitcoin. При такій зміні і при дотриманні належних умов користувач може зробити вигляд, що транзакція не була здійснена.

Це те ж саме, що і «подвійний витрата» (double spending)?

Ні. При подвійному витраті біткоіни витрачаються один раз, а потім створюється інша транзакція, перш ніж перша буде підтверджена. Хитрість полягає в тому, щоб потім отримати підтвердження шахрайської транзакції в мережі Bitcoin до того, як буде виконана перша транзакція. Це фактично означає, що ви понесете подвійний витрата.

Як працює властивість «гнучкості транзакцій»?

Щоб зрозуміти це, ви повинні знати, як виконується транзакція біткоіни.

При відправці біткоіни кому-небудь, ви не знімаєте їх з рахунку і не відправляєте їх «зі свистом» по мережі. Біткоіни так ніколи не відправляються. Замість цього, транзакція створюється в ланцюжку блоків Bitcoin.

«Гнучкість транзакцій допоможе довести стійкість децентралізованої мережі до дискретних мережевим подіям»

Кожна транзакція повинна бути однозначно ідентифікована, так щоб на неї можна було послатися в ланцюжку блоків. Ідентифікатор транзакції (TX ID) формується за інформацією в транзакції, яка проходить через хеш-функцію.

Хешування - це математична процедура, в якій беруться різні фрагменти даних і об'єднуються в більш короткий блок інформації, відомий як хеш. Один з елементів, які включаються в хеш транзакції - це цифровий підпис користувача, яка підтверджує, що він є відправником транзакції. Це спосіб електронного підписання транзакції.

Одне з ключових якостей функції хешування - це те, що просто по хешу неможливо сказати, якою була початкова інформація. Також неможливо передбачити, яким хеш буде на основі наявних фрагментів інформації. Якщо змінюється будь-якої маленький елемент в кожній із частин даних, хеш зміниться абсолютно непередбачуваним чином.

За рахунок цього ідентифікатори транзакції практично неможливо підробити. У кожної транзакції повинен бути тільки один можливий хеш. Щоб перевірити, що транзакція дійсна, потрібно просто прогнати всі складові її частини інформації через хеш-функцію і переконатися, що ви отримаєте той же хеш.

По крайней мере, ідея така. Але ось той момент, коли втручається властивість гнучкості. Мається на увазі, що цифрові підписи користувача, використовувані в хеше для «підписання» транзакцій, мають певний формат. Цей формат не завжди належним чином перевіряється. Це означає, що може бути введена «погано» відформатована підпис, і вона буде прийнята. Така зміна підпису дає можливість створювати різні хеші для однієї транзакції.

Як це може викликати проблеми?

Одна з проблем тут криється в біржах. які користувачі часто використовують для купівлі та продажу біткоіни. Вони посилають свою валюту, не забезпечену золотом, або біткоіни, на біржу, де вони знаходяться на рахунку для конвертації. В якийсь момент, користувач, можливо, забажає зняти біткоіни з рахунку.

Окремі атаки зловмисників

Але Боб вдає, що Аліса ніколи не відправляла їх. Він використовує слабке місце «гнучкості транзакцій», відтворюючи оригінальну транзакцію Аліси, вносячи невеликі зміни в підпис для формування іншого хеша. Потім вона повторно пересилає дану транзакцію з іншим ID.

Існує ймовірність того, що транзакція Боба буде підтверджена в ланцюжку блоків в першу чергу. Якщо це станеться, то мережа може припустити, що ця транзакція дійсна, і не зареєструє транзакцію Аліси. Потім Бов може поскаржитися Алісі, що не отримала від неї біткоіни. Коли Аліса перевірить ID своєї транзакції в ланцюжку блоків, вона не знайде його, і може спробувати відправити біткоіни ще раз, тобто вже зі своєї кишені.

Благочинні випадки

Якщо ви використовуєте спеціальне програмне забезпечення для роботи зі своїми біткоіни, воно може помилково генерувати невірні хеші. Ці хеші можуть бути «виправлені» в іншому гаманці, який отформатирует їх належним чином. Але він може і змінити ідентифікатор транзакції (TX ID). Якщо ваш гаманець не відрізняє транзакції з однаковими характеристиками, але з різними ID, то це може, в кінцевому підсумку, привести до наявності «застрягли» транзакцій, які знаходяться в підвішеному стані. Що ще гірше, програма може сприйняти, що в гаманці досі є біткоіни, які можна витратити.

Так чи інакше, якщо ваше програмне забезпечення не може впоратися з такою проблемою - це бухгалтерський кошмар. Розробник ядра Bitcoin Грегорі Максвелл (Gregory Maxwell) замислюється тут про таку можливість.

Атаки масової відмови в обслуговуванні

Також зловмисник може спровокувати більш великі проблеми для мережі Bitcoin, навмисно запустивши атаку з використанням гнучкості транзакцій на кількох біржах одночасно, можливо, з використанням програмного забезпечення, спрямованого на створення змінених транзакцій. Така синхронна атака на декількох біржах, ймовірно, і відбулася на цьому тижні.

Серверні системи обліку цих бірж можуть впоратися з помірним числом змінених транзакцій, але, якщо вони багаторазово бомбардуються такими транзакціями, то це на деякий час може привести до логістичних проблем.

Також це може привести до короткострокових проблем для ринку. Будь-яка невизначеність або сумніви в стабільності ринку, природно, вплинуть на ринкові ціни, тим більше щодо такого неліквідного, нестійкого класу активів.

Чи означає це, що в системі Bitcoin присутній збій?

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

Основні розробники також розповіли CoinDesk про двох «крайніх випадках» для посилального клієнта (ті дефекти, які могли б бути викликані дуже рідко). Вони відносяться до частини програмного забезпечення, пов'язаного з гаманцем.

Виявляється, що є досить багато інших питань, пов'язаних з гнучкістю, в тому числі деякі з них перераховані тільки в цьому місяці одним з основних розробників Bitcoin в Пропозиції щодо поліпшення системи Bitcoin (BIP) - документі, в якому слід дотримуватися деяких зміни в мережі Bitcoin .

Основні розробники в даний час замовчують про найбільш проблемні питання, тому що вони не хочуть давати більше інформації потенційним зловмисникам.

Як вирішується це питання?

Однак не всі біржі використовують контрольний клієнт для обробки своїх транзакцій з біткоіни. Вони можуть використовувати спеціалізовані версії, обробні транзакції трохи по-іншому. Так, розробники Bitcoin і розробники гаманців і бірж «возяться» зі своїми кодами, щоб всі операції здійснювалися без проблем. Для бірж важливо витончено обробляти змінені транзакції і виконувати відповідні дії при їх виявленні.

Інші виправлення більше стосуються процесу. Більшою проблемою гнучкість робить те, що система спирається на непідтверджені транзакції, за якими товари і послуги передаються або надаються до підтвердження транзакції в ланцюжку блоків. Тому правильно завжди вимагати підтвердження транзакції.

Точно так же, на серверній стороні корисною буде функція деякої ручної перевірки зняття біткоіни з біржі.

Тобто біткоіни загрожує кінець світу? Невже ми зіткнулися з криптографічним апокаліпсисом?

Помилки дійсно дратують, але не критично. Помилки є в більшості програмних продуктів, але не всі вони однакові. Деякі з них критичні, а деякі ні. Ці помилки не критичні, і система Bitcoin не зруйнує. Основа Bitcoin полягає в децентралізації спільної роботи багатьох комп'ютерів, які приймають рішення про транзакції, і вона як і раніше працює.

Біржа може також використовувати інструменти для автоматичного відстеження вхідних даних по транзакціях, які могли б допомогти виявити їх зміна.

У всякому разі, гнучкість транзакцій допоможе довести стійкість децентралізованої мережі до дискретних мережевим подіям. Зрештою, децентралізація - це одна з речей, яка робить мережу «грошовим медоеда» ( "honey badger of money").

Схожі статті