키 생성 알고리즘
- 서로 다른 아주 큰 소수 p, q를 선택한다.
- p와 q를 곱해서 N값을 생성한다.
- 오일러 파이 함수 값과 오일러 정리를 활용한다.
Φ(N)=(p-1) * (q-1)
결국 p 값에 대한 오일러 함수는 1 부터 솟수인 p와 서로 소 관계인 정수의 갯수를 세는 함수이다. q에 대한 정수의 갯수도 마찬가지. p*q (N)와 서로 소 관계인 정수의 갯수
—>N 과 서로 소인 정수의 갯수는 Φ(p) * Φ(q)가 된다.
다음의 문자는 위에서 나오는 문자와 관계없는 새로운 값이다. 단지 같은 문자만 사용한다.
a^(p-1) ≡ 1 mod p (단 a 와 p 는 서로소)
a^Φ(n) ≈ 1 mod n
4 Φ(N)과 서로소인 e 를 선택한다.
5. e * d ≡ 1 mod( Φ(N)) 를 만족하는 d 를 구한다.
6 공개키 (N, e) , 개인키(N, d)
7. 암호화(공개키 이용)
C=M^e(mod Φ(N ))
8. 복호화(개인키 이용)
M=C^d( mod Φ(N) )
————————————————————————————–
p=11, q=3 라고 할 때
N=33
Φ(33)=10 * 2 = 20
20과 서로소인 임의의 e 를 3이라 하면
( 3* d) mod(20))=1
(3 * d) = 20*Q(x) +1
d= 7
——————————————–
6. 개인키 : N , d (33, 7)
공개키 : N, e (33, 3)
7 . 암호화
평문 M을 암호화. M=3
C=M^e(mod 20) =7
3^3(mod 20) =7
7을 복호화
M=C^7(mod 20)
7^7(mod 20)= 3