Генерация случайного числа k
на эллиптической кривой имеет решающее значение, и в подписи любой транзакции в биткойнах k
для вычисления точки требуется случайное число k*G
. Если это k
выбрано не случайно, происходит мгновенная утечка закрытого ключа.
Поэтому они придумали детерминированную генерацию ECDSA, которая описана в RFC6979 . По сути, они объединяют закрытый ключ с хешированным сообщением, используют функцию HMAC и генерируют псевдослучайный k
.
Этот способ кажется простым и легким.
Или вообще есть какие-то неэффективности или проблемы с этим методом, и почему мы все еще видим недетерминированную реализацию ECDSA?
Никаких серьезных проблем с эффективностью. Подписание выполняется довольно редко для любого конкретного клиента (обычно всего несколько подписей на транзакцию). Хотя возможно, что для создания k
значения подписывание может занять немного больше времени, это не будет заметно, особенно если учесть, как редко оно используется каким-либо конкретным клиентом. Именно проверка всех подписей является узким местом процессора для проверки блоков в биткойне, потому что все полные узлы должны проверять подписи всех транзакций в сети, а это занимает одинаковое время независимо от того, как k
был выбран параметр.
Грегори Максвелл прокомментировал использование детерминированных k
значений здесь :
Основными аргументами в большинстве областей против дерандомизации DSA являются соответствие FIPS (не имеет значения для нас) и разумные опасения по поводу рисков использования (менее) проверенной криптографической конструкции. При широко распространенном движении к дерандомизированному DSA эта последняя проблема не так важна.
Новая библиотека libsecp256k1 от Питера Вуилле на самом деле использует детерминированную генерацию файлов k
.
Также обратите внимание, что одним из ключевых преимуществ использования этой конструкции является то, что вам не нужно беспокоиться о слабости вашего генератора случайных чисел, используемого в процессе подписания. Например, подписание разных фрагментов данных одним и тем же k
значением мгновенно приведет к утечке вашего закрытого ключа . Аналогичная атака также может быть использована, если PRNG достаточно слаб, чтобы определить взаимосвязь между различными k
значениями, используемыми при подписи одного и того же фрагмента данных. Поскольку k
детерминировано генерируется из данных, которые вы подписываете (и закрытого ключа), эти опасения по поводу PRNG больше не так важны, поскольку вы всегда будете создавать одну и ту же подпись для одного и того же фрагмента данных. Это также упрощает написание модульных тестов ECDSA.
абейкверди
амаклин
Питер Уилле
морсекодер
Питер Уилле
абейкверди
Питер Уилле
абейкверди
Питер Уилле
абейкверди
морсекодер
абейкверди
морсекодер
абейкверди