Рейтинг:1

Существуют ли открытые ключи, для которых можно легко получить закрытый ключ (ECDSA)?

флаг in

Я знаю, что обычно невозможно найти закрытый для любого открытого ключа. Но я также столкнулся с вопросом "Найдите ECDSA PrivKey в PubKey = 0", в котором пояснялось, что закрытый ключ для открытого ключа 0x0000...0000 можно легко вывести.

Из ответа на этот вопрос следует, что открытый ключ 0x0000...0000 это единственный открытый ключ, для которого это так, но я не понял его достаточно хорошо, чтобы знать наверняка.

Итак, вопрос в том, существуют ли какие-либо другие возможные открытые ключи (например, 0xffff...ffff или же 0x0000...0001), для которого легко получить соответствующий закрытый ключ?

Рейтинг:1
флаг in

Преамбула

Одна сторона безопасности ЭЦДСА зависит от безопасности дискретного логарифма используемой эллиптической кривой (назовем ее $Е$). Эллиптические кривые образуют аддитивную алгебраическую группу порядка $n$. Если группа, образованная используемой кривой, является общей группой, то наилучшая классическая атака — это $\mathcal{O}(\sqrt{2^n})$ - Ро Полларда.

ЭЦДСА

Закрытый ключ $к$ вычисляется как случайное целое число в интервале $[1,n-1]$ и все время держали в секрете. Обратите внимание, что закрытый ключ $к$ целое число, а не точка на кривой $Е$.

Открытый ключ $P$, с другой стороны, рассчитывается как точка $p = [k]G$ куда $G$ является базовой точкой кривой, определенной в стандартах и ​​операции $[k]G$ называется скалярным умножением, определяемым как;

$$[k]G : = \underbrace{G + G + \cdots + G}_{k-times}$$

Это не следует путать с умножением, нет, это то, что мы пишем, чтобы упростить $к$-кратные дополнения.

$[к]П$ можно вычислить по крайней мере с помощью алгоритма двойного сложения, чтобы ускорить вычисление в $\mathcal{O}(\log k)$-время.

Точки

Теперь, как мы видим, даже $к=0$ не является проблемой в ECDSA, так как это недопустимое значение для $к$.

Если дискретный журнал легко

  • Если дискретный журнал легок на этой кривой, это находит $к$ данный $[k]G$, то каждое значение легко выводится.

  • Если кривая закрыта другой базовой точкой $Ч$, то есть кто-то может решить дискретный логарифм по основанию $Ч$ в группе кривых. Затем они могут использовать это, чтобы решить Длог на базе. $G$ очень легко;

    • Они рассчитывают $G = [t]H$ за $t \in [1,n-1]$ только однажды
    • Они решают $P =[k\cdot a]G$ на базу $Ч$ за $а \in [0,n-1]$. Один раз $ка$ находится $к$ можно рассчитать как $k = a \cdot k \cdot a^{-1}$ так как мы знаем $а$ и $a^{-1} \cdot a = 1 \bmod n$.

Если дискретный журнал не прост

В этом случае некоторые из них можно вычислить до их максимальной мощности. Предположим, вы можете использовать суперкомпьютер Summit и у вас есть возможность вычислять $2^{70}$ удвоить и добавить для заданного числа $t$. Они рассчитывают и настраивают хеш-таблицу для быстрого запроса существования дискретного журнала в диапазоне $[1,2^{70}]$. Пробег в течение одного года, и необходимое хранилище составляет $2^{70}*256*3$-бит (~ 147574 петабайт). Что ж, хранение — это одна из проблем, а другая — хэш-таблица. $\mathcal{О}(1)$ больше. Предположим, что вы решили эту задачу, тогда какова вероятность того, что вы сможете найти данный закрытый ключ из открытого ключа. Точное значение зависит от группы кривых, предположим, что используется группа кривых размера $2^{256}$ для защиты от стандартных атак Dlog. Вероятность попадания равна $$\frac{2^{70}}{2^{256}} = \frac{1}{2^{186}}.$$ Это даже имеет гораздо меньшую вероятность, чем $\dfrac{1}{100}$, поэтому мы говорим, что это не произойдет!

Вместо последовательного случайного выбора $t$с изменить результат, НЕТ!


Специальное примечание 1:0x0000...0000 это обычная кодировка $\mathcal{О}(п)$ поскольку $(0,0)$ находится не на кривой. Это не принимается в качестве действительного открытого ключа в СЕК 1 Вер. 2.0 раздел 3.2.2.1.


Специальное примечание 2: некоторые эллиптические кривые являются простыми кривыми, это означает, что группа, которую они образуют, имеет простой порядок. В этом случае каждый элемент является генератором, кроме элемента идентичности. Если порядок не простой, как в кривой 25519, то у нас есть кофактор $h = \#E(K)/n$ куда $n$ — наибольшее простое число, делящее порядок кривой. Если используется полная группа, легко заметить мелкие элементы порядка, просто отметьте $[o]P = \mathcal{O}$ или нет, где $о$ это небольшой заказ. Для Curve25519 $о$ значения $2,4,$ и $8$. Это не проблема безопасности, поскольку законные пользователи всегда выбирают $k \экв 0 \pmod 8$.

kelalaka avatar
флаг in
Ну, я написал длинный ответ, чтобы сказать, что почти нет! Стреляй в меня!
флаг in
Спасибо за подробный ответ, очень познавательно!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.