Чем грозит биткоину отказ разработчиков SegWit2x включить защиту от атаки повторного воспроизведения
Биткоин-разработчик и предприниматель Джимми Сонг в своей новой записи в блоге Bitcoin Tech News подробно объяснил, какие последствия могут ждать биткоин в случае отказа разработчиков SegWit2x включить защиту от атаки повторного воспроизведения (Replay Attack) при осуществлении хардфорка, который они намерены провести в ноябре этого года.
Напомним, ранее команда разработчики Segwit2x подтвердила, что планирует провести хардфорк на блоке 494,784. При этом подчеркивается, что этот код, хотя и включает в себя поддержку находящегося в шаге от активации протокола Segregated Witness, будет несовместим с текущими версиями Bitcoin Core и UASF. Однако еще большую озабоченность сообщества вызывает отказ команды Segwit2x включить защиту от атаки повторного воспроизведения – т.е. от атаки на систему аутентификации путем записи и последующего воспроизведения ранее посланных корректных сообщений или их частей.
Что стоит за этой угрозой и каковы могут оказаться ее последствия, бывший вице-президент по инженерии Armory подробно излагает в своем блоге.
I just published “Replay Attacks Explained” https://t.co/P9TwyUmar8
— Jimmy Song (@jimmysong) 21 August 2017
Биткоин-транзакции
Для понимания того, что же собой представляет атака повторного воспроизведения, необходимо понимать, как работают биткоин-транзакции.
Биткоин можно представить в качестве глобального реестра, а биткоин-транзакции – в качестве банковских чеков. И поскольку этот глобальный реестр находится в цифровом виде, любой желающий может провести его аудит, скачав полную копию блокчейна.
Это также означает, что все банковские чеки находятся в публичном пространстве. То есть, любой человек может увидеть отдельную транзакцию и убедиться в подлинности цифровой подписи.
Хардфорк
Хардфорк – суть апгрейд глобального реестра. Если апгрейд производят все участники сети, остается только один глобальный реестр. Если апгрейд производят не все, вместо одного глобального реестра образуется два: оригинальный (legacy) реестр и реестр, образовавшийся в результате форка.
До момента форка оба реестра идентичны. То есть, их объединяет общая история транзакций. Но после форка, по мере нахождения новых блоков, эти реестры имеют разные транзакции и, соответственно, балансы счетов. Это именно то, что, например, произошло с хардфорком Bitcoin Cash 1 августа 2017 года.
Атака повторного воспроизведения
Если до разделения сети у вас есть определенное количество монет, после разделения у вас будет то же самое количество в обоих реестрах. Но что же происходит, если вы хотите потратить деньги только в одном реестре?
Тут возникает проблема, потому что, если вы тратите средства в одном реестре, другой пользователь может скопировать тот же самый чек с вашей подписью и представить его для включения в другой реестр. Именно так, другой человек может потратить ваши деньги в другом реестре, потому что ваша подпись действительна в обоих реестрах. Безусловно, получатель и отправляемая сумма при этом должны быть идентичны (в противном случае ваша подпись будет недействительной), но это все же представляет проблему.
Человек, который предъявляет копию чека в другом реестре, воспроизводит транзакцию. И если вы хотите отправить средства только в одном реестре, возникает проблема, которую мы и называем атакой повторного воспроизведения.
Bitcoin Cash эту проблему решил, слегка видоизменив чек. Они сделали на чеке специальную отметку, которая показывает, что этот чек предназначен для реестра BCH, но не для другого реестра.
Таким образом, любая нода [сетевой узел – прим.], которая проводит аудит биткоина, автоматически отвергает чек Bitcoin Cash, поскольку тот имеет специальную отметку. И точно так же любой, кто проводит аудит Bitcoin Cash, будет отвергать биткоин-чек, поскольку у того этой специальной отметки нет.
Эта специальная отметка называется защитой от повторного воспроизведения, так как предотвращает такую атаку.
Segwit2x и защита от атаки повторного воспроизведения
Разработчики Segwit2x отказываются добавить защиту от атаки повторного воспроизведения. Вместо этого они говорят, что, если для команды Bitcoin Core это такая проблема, то пусть она ее и добавляет.
К сожалению, большинство схем, предусматривающих защиту от атаки повторного воспроизведения, это хардфорки. И поскольку хардфорки обратно несовместимы, и апгрейд проведут не все, это приведет к образованию двух отдельных реестров. Многие разработчики Bitcoin Core придерживаются мнения, что хардфорк, который не запланирован как минимум за год, приведет именно к такому сценарию.
Таким образом, если Bitcoin Core за тот короткий промежуток времени, в течение которого Segwit2x хочет провести хардфорк (3 месяца), добавит защиту от атаки повторного воспроизведения, это с большой долей вероятности приведет к появлению трех отдельных реестров: Segwit2x, биткоина с защитой от атаки и оригинально (legacy) биткоина. И это не считая Bitcoin Cash.
Отказ Bitcoin Core [от добавления такой защиты – прим.] согласуется с отказом принять хардфорк Segwit2x. Если бы разработчики Bitcoin Core не имели возражений относительно хардфорка в течение 3 месяцев, то хардфорк вроде того, что предлагает Segwit2x имел бы смысл. Однако, поскольку большинство разработчиков Bitcoin Core считают, что 3 месяца для подготовки к хардфорку – это слишком мало, включение защиты от атаки повторного воспроизведения в код Bitcoin Core исключено.
Альтернативы
Если вы являетесь пользователем биткоина и хотите защититься от атак повторного воспроизведения после хардфорка Segwit2x, вам необходимо разъединить свои аккаунты в двух реестрах: Bitcoin Core и Segwit2x.
Один из очевидных способов – микширование монет. Этот процесс включает в себя нахождение в одном из реестров транзакции, которая не может быть воспроизведена в другом реестре. Возможно, вы думаете, что таких транзакций не существует, но есть как минимум одна категория транзакций, воспроизведение которых невозможно.
Так называемые Coinbase-транзакции (награда, которую получают майнеры), которые создаются после форка, будут однозначно другими в обоих реестрах. Таким образом, Coinbase-транзакции невозможно воспроизвести в другом реестре. Если вы создаете транзакцию, которая микшируется с транзакцией, которую невозможно воспроизвести, в результате образуется еще одна невоспроизводимая транзакция. Следовательно, любые транзакции, которые микшируются с Coinbase-транзакциями, будут сами по себе невоспроизводимы.
Таким образом, биржи и мерчанты могут обратиться к сервисам микширования, чтобы облегчить транзакции в обеих цепях.
Заключение
Для тех пользователей, которые не осуществляют транзакции слишком часто, повторное воспроизведение, скорее всего, проблемой не станет. После хардфорка Segwit2x таким пользователям, вероятно, стоит на время воздержаться от проведения транзакций, до тех пор, пока не будет выработано ясное и доступное решение по защите от атаки повторного воспроизведения.
И хотя это все может казаться страшным, учитывая опыт, полученный в результате хардфорка Bitcoin Cash, все может оказаться не столь страшным, заключает Джимми Сонг.
Подписывайтесь на новости ForkLog в Twitter!
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!