Рейтинг:2

Как можно получить открытый показатель из закрытого ключа RSA?

флаг es

Я собираюсь записать известные мне формулы и использовать их для генерации ключей RSA.

  1. мы выбираем $р$, $q$
  2. $N = p\cdotq$
  3. $\varphi(n) = (p-1)\cdot(q-1)$
  4. выберите $e$ такие как
    • $1 < e < \varphi(N)$
    • $e$ взаимно прост с $N$, $\varphi(n)$
  5. выберите $д$ так что $d\cdot e\bmod\varphi(n)=1$

Вот и все. С ними, если у нас есть $р=2$ и $д=7$, я успешно получаю $д=11$ и $е=5$ что правильно.

Теперь представьте, что у меня есть только закрытый ключ, который $(11,14)$ (это $д=11$, $N=14$). Как я могу получить $е=5$. я так понимаю с $д$ и $N$, вы не можете напрямую получить $e$, но поскольку RSA работает, он пробует разные варианты $e$ , затем проверяет, и если он действителен, вы получаете открытый ключ из закрытого ключа.

Может ли кто-нибудь объяснить мне, какие шаги я должен предпринять, чтобы выяснить, что $e$ могло быть и то из тех, которые $e$ я должен выбрать?

fgrieu avatar
флаг ng
Примечание. Вы забыли $p\ne q$, что необходимо, если вы определяете $\varphi(n) = (p-1)\cdot(q-1)$ или хотите, чтобы шифрование/дешифрование всегда работало. Требование взаимной простоты $e$ с $N$ необычно. Требование, чтобы 1 доллар
Maarten Bodewes avatar
флаг in
Если у вас есть подпись, вы можете просто проверить свою догадку, проверив ее. Однако это не сработает для зашифрованного текста, по крайней мере, если вы используете схему рандомизированного заполнения. С учебником RSA это все еще может работать. Я не уверен, что вы можете вычислить $e$, если вам нечего проверять и *если $e$ выбрано случайным образом*. Возможно, можно что-то сделать, если он выбран детерминистически, учитывая [этот ответ] (https://crypto.stackexchange.com/q/25907/1172): угадать $e$, вычислить $p$ и $q$, проверить если он соответствует детерминированному алгоритму.
Nika Kurashvili avatar
флаг es
Какую формулу мне использовать, чтобы, по крайней мере, я мог начать угадывать «e», если у меня есть «d» и «N»? В моих приведенных выше формулах все еще не имеет смысла, как я пишу программу, которая угадывает `e`..
TonyK avatar
флаг us
На практике закрытый ключ состоит (как минимум) из $p,q,$ и $e$. $d$ и $N$ могут быть легко вычислены из них и часто хранятся вместе с $p,q,$ и $e$; но они не обязательны. Если все, что у вас есть, это $d$ и $N$, то вы не сможете вычислить $e$ без факторизации $N$.
Рейтинг:4
флаг ng

Спрашивается, как в RSA найти $е$ данный $д$ и $N$. Я проигнорирую требование вопроса о том, что $е$ взаимно прост с $N$, что весьма необычно и не имеет математического значения. я тоже предположу $p\neq$, так как это необходимо для изложенного $\varphi(N)=(p-1)\cdot(q-1)$ держать.

С определением вопроса RSA метод поиска $е$ идет

  • Фактор $N$ найти $р$ и $q$
  • Вычислить $\varphi=(p-1)\cdot(q-1)$
  • Вычислить $е$ зная $e\cdotd\bmod\varphi=1$ и $1<e<\varphi$. Что $е$ определяется однозначно, а модульная обратная $д$ в мультипликативная группа целых чисел по модулю $\varphi$. Для небольших чисел рабочий метод — метод проб и ошибок небольших нечетных чисел. $е>1$. Более конструктивным методом является (половина)-расширенный алгоритм Евклида, который вычисляет $e=d^{-1}\bmod \varphi$ напрямую. Для практического алгоритма, который использует только неотрицательные целые числа:
    1. $a\getsd\bmod\varphi$ , $b\получает\varphi$ , $х\получает0$ и $y\gets1$
      Примечание: $a\cdot x+b\cdot y=\varphi$ будет продолжать держать
    2. если $а=1$, затем вывод "желаемый обратный $е$ из $д$ по модулю $\varphi$ является $у$" и остановись
    3. Если $а=0$, затем вывод "желаемый обратный $е$ из $д$ по модулю $\varphi$ не существует" и остановись
    4. $r\gets\lfloor b/a\rfloor$
    5. $b\получает b-a\cdot r$ и $x\получает x+r\cdot y$
    6. если $б=1$, затем вывод "желаемый обратный $е$ из $д$ по модулю $\varphi$ является $\varphi-x$" и остановись
    7. Если $б=0$, затем вывод "желаемый обратный $е$ из $д$ по модулю $\varphi$ не существует" и остановись
    8. $r\gets\lfloor a/b\rfloor$
    9. $a\получает a-b\cdot r$ и $y\получает y+r\cdot x$
    10. Продолжить на 2

Этот же метод обычно используется для вычисления $д$ от $е$, поскольку $д$ и $е$ симметричны в $e\cdotd\bmod\varphi=1$. Однако это не так $д=11$ было вычислено в вопросе; по какой-то странной причине вопрос требует $е<\varphi(N)$ но нет $d<\varphi(N)$, или более привычный $d<N$ или же $d<\operatorname{lcm}(p-1,q-1)$.


Серьезная проблема с этим подходом к RSA на практике (таким образом, очень большая $N$, по крайней мере сотни десятичных цифр): Это не сработает, потому что $N$ будет настолько большим, что его нельзя будет разложить на множители, поэтому $\varphi$ нельзя вычислить таким образом.

Также условие вопроса $e\cdotd\bmod\varphi(N)=1$ является достаточным, но не необходимым условием для учебника RSA-шифрования с использованием $(е,N)$ быть отменено расшифровкой RSA с использованием $(д,Н)$, наоборот. Необходимое условие $e\cdotd\bmod\лямбда(N)=1$, куда $\lambda(N)=\operatorname{lcm}(p-1,q-1)$. Это условие часто используется на практике: это разрешено ПККС#1, и по поручению ФИПС 186-4. Искусственно маленький пример: $N=341$, $е=7$, $д=13$ отлично работает для учебника по шифрованию/дешифрованию RSA, но $e\cdotd\bmod\varphi(N)=1$ не выполняется (в этом примере $р=11$, $q=31$, $\varphi(N)=300$, $\лямбда(N)=30$ ).

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

  • вычислять $c\gets2^d\bmod N$
  • вычислять $c_2\получает c^2\bmod N$
  • установлен $e\gets1$
  • повторение
    • установлен $е\получает е+2$
    • установлен $c\gets c\cdot c_2\bmod N$; уведомление $c=2^{d\cdot e}\bmod N$
    • если $с=2$
      • за $м$ первая сотня нечетных простых чисел (примечание: для малых $N$, мы хотим остановиться, как только $м^2>N$ )
        • если $m^{e\cdot d}\bmod N\ne m$, продолжить в повторение выше
      • вывод $е$ и остановись.

Почти наверняка, если $е$ выводится, это действительно в том смысле, что шифрование учебника RSA с использованием $(е,N)$ отменяется расшифровкой RSA с использованием $(д,Н)$, и (эквивалентно) $e\cdotd\bmod\лямбда(N)=1$. это не совсем точно $e\cdotd\bmod\varphi(N)=1$, но зная $e\cdotd$ и $N$ можно учитывать $N$ (с использованием это алгоритм), а затем вычислить в $е$ с $e\cdotd\bmod\varphi(N)=1$ и $1<e<\varphi(N)$, если по какой-то причине это желательно.


Дополнение: вышеизложенное далеко не оптимально. Когда $\дельта=\ln(e)/\ln(N)$ находится ниже определенного порога, порядка $0.292$, есть способы факторизовать $N$ (и, таким образом, решить задачу первым обсуждаемым методом). По сути, мы обмениваемся $д$ и $е$ Дэн Боне и Гленн Дерфи Криптоанализ RSA с закрытым ключом $д$ Меньше, чем $N^{0,292}$, в материалы Eurocrypt 1999. Видеть там для большего.

Hagen von Eitzen avatar
флаг rw
Конечно, $p-1$ и $q-1$ не должны * иметь* какой-либо *большой* общий фактор, иначе ваш метод генерирования простых чисел будет отстойным и сделает атаки нежелательно возможными (фактически, гораздо более простые отношения между $p,q$ следует избегать)). Поэтому желательно, чтобы $\lambda(p-1,q-1)$ было чем-то вроде $\frac12\phi(N)$. - Более того, на практике часто выбирают хорошее (общедоступное) $e$, такое как маленькое, но не слишком маленькое простое число около степени $2$; это ускоряет вычисление шифрования и в то же время не представляет большой проблемы избежать простых чисел $\equiv 1\pmod e$ в самом процессе их генерации

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

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