SECP256K1 Минимальное значение для закрытого ключа

Я изучал криптографию на основе эллиптических кривых, в частности спецификацию SECP256K1, которая используется в Биткойне и Эфириуме. Итак, я понимаю, что точка генератора G фиксирована на основе спецификации и что 256-битный закрытый ключ (privKey) (в идеале) действительно выбирается случайным образом от 1 до 1,157920892373162e+77. Открытый ключ (pubKey) является производным от закрытого ключа, таким образом, открытый ключ является privKey*G, где он включает операции сложения и удвоения точек.

Теперь я, кажется, еще не понял, что существует фиксированная точка входа G, с которой любой злоумышленник должен будет начать, чтобы попытаться расшифровать закрытый ключ из открытого ключа (при условии, что не используется частичная радужная таблица значений). ).

Так не будет ли это означать, что самое большое значение закрытого ключа, которое находится дальше всего от вычисления (т.е. 1,157920892373162e+77), является наиболее безопасным?

Следовательно, не будут ли закрытые ключи ниже определенного порога считаться скомпрометированными, например, закрытые ключи в диапазоне 0-1000?

Я чувствую, что мне здесь чего-то не хватает, любая помощь приветствуется!

Ответы (1)

Если бы люди в целом чаще выбирали меньшие целые числа в качестве закрытых ключей, чем большие целые числа, то для злоумышленника было бы хорошей стратегией начать с меньших целых чисел.

Однако верно и обратное. Если бы люди чаще выбирали большие числа, то злоумышленники в идеале начинали бы с конца и продвигались бы в обратном направлении.

На практике такой предвзятости не существует. Пока люди используют приличную правильную генерацию случайных чисел, каждое целое число так же вероятно, как и любое другое, и не имеет значения, в каком порядке злоумышленник пытается что-то сделать. В любом случае ему нужно будет пройти половину диапазона закрытых ключей в среднем.

Так что нет, минимального числа для начала нет. Да, у вас крайне малый шанс выбрать число от 1 до 1000. Но точно так же у вас есть равные шансы выбрать число от 76136428194729137 до 76136428194730136. У злоумышленника нет причин думать, что вы с большей вероятностью выберете что-то между 1 и 1000, так зачем злоумышленнику начинать с?

Кроме того, всякий раз, когда у злоумышленника есть открытый ключ, существуют гораздо более быстрые (но все же совершенно неосуществимые) алгоритмы для поиска закрытого ключа. Эти алгоритмы по своей сути работают в случайном порядке, так что это не имеет значения.

спасибо за хорошо объясненный ответ, я по глупости думал, что точка генератора должна быть отправной точкой. Другими словами, я не знал, как можно сократить диапазон значений, используя метод double и add, и, следовательно, противник мог легко начать практически из любого места в этом диапазоне. Это имело смысл, поскольку возможность использовать только операцию добавления точек привела бы к тому, что генерация ключа заняла бы огромное количество времени. Глупый я, все еще учусь, я полагаю!
Просто быстрый вопрос, с операцией удвоения точки я могу пропустить диапазон кратных следующим образом: 1 * G -> 2 * G -> 4 * G -> 8 * G -> 16 * G .... и так далее на. Я правильно говорю это?
Ага, абсолютно. На практике умножение точки на число выполняется с помощью варианта алгоритма удвоения и сложения, который вычисляет последующие степени числа 2 и складывает вместе те, которые имеют 1 в битовом представлении скаляра.