Що таке Replay Attack?
Replay Attack це випадок, коли хтось перехоплює дійсну криптооперацію і надсилає її повторно, тож мережа сприймає її як нову. Підпис справжній, але час подачі підступний. Уявіть, що хтось знову використовує ваш підписаний чек на іншій касі, яка дотримується тих самих правил.
Replay Attack означає, що ваш приватний ключ вкрали. Не зовсім. Зловмисник може повторно використати вже підписане вами повідомлення, якщо дві системи приймають його однаково, навіть не знаючи вашого ключа.
Як працює Replay Attack
Короткий огляд, щоб запам'ятати.
- Крок 1: Ви транслюєте підписану транзакцію.
- Крок 2: Зловмисник копіює ті самі підписані дані.
- Крок 3: Він надсилає їх ще раз туди, де вони досі проходять верифікацію, наприклад після хард форку або в мережу, яка приймає ті самі правила підпису.
- Крок 4: Мережа бачить дійсний підпис і обробляє його знову, тож кошти переміщуються двічі.
- Крок 5: Зупиняють це лише перевірки проти повторів, наприклад ідентифікатори ланцюга, nonce або одноразові дозволи на рівні додатка.
Ось і весь трюк. Дратує, але цього легко уникнути.
Чому Replay Attack має значення
Чому вам слід звертати увагу на Replay Attack? Тому що він може дублювати реальну дію, яку ви планували виконати один раз, перетворивши її на дві.
- Перевага: Розуміння ризику заощаджує гроші і нерви, допомагаючи вам виконувати більш безпечні операції.
- Перспектива: Тепер звична робота з кількома ланцюгами, тож копії повідомлень, що потрапляють не за адресою, трапляються частіше, ніж люди думають.
- Актуальність: Ви зустрінете цей термін при переміщенні коштів по мережі блокчейн, під час розгалужень ланцюгів або при підписуванні повідомлень поза ланцюгом для додатків.
Користуйтеся гаманцем, який чітко показує активний ланцюг і правильно встановлює chain ID. У сумнівних випадках спочатку надішліть невеликий тест, а потім решту.
Ключові ознаки Replay Attack
Швидко розпізнавайте цю схему за цими ознаками:
- Копіювання: Повторно використовується точно те саме підписане повідомлення, байт за байтом.
- Дійсність: Підпис справжній, тому вузли приймають його, якщо не застосовані засоби проти повторів.
- Час: Найчастіше трапляється під час розгалужень ланцюгів, при роботі через містки або коли додатки пропускають перевірку nonce.
Варіанти
Той самий сценарій, різні випадки:
- Форк: Повторні виконання між двома ланцюгами після їх розгалуження, якщо вони досі визнають ті самі підписи.
- Міжланцюгові: Повтори між ланцюгами, що мають спільні параметри або приймають однакові формати повідомлень.
- Контрактні: Повтори підписаних дозволів або метатранзакцій в додатках, які забули про одноразовий nonce.
Після великих оновлень або розгалужень перевіряйте вашу історію транзакцій в обох ланцюгах. Якщо щось виглядає подвоєним, призупиніть відправлення додаткових операцій.
Приклад
Після форку DAO деякі зняття коштів, підписані в Ethereum, знову приймалися в Ethereum Classic, поки не впровадили посилену захист від повторів.
Цікавий факт
Ethereum ввів chain ID у 2016 році через EIP155 саме для того, щоб зупинити Replay Attack, і це рішення вплинуло на те, як сучасні гаманці просять вас обрати ланцюг наперед.
Підсумок
Replay Attack в одну фразу: справжній підпис, повторно використаний там або тоді, де цього не має бути. Ставтеся до цього як до подвійного списання і ви помітите його швидше.
