Что такое Replay Attack?
Replay Attack это когда кто-то перехватывает действительное криптографическое действие и отправляет его снова, поэтому сеть воспринимает его как новое. Подпись легитимна, а время отправки вводит в заблуждение. Представьте себе ситуацию, когда кто-то повторно использует ваш подписанный чек в другом кассовом пункте, который по прежнему придерживается тех же правил.
Replay Attack означает, что ваш приватный ключ был украден. Не совсем. Злоумышленник может снова использовать ваше уже подписанное сообщение, если два места принимают его одинаково, даже без знания вашего ключа.
Как работает Replay Attack
Короткое объяснение, чтобы запомнить.
- Шаг 1: Вы транслируете подписанную транзакцию.
- Шаг 2: Злоумышленник копирует те же самые подписанные данные.
- Шаг 3: Они отправляют их снова туда, где данные все еще проходят проверку, например после хард форк или в цепочке, которая принимает те же правила подписи.
- Шаг 4: Сеть видит действительную подпись и обрабатывает её снова, так что средства переводятся дважды.
- Шаг 5: Остановить это могут только проверки против повторов, такие как идентификаторы цепочек, nonce или одноразовые разрешения на уровне приложений.
Вот в чем соль. Неприятно, но легко предотвратить.
Почему Replay Attack важен
Зачем обращать внимание на Replay Attack? Потому что он может продублировать реальное действие, которое вы хотели выполнить один раз, превратив его в два.
- Преимущество: Понимание риска экономит деньги и нервы, помогая вам спланировать более безопасные действия.
- Перспектива: Многосеточная работа сейчас обычна, поэтому копии сообщений, попадающие не туда, встречаются чаще, чем многие думают.
- Актуальность: Вы встретите этот термин при переводе средств через сеть блокчейна, во время разделений цепочек или при подписании офчейн сообщений для приложений.
Используйте кошелёк, который явно показывает активную цепочку и правильно устанавливает идентификаторы цепочек. Если сомневаетесь, сначала отправьте небольшой тест, затем остальное.
Ключевые характеристики Replay Attack
Определяйте шаблон быстро по этим признакам:
- Копирование: Оно повторно использует точно то же подписанное сообщение, байт в байт.
- Действительность: Подпись настоящая, поэтому ноды её принимают, если нет защит от повторов.
- Время: Наиболее часто происходит при разделениях цепочек, мостах или когда приложения пропускают проверку nonce.
Варианты
Та же схема, другие случаи:
- Форк: Повторы между двумя цепочками, которые разделились и продолжают признавать те же подписи.
- Кроссчейн: Повторы между цепочками, которые имеют общие параметры или принимают одинаковые форматы сообщений.
- Контракт: Повторы подписанных разрешений или мета транзакций внутри приложений, которые забыли одноразовый nonce.
После крупных обновлений или разделений проверьте вашу историю транзакций на обеих цепочках. Если что-то выглядит удвоенным, приостановитесь перед отправкой дальнейших операций.
Пример
После форка DAO некоторые выводы, подписанные в Ethereum, были приняты снова в Ethereum Classic до тех пор, пока не ввели более строгую защиту от повторов.
Интересный факт
Ethereum ввёл идентификаторы цепочек в 2016 году через EIP155 специально чтобы остановить трюки Replay Attack, и это решение повлияло на то, как современные кошельки просят выбрать цепочку заранее.
Итог
Replay Attack в двух словах: настоящая подпись, повторно использованная там или тогда, где этого быть не должно. Рассматривайте это как двойной платёж, и вы заметите проблему быстрее.
