Отправляя мне биткойны (скажем, оплачивая какую-то покупку), вы посылаете вместе с ними скрипт (программу — сценарий действий), который, по сути, играет роль «квитанции о депозите» (или транзакции). В качестве открытого ключа при этом используется учетная запись (или адрес биткойн-кошелька) получателя.
Открытый ключ виден всем, но лишь у владельца кошелька есть закрытый ключ, только с помощью которого можно открыть эту «депозитную квитанцию». Закрытый ключ служит цифровой подписью. Получатель должен завершить транзакцию — «получить денежки», для чего ему надо «подписать» квитанцию, использовав цифровую подпись (закрытый ключ).
Процесс для обеих сторон совершенно безопасен — конечно, до тех пор, пока этот закрытый ключ не окажется в чужих руках.
С квантовыми вычислениями все меняется в корне. В отличие от классических компьютеров, квантовые могут сгенерировать закрытый ключ для любого открытого ключа RSA или аналогичных алгоритмов, используемых сегодня для транзакций с биткойнами, за приемлемое, по человеческим меркам, время.
Квантовый компьютер просто получает доступ к публичному реестру (где содержатся все транзакции), берет все открытые ключи, с помощью квантовых вычислений генерирует цифровую подпись закрытого ключа и забирает все биткойны с аккаунтов.
Возникает естественный вопрос: а зачем сообщать адрес своего кошелька и открытый ключ всему миру? А это — изъян начального этапа проектирования. Позже биткойн-эксперты поняли, что это опасно, да и ненужно. В 2010 году практически все новые транзакции перевели в другой формат, который содержит адрес, но не показывает его, что намного безопаснее (хотя и не исключает успешность хакерских атак).
Новый стандарт назвали P2PKH. Но два миллиона биткойнов по-прежнему хранятся в старом уязвимом формате (P2PK). В январе 2021 года один биткойн стоил 60 тысяч долларов[112]
, и в пересчете это составляет весьма привлекательную сумму в 120 миллиардов. Именно на нее и нацелились юные хакеры из нашего рассказа. Так что если вы до сих пор пользуетесь старой учетной записью P2PK — немедленно отложите эту книгу и защитите свой электронный кошелек!Но тогда следующий вопрос: почему люди до сих пор используют старые скрипты P2PK и не переводят денежки в безопасные кошельки? Могу предложить три объяснения.
Во-первых, многие владельцы кошельков давно посеяли свой закрытый ключ — он слишком длинный и непригоден для запоминания. Поначалу народ относился к биткойнам довольно легкомысленно — десять лет назад они были далеко не такими ценными.
Во-вторых, многие владельцы биткойнов знать не знают об их (своей) уязвимости в этом плане.
В-третьих, около половины из двух миллионов биткойнов в этих потенциально незащищенных кошельках принадлежит Сатоси Накамото, таинственному изобретателю этой криптовалюты, который, похоже, бесследно исчез. Вот почему в нашей истории их называют «сокровищем Сатоси».
Еще один интересный вопрос — а зачем вообще размещать транзакции в публичном реестре? Предполагается, что это должно защитить биткойны от чрезмерного накопления в руках отдельной компании или физического лица. Публичный реестр хранится децентрализованно, на многих компьютерах, поэтому его невозможно изменить или подделать на одной машине — в других местах он останется в прежнем виде. Решение, безусловно, блестящее. Правда, оно будет оставаться таким только до момента, пока не станет возможным реконструировать закрытые ключи из открытых, содержащихся в реестре.
А еще этот подход сделал возможными блокчейны для множества полезных приложений, требующих сохранения информации в неизменном виде (например, сохранение документов, контрактов, завещаний и так далее).
Если кто-то украдет у вас биткойны, обращаться в полицию или подавать в суд бессмысленно — определить виновного и доказать его вину чрезвычайно сложно. Биткойны не контролируют ни правительства, ни компании, операции с ними не регулируются ни одним банковским законодательством. Поэтому любой, у кого есть правильный закрытый ключ, может безнаказанно забрать биткойны из кошелька, к которому он подойдет. И у хозяина нет никакой правовой защиты.
Так почему же Марк Руссо не стал грабить банки, а выследил хакеров?
Во-первых, у банков нет публичного реестра с открытыми ключами — даже гипотетически извлечь закрытые ключи просто не из чего.
Во-вторых, в банках установлены специальные компьютерные программы, отслеживающие аномалии в транзакциях, в том числе подозрительно большие переводы средств.
В-третьих, движение денег между банковскими счетами легко отслеживается, и в случае нарушения законов преступника можно привлечь к ответственности.
И, наконец, легальные банковские транзакции защищены другим, более сложным алгоритмом — для его декодирования требуется намного больше времени и сил, чем на взлом электронного кошелька.