Сеть Биткойн, блокчейн и квантовые компьютеры
В теории, квантовые компьютеры достаточной разрядности позволят быстро вычислять дискретные логарифмы, а это означает, что сломаются распространённые сейчас криптосистемы электронной подписи, в том числе, ECDSA. На ECDSA основана работа современной версии криптовалюты Биткойн. ECDSA здесь используется для удостоверения транзакций, то есть, необходима для того, чтобы потратить средства, находящиеся на том или ином адресе. Для удостоверения транзакции требуется знать секретный ключ из пары, связанной с биткойн-адресом.
Биткойн-адрес является значением хеш-функции RIPEMD-160 от открытого ключа ECDSA. То есть, сама по себе возможность “обращать” ECDSA (быстро вычислять по известному открытому ключу секретный) не позволяет “ломать” произвольные адреса: для того, чтобы получить открытый ключ, нужно будет вычислить прообраз значения RIPEMD-160, а это трудная задача даже для квантового компьютера. Безопасный способ потратить средства состоит в использовании каждого биткойн-адреса для расходования биткойнов только один раз: транзакция разбивается на две части – одна отправляется на адрес получателя платежа, а вторая – на новый адрес, созданный для хранения остатка средств.
Операция расходования средств требует указания открытого ключа в явном виде: с его помощью другие участники сети проверяют валидность операции. Это означает, что для всякой новой транзакции возникает следующая угроза: атакующий, вооружённый квантовым компьютером, может перехватить транзакцию, быстро вычислить секретный ключ, и сгенерировать свою, подменную транзакцию, в которой самостоятельно распорядится средствами. Перехватить новую транзакцию нужно до того, как она будет включена в блокчейн и, вообще говоря, окажется в нём на глубине хотя бы в один блок. Проделать это реально, так как в P2P-сети Биткойн транзакции передаются в открытом виде. После того, как атакующий получил секретный ключ и сформировал свою подменную транзакцию, возможны два варианта: если есть возможность, то атакующий может заблокировать отправку оригинальной транзакции и заменить её на свою, в таком случае, контроль над средствами сразу достаётся ему; если заблокировать отправку транзакции не получается, то подменная транзакция может быть отправлена в сеть как “конкурирующая”, а это даёт большие шансы на успех атаки, так как майнеры могут принять подменную транзакцию первой, что приведёт к последующей отмене оригинальной, легитимной транзакции.
Схема проведения атаки довольно сложна (даже за вычетом того, что подходящих квантовых компьютеров пока ещё не существует) и требует работы в онлайн-режиме. Тем не менее, сама возможность лишиться всех средств при попытке выполнить любую транзакцию, вряд ли порадует пользователей: фактически, такая атака полностью уничтожает смысл биткойнов, в текущей редакции протокола. Об этом известно довольно давно, но решения пока что нет: подошла бы та или иная квантовостойкая схема электронной подписи на замену ECDSA, однако её выбор и внедрение в протокол представляют собой весьма и весьма непростую задачу.
Адрес записки: https://dxdt.ru/2016/12/26/8234/
Похожие записки:
- Сбой DNSSEC в .RU
- Уровни сигнатур клиентских подключений
- Как правильно "показать TLS-сертификат", рекомендации
- Квантовая криптография и стойкость
- Интернет-протокол "дымовой завесы"
- Описание DoS-атаки с HTTP/2 от Cloudflare
- Представления о квантах и радиостанции
- Длина "постквантовых ключей" и немного про будущее DNS
- Влияние систем ИИ на процессы в мире
- TIKTAG и процессоры с кешированием
- Токены доступа и популярная автоматизация
Комментарии читателей блога: 2
1. 20th February 2017, 15:24 // Читатель Юрий написал:
“Операция расходования средств требует указания открытого ключа в явном виде”
Тогда зачем придумана эта обертка RIPEMD-160 ?
Что в одних случаях мы сообщаем другим участникам сети RIPEMD-160 а в других public key ECDSA?
Где тут логика?
2. 7th March 2017, 11:34 // Александр Венедюхин:
Обёртка нужна для того, чтобы не раскрывать публичное значение ключа раньше времени. Но в случае, когда средства переводятся между адресами, не раскрывать ключ нельзя: иначе другие участники не смогут проверить корректность подписи.