수학 개념 지도
정수론(Number theory)

RSA 암호(RSA cryptosystem)

누구나 잠글 수 있지만 두 소수⁠(prime number)⁠를 아는 사람만 열 수 있는 자물쇠. 오일러 정리⁠(Euler's theorem)⁠로 m^(ed) ≡ m이 되게 지수 e, d를 고른다.

c≡me(modn),m≡cd(modn),ed≡1(modφ(n))c \equiv m^{e} \pmod n, \qquad m \equiv c^{d} \pmod n, \qquad ed \equiv 1 \pmod{\varphi(n)}

두 소수 p=p = , q=q = 를 몰래 고르고, 곱 n=pqn = pq와 지수 e=e = 를 세상에 공개합니다. 누구든 메시지 m=m = 를 c=me mod nc = m^e \bmod n(mem^e을 nn으로 나눈 나머지⁠(remainder)⁠)으로 잠글 수 있습니다. 1977년 MIT의 로널드 리베스트, 아디 샤미르, 레너드 애들먼이 발표해 세 사람 성의 머리글자를 딴 이름입니다.

원 위의 n개 점에서 m → mᵉ mod n을 모두 이은 그림입니다. 노란 화살표가 지금의 m, 초록 점선이 복호화입니다.

ee가 φ(n)\varphi(n)과 서로소⁠(coprime)⁠이면 잠그기는 0,1,…,n−10, 1, \dots, n-1을 서로 겹치지 않게 자리만 바꾸는 순열⁠(permutation)⁠입니다. 되돌리는 열쇠가 dd입니다. ed=1+k φ(n)ed = 1 + k\,\varphi(n)이고 mm이 nn과 서로소이면, 오일러 정리 mφ(n)≡1m^{\varphi(n)} \equiv 1 덕분에 (me)d=m⋅(mφ(n))k≡m(m^e)^d = m \cdot (m^{\varphi(n)})^k \equiv m입니다. mm이 pp나 qq의 배수여도 pp, qq로 나눈 나머지를 따로 보면 같은 결론이 나옵니다(중국인의 나머지 정리⁠, Chinese remainder theorem⁠). dd는 φ(n)\varphi(n)을 법으로 한 ee의 모듈러 역수⁠(inverse)⁠이고, 확장 유클리드 호제법⁠(Euclidean algorithm)⁠으로 순식간에 구합니다. ee가 φ(n)\varphi(n)과 서로소가 아니면 역수가 없고, 그림에서 여러 점이 한 점으로 몰려(회색 점) 순열이 깨집니다.

그런데 dd를 구하는 자연스러운 길은 φ(n)=(p−1)(q−1)\varphi(n) = (p-1)(q-1)을 아는 것이고, nn과 φ(n)\varphi(n)을 알면 p+q=n−φ(n)+1p + q = n - \varphi(n) + 1에서 p,qp, q가 곧바로 나옵니다. 공개된 것은 nn과 ee뿐입니다. 이것만으로 dd를 알아내는 일은 nn을 소인수분해⁠(prime factorization)⁠하는 일만큼 어렵다는 것이 증명되어 있습니다. 다만 dd 없이 암호문⁠(ciphertext)⁠을 푸는 다른 지름길이 없다는 증명은 아직 없습니다. 수백 자리 수의 소인수분해는 지금 알려진 어떤 방법으로도 보통 컴퓨터에서 현실적인 시간 안에 끝나지 않습니다(충분히 큰 양자컴퓨터가 생기면 쇼어 알고리즘⁠(algorithm)⁠으로 빨리 풀립니다). 곱하기는 쉽고 되돌리기는 어렵다는 이 비대칭이 자물쇠입니다.

같은 자물쇠를 거꾸로 쓰면 전자서명⁠(digital signature)⁠이 됩니다. 보내는 사람이 메시지를 비밀 열쇠 dd로 잠가 붙이면, 누구나 공개된 ee로 풀어 보아 그 사람이 보냈음을 확인할 수 있습니다. 실제로는 긴 메시지를 해시 함수⁠(hash function)⁠로 짧은 고정 길이의 수로 줄인 뒤 그 수를 잠급니다. 서로 다른 메시지의 해시⁠(hash)⁠가 우연히 같아질 확률⁠(probability)⁠은 생일 문제⁠(birthday problem)⁠가 알려 줍니다.

만난 적 없는 두 사람이 공개된 통신망에서 비밀 열쇠를 맞추는 또 다른 방법은 디피–헬먼 키 교환⁠(Diffie–Hellman key exchange)⁠입니다.

큰 수를 소인수분해하기는 어렵지만, 큰 수가 소수인지 가리기는 쉽습니다(소수 판정⁠, primality test⁠). RSA는 이 두 일의 난이도 차이에 기대고 있습니다.

소인수분해가 정말로 어려운지는 아무도 증명하지 못했습니다. 두 소수를 받으면 곱해 보아 답인지 곧바로 확인할 수 있지만, 그 답을 찾기는 어려워 보입니다. 이처럼 답을 빨리 확인할 수 있는 문제가 모두 빨리 풀 수도 있는 문제인지 묻는 것이 P 대 NP 문제⁠(P versus NP problem)⁠입니다. 다만 P ≠ NP가 증명되더라도 소인수분해가 어렵다는 결론은 곧바로 나오지 않습니다. 소인수분해는 NP에서 가장 어려운 문제로 여겨지지 않기 때문입니다.

이 개념이 나오는 큰 생각무작위성

이 개념이 나오는 긴 글

소수 소수를 세는 사람들 소수는 제멋대로 흩어져 있는 것 같다. 그런데 멀리서 세어 보면 로그가 보인다. 정수론과 암호 나머지로 지키는 비밀 한 번도 만난 적 없는 두 사람이 모두가 엿듣는 통신망에서 비밀 열쇠를 맞출 수 있을까? 답은 시계의 산수와 1640년 페르마의 정리에 있다. 그래프 이론 일곱 다리의 도시 쾨니히스베르크의 일곱 다리를 한 번씩만 건너 산책할 수 있을까? 오일러는 지도를 지우고 점과 선만 남겼다. 계산 이론 기계가 풀 수 없는 문제 모든 수학 문제를 기계적으로 풀 수 있을까? 러셀의 역설에서 괴델과 튜링까지, 그 질문에 대한 답은 '아니오'였고, 그 증명이 컴퓨터를 낳았다.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념