Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
rusteemitblog
7 лет назад

📝 История обновления криптографической безопасности Steem и BitShares (перевод статьи @dantheman)

Я заметил, что сообщество обсуждает “странности” в использовании нами канонических подписей. @faddat и другие готовы сжечь нас живьем за нашу некомпетентность. Я бы хотел прояснить ситуацию, потому как все обвинения берут начало в незнании истории кода, крипты и подписей.

Податливость подписи

Биткойн биржи несли огромные потери из-за податливости транзакций - свойства, которое дает возможность кому-либо преобразовать транзакцию в другую равноценную транзакцию без изменения подписи. Оказывается, кто угодно может взять вашу подписанную транзакцию и создать 4 различных полностью действительных подписи, не зная вашего приватного ключа. Если же эти подписи производят другой, новый ID транзакции, то становится невозможным отследить / проверить на включение вашей транзакции в цепь с единственным каноническим идентификатором.

В какой-то момент эта проблема податливости позволяла производить повторное воспроизведение транзакций вплоть до четырех раз, так как каждая транзакция обладала уникальным ID. Мы исправили это, введя запрашивание канонических подписей, А ТАКЖЕ начав идентифицировать транзакции по их дайджесту, который независим от подписей транзакций.

Вот соответствующая информация с Bitcoin Wiki:

Первой формой податливости являются сами подписи. Каждая подпись представлена ровно одним DER-кодированной ASN.1 октетом, но OpenSSL этого не требует, и до тех пор, пока подпись не будет непоправимо повреждена, она будет принята. В дополнение к каждой ECDSA подписи (r,s), подпись вида (r, -s (mod N)) является действительной подписью того же сообщения.
Начиная с блока 363724, софт-форк BIP66 сделал строгое следование DER-кодированному ASN.1 стандарту обязательным для всех новых транзакций в блокчейне. Дальнейший процесс по закрытию других таких возможных уязвимостей с помощью DER-подписей всё ещё прорабатывается, но не завершен.

Канонические подписи

Учитывая, что каждый раз, когда вы что-либо подписываете, кто угодно может создать 4 вариации подписи, мы просто требуем, чтобы все подписи были в одной из четырех форм, и отклоняем подписи, которые действительны, но в неверной форме. Это значит, что мы выдвигаем более строгое требование к подписи, чем это нужно математически для эллиптических кривых.

Варианты реализации

У нас есть два возможных варианта это реализовать: преобразование сгенерированной подписи в каноническую форму или генерация новой подписи и её проверка на каноничность формы. Одна из четырех подписей случайным образом получается канонической изначально, так что не нужно большое число попыток, чтобы ее отыскать.

С точки зрения проверки / подтверждения подписи - это одно и то же. Каждая “каноническая” подпись также подходит и под менее строгие требования.

Заключение

Всё это позволяет нам увидеть, что людям нужно специально останавливаться, чтобы бросить камень, и что @faddat занимается подменой понятий. Это показывает, что то, над чем он работает, обладает низким уровнем точности, а значит, оно будет уязвимо со стороны податливости подписи, как когда-то были Bitcoin и BitShares.

Я приведу вам познавательную инфографику, которая наглядно отображает, каким образом Bitcoin и/или BitShares были однажды атакованы из-за недостающего определения канонической подписи.


Оригинальный пост и его обсуждение ЗДЕСЬ


Данный пост опубликован в рамках бета тестирования проекта RuSteemitBlog


Перевод осуществлен: @mayamarinero

Критика, комментарии и предложения приветствуются.


1
1538.771 GOLOS
Комментарии (0)
Сортировать по:
Сначала старые