2009/05/28 11:15

RSA 원리(?)

예전에 살짝 봤던거기는 한데, 이해를 완전히 못했었는데!!
http://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8

## 우선 필요한 것들 :
=> P, Q : 서로 소수인 두 수
=> N (공개키의 한 부분) =  P x Q
=> φ(N) : (P-1) x (Q-1) 
=> 원래는 N보다 작은 자연수 중 N과 서로소인 것들의 갯수인데,왼쪽과 같은 식으로 쉽게 구할수 있다.  
=> e (공개키의 한 부분) : φ(N) 보다 작은 수중 φ(N)와 서로소인 수 
=> d (개인키) : ed = 1 (mod φ(N)) 을 만족하는 수 
=>  이미 정해진 e와 곱해서 나머지 연산 φ(N)을 했을때 1을 만족하는 d.

Ex)
P = 7, Q = 9 라고 할때,
N = 7 x 9 = 63
φ(N) = 6 x 8 = 48
e = 5 로 정했을 때,
d = 29 <계산 해보면 나온다. 유일하게 나온다. 오일러 함수??인가 오일러 정리인가??>

@ 공개키 : N, e => 63, 5
@ 개인키 : d => 29

※ 원리 ※
암호문 : pow(평문, e) % N
평문    : pow(암호문, d) % N

Ex) 키를 위평문을 10 이라 하면,
pow(10, 5) % 63 = 19 <암호문>
pow(19, 29) % 63 = 10 <평문>

※ 실제 사용 방법 ※
1. 받을 녀석이 우선 공개키를 배포한다. ex> 63, 5
2. 보낼 녀석이 공개키를 이용해서 암호문을 만들어 받을 녀석에게 보낸다 ex> pow(10, 5) % 63 = 19 를 보낸다.
3. 받을 녀석이 개인키로 암호문을 평문으로 바꾼다.  ex> pow(19, 29) % 63 = 10 <평문>
Trackback 0 Comment 0