-
29-09-2020 - |
문제
공개 키만 있는 경우 RSA 메시지를 어떻게 해독할 수 있나요?
예를 들어, 메시지 :21556870,12228498
공개 키: (e = 15852553, n = 44331583)
나는 다음과 같은 공식이 존재한다는 것을 알고 있습니다.
gcd(e, φ(n)) = 1
ed mod φ(n) = 1
그래서 내 생각은 첫 번째 공식에 e 값을 넣은 다음 개인 키의 일부인 d를 파생시킬 수 있다는 것이었습니다.하지만 수학적으로 찾는 것은 불가능하다고 생각합니다. φ(n)
여기.그렇다면 공개 키만으로 RSA 메시지를 어떻게 해독할 수 있습니까?
해결책
"공개 키만 있으면 어떻게 RSA 메시지를 해독할 수 있나요?"
잘, 공개 키에서 개인 키를 찾아야 합니다..RSA 알고리즘은 오랜 시간 동안 현장 테스트를 거친 보안 알고리즘이고 사람들은 일반적으로 충분히 긴 비트로 조심스럽게 사용하고 있기 때문에 일반적인 실제 상황에서는 수행하기가 너무 어렵습니다.
그러나 귀하에게 할당된 연습은 RSA 알고리즘을 연습할 수 있도록 설계되었습니다.사용된 숫자는 공개 키가 제공된 개인 키를 얻는 것을 방지할 만큼 크지 않습니다. 좋아하는 프로그래밍 언어와 컴퓨터를 사용하여 간단한 프로그래밍으로 모든 계산을 수행할 수 있어야 합니다.
아래 답변을 보기 전에 더 열심히 노력해 보세요.
공개 키: (e = 15852553, n = 44331583)
우리가 고려하자 n
.다음은 간단한 Python 프로그램입니다.
def factor(n):
for i in range(2, n-1):
if n % i == 0:
print(str(n) + " = " + str(i) + " * " + str(n // i))
break
달리기 factor(44331583)
, 우리는 그것을 얻습니다 44331583 = 5003 * 8861
.
그래서 φ(n) = (5003 - 1) * (8861 - 1) = 44317720
의 역함수 찾기 e
모듈로 φ(n)
.다음은 간단한 Python 프로그램입니다.
def inverse(e, phi):
""" display the inverse of e modulo phi """
for i in range(1, phi):
if i * e % phi == 1:
print(str(e) + " * " + str(i) + " = 1 (mod " + str(phi) + ")")
break
달리기 inverse(15852553, 44317720)
, 우리는 그것을 얻습니다 15852553 * 1951097 = 1 (mod 44317720)
.즉, e
모듈로 φ(n)
~이다 d=1951097
.
따라서 해당 개인 키는 다음과 같습니다. (d = 1951097, n = 44331583)
.
컴퓨팅 m**d (mod n)
RSA 메시지(a.k.a.)를 해독합니다.암호문) m
.다음은 널리 사용되는 모듈러 지수 함수입니다.
def modulo_pow(base, exponent, modulus):
""" display the result of base ** exponent % modulus """
exp = exponent
result = 1
b = base % modulus
while exp > 0:
if exp % 2 == 1:
result = (result * b) % modulus
exp = exp >> 1
b = (b * b) % modulus
print(str(base) + " ** " + str(exponent)
+ " = " + str(result) + " (mod " + str(modulus) + ")")
달리기 modulo_pow(21556870, 1951097, 44331583)
그리고 modulo_pow(71, 15852553, 44331583)
, 우리는 각각,
21556870 ** 1951097 = 71 (mod 44331583)
12228498 ** 1951097 = 111 (mod 44331583)
따라서 해독된 메시지는 다음과 같습니다. 71,111
.무슨 뜻인지 알 수 있나요?
다른 팁
암호를 해독하려면 RSA 공개 키의 기반을 고려해야 합니다.이것이 요점입니다.RSA 크래킹은 인수분해와 동일하며 인수분해는 (아마도) 매우 어렵습니다.