Что такое повторная атака?

Во время запуска пограничной сети пользователей предостерегали от повторного использования ключей из олимпийской тестовой сети, чтобы предотвратить «атаки воспроизведения». Что такое повторная атака и почему повторное использование ключа из тестовой сети делает кого-то уязвимым для нее?

Ответы (3)

Повторная атака — это действительная передача данных, которая злонамеренно или мошеннически повторяется или задерживается.

Распространяя это на блокчейны, повторная атака принимает транзакцию в одном блокчейне и злонамеренно или мошеннически повторяет ее в другом блокчейне.

Например, злоумышленник берет чью-то транзакцию в тестовой сети и повторяет ее в «настоящей» цепочке блоков, чтобы украсть «настоящие» средства.

Как прокомментировал @libertylocked, была реализована защита от атак EIP 155 Simple Replay .

Больше информации

В биткойне адреса в тестовой сети используют префикс, отличный от адреса в основной сети: поэтому ключи разные.

В Ethereum в настоящее время нет «префиксов». (Вероятно, это сделано для того, чтобы упростить создание новых адресов.) Таким образом, транзакция, подписанная ключом, который действителен в одной сети/цепочке Ethereum, действителен для всех цепочек Ethereum.

Это означает, что если при «тестировании» средства отправляются со счета B на accountTest, эта же транзакция может быть воспроизведена (транслирована) в общедоступный блокчейн Ethereum: атака воспроизведения. Повторная атака «успешна», если на счете B есть средства в общедоступной цепочке блоков. Чтобы полностью преуспеть, злоумышленнику необходимо знать закрытый ключ accountTest для кражи средств, но, учитывая, что accountTest был создан для тестирования, его закрытый ключ может быть небезопасным (возможно, это просто «мозговой кошелек» с паролем «test» ).

Атаки повторного воспроизведения устраняются за счет использования разных адресов/ключей между пограничной сетью и всеми другими цепями Ethereum. (Это немного похоже на использование другого пароля для ценных материалов с менее ценных или менее надежных веб-сайтов.) Также см.: Как предотвратить повторную атаку между двумя конкурирующими цепочками? и, как отмечено в комментарии @libertylocked, была реализована защита от атак EIP 155 Simple Replay .

И для подтверждения. При создании «новых» учетных записей в каждой цепочке, хотя эти создания также могут быть воспроизведены, это было бы бессмысленно, поскольку вы по-прежнему контролируете закрытый ключ к указанной учетной записи (аккаунтам). Это правильное понимание?
Насколько я понимаю, двойная трансляция в непреднамеренной цепочке повторно использует уже подписанные данные транзакции, поэтому для атаки не нужен закрытый ключ. Это своего рода атака «человек посередине», компрометирующая поток данных якобы защищенного канала.
@ThomasClowes Правильно, это было бы бессмысленно, потому что вы все еще контролируете закрытый ключ к указанным учетным записям.
@Sz Вы правы насчет «общего» случая. Если вы отвечаете на комментарий Томаса, то вы воспроизводите транзакцию, которая отправляет средства на закрытый ключ Томаса, не является «атакой», поскольку средства по-прежнему контролируются Томасом. Конечно, было бы иначе, если бы Томас отправил вам средства в одной цепочке, а затем в этом случае вы, безусловно, могли бы воспроизвести это, чтобы получить средства Томаса в другой цепочке, и это было бы атакой.
EIP155 введен CHAIN_IDкак часть байта восстановления при проверке подписи транзакции. Поэтому транзакции, отправленные в одной сети, не будут иметь правильной подписи в идентификаторе другой цепочки.

Это означает, что транзакция, которая была действительна в тестовой сети Olympic, по-прежнему действительна для следующего выпуска (Frontier).

Если вы совершили транзакцию T в Olympic, которая отправляет эфир с адреса A на B, а затем повторно использовали ключ за адресом A в выпуске Frontier, эта транзакция T могла бы быть передана снова (воспроизведена), и передача от A к B произошла бы в Граница, даже если вы (владелец А) не собирались этого делать.

Вот почему людей просили не использовать ключи повторно.

Чтобы избежать повторной атаки, используйте типы транзакций EIP155 , которые доступны с блока 2675000. Они включаются chainIDв подпись транзакции. Убедитесь, что программное обеспечение вашего кошелька поддерживает протокол EIP155, и вы будете в безопасности.