공개키 암호 시스템
로널드 라이베스트, 아디 샤미르, 레너드 애들먼
그래서 RSA임(라이베스트, 샤미르, 애들먼)
이거 만들어서 2002년 튜링상 수상함.
큰 숫자를 소인수 분해하는 것이 어렵다.
근데 1993년 피터 쇼어의 쇼어 알고리즘은 양자 컴퓨터를 이용하여 임의의 정수를 다항 시간 안에 소인수 분해하는 법을 발표함.
즉, 양자 컴퓨터로 RSA 알고리즘 무용지물 됨.
다항 시간?
입력 크기 n에 대해 최악의 경우 n^k
반대로 비디항 시간(지수 시간)은 2^k 형태
두 개의 키를 사용함.
여기서 키는 상수임.
공개키로 암호화를 하고, 개인키로 복호화를 한다.
즉, 암호화는 누구나 할 수 있지만 복호화는 해당 공개키와 연결된 개인키를 가지고 있는 사람만 가능하다.
공개키는 n, e
개인키는 n, d
두 소수 p, q를 곱한 값을 n이라고 함.
ϕ(n) = (p-1) x (q-1)
(n이 두 수소 p, q의 곱일 때, 1부터 n 사이에서 n과 서로소인 정수의 개수)
1 < e < ϕ(n)
ϕ(n)과 서로소인 e를 정한다.
(e x d) mod ϕ(n) = 1
-> e×d+φ(n)×k=1
C: 암호화 메시지
M: 원본 메시지
C = M^e mod n
M = C^d mod n
(페르마의 소정리)