Можно ли вычислить открытый экспонент RSA, если у нас есть закрытый ключ?

Вопросы и ответы

У меня есть RSA d (закрытый экспонент) равный 0x10001 и n (модуль). Как я понимаю, n общий для закрытого и открытого ключей. Теперь мне нужно вычислить e (открытый экспонент), возможно ли это?

Я также пробовал Yafu, но результата не получилось..

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

Во-первых, я готов поспорить, что ваш 0x10001 на самом деле является открытым экспонентом e, а не закрытым экспонентом d, судя по опыту. И если вы “расшифровываете” с его помощью, это просто звучит так, будто вы используете открытый ключ для проверки подписи.

Но это не имеет значения, с математической точки зрения это одно и то же. d и e являются взаимными экспоненциальными инверсами по модулю n, так что если вы сможете получить e из d, то тот же процесс можно было бы применить, чтобы получить d из e, что нарушило бы RSA.

Единственный известный и вычислительно осуществимый способ вычисления экспоненциальной инверсии числа по модулю n = p*q – это найти его умножительную инверсию по модулю λ(n) = lcm(p-1, q-1)… что требует знания p и q.

Да, это возможно вычислить открытый экспонент RSA e, когда у вас есть закрытый ключ. Закрытый ключ состоит из значений d, n и другой дополнительной информации, такой как p и q (простые множители n).

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

e×d≡1 (mod ϕ(n))

Где:

=> d – закрытый экспонент.

=> φ(n) – функция Эйлера для n (которая равна (p – 1) * (q – 1) для n = p * q).

=> e можно вычислить с использованием модульной инверсии d по модулю φ(n).

Пример: Пусть:

n = 55 (произведение двух простых p = 5 и q = 11). d = 27 (закрытый экспонент). Вычислим φ(n):

φ(n)=(p−1)×(q−1)=(5−1)×(11−1)=4×10=40

Теперь решаем для e, используя:

e×d≡1 (mod 40) Это означает, что e – это модульная инверсия d по модулю 40.

Используя расчет модульной инверсии, мы находим:

e=3

Таким образом, открытый экспонент e = 3 для этого примера.

Таким образом, зная d, n, p и q, вы можете вычислить e.

Ответ

Да, возможно вычислить общественный экспонент RSA (e), если у вас есть частный ключ (d) и модуль (n). Для этого вам необходимо понять взаимосвязь между этими величинами.

Основные компоненты RSA

  1. d – частный экспонент.
  2. n – модуль, который является произведением двух простых чисел (p и q).
  3. φ(n) – функция Эйлера для n, которая определяется как φ(n) = (p – 1) * (q – 1).

Взаимосвязь между d и e

Существует важная связь между d и e:
[ e \times d \equiv 1 \ (\text{mod} \ \phi(n)) ]
Это означает, что e является мультипликативной обратной к d по модулю φ(n). Таким образом, для нахождения e вам необходимо знать значение φ(n).

Шаги для вычисления e

  1. Разложите n на простые множители: Вам нужно найти p и q, такие что ( n = p \times q ).

  2. Вычислите φ(n):
    [ \phi(n) = (p – 1) \times (q – 1) ]

  3. Найдите e как мультипликативное обратное d по модулю φ(n): Используйте алгоритм расширенного Евклида для нахождения e.
    [ e = d^{-1} \ (\text{mod} \ \phi(n)) ]

Пример

Предположим, что:

  • ( n = 55 ) (где p = 5 и q = 11),
  • ( d = 27 ).

Шаг 1: Вычисляем φ(n):
[ \phi(n) = (5 – 1) \times (11 – 1) = 4 \times 10 = 40 ]

Шаг 2: Находим e:
Мы знаем, что ( e \times d \equiv 1 \ (\text{mod} \ 40) ). Используя алгоритм расширенного Евклида, мы находим e.

Пример вычисления:
Решаем уравнение:
[ e \times 27 \equiv 1 \ (\text{mod} \ 40) ]

Решив, мы получаем ( e = 3 ).

Заключение

Таким образом, зная d (частный экспонент) и n (модуль), вы можете вычислить e (общественный экспонент), если сможете найти p и q для вычисления φ(n). Если же у вас нет p и q, то это сделать невозможно. Данная связь основана на свойствах чисел и нарушить ее будет крайне сложно, что и обеспечивает безопасность RSA.

Оцените материал
Добавить комментарий

Капча загружается...