Loading [MathJax]/jax/output/HTML-CSS/jax.js

응용수학/암호학2020. 10. 16. 08:00
반응형

[암호학] 8. RSA 암호체계



RSA 암호체계는 1978년에 라이베스트(Rivest), 샤미르(Shamir), 애들먼(Adleman)이 고안한 것으로 폴리그-헬만 암호체계를 약간 변형시킨 것이고, 다음의 정리에 기반을 두고 있다. 


정리. 서로 다른 두 홀수 소수 p,q에 대하여 m=pq라고 할 때gcd(e,ϕ(m))=1,1<e<ϕ(m)인 정수 e에 대해 ded1(modϕ(m)),1<d<ϕ(m)인 정수라 하고, 가환환 Zn={0,1,...,n1}위의 두 함수 E,D를 다음과 같이 정의하자.E:ZnZnE(x)=xeD:ZnZnD(x)=xd이때 모든 xZn에 대하여 D(E(x))=x이고 따라서 EDZn위의 일대일 대응이고 E1=D이다. 

증명: 가정에 의해 gcd(e,ϕ(m))=1이므로ed1(modϕ(m))1<d<ϕ(m)인 정수 d는 존재하고 ϕ(m)|(ed1)이므로 양의 정수 k가 존재해서 d=ϕ(m)k+1이다. 

aZn, gcd(a,n)=1이라 하자. 오일러의 정리에 의해 aϕ(m)1(modm)이므로aedaϕ(m)k+1(aϕ(m))ka1kaa(modm)이고 따라서 D(E(a))=aed=a이다. a=0이면 D(E(0))=0ed=0이다. 

다음으로 aZn, a0, gcd(a,n)1이라 하자. m=pq이므로 다음 중 하나가 성립한다.(i)p|a,gcd(a,q)=1,(ii)gcd(a,p)=1,q|aϕ(m)|(ed1), ϕ(m)=(p1)(q1)이므로 다음이 성립한다.(p1)|(ed1),(q1)|(ed1)(i)의 경우, a0(modp)이므로aed0ed0a(modp)이고 gcd(a,q)=1이므로 페르마 정리에 의해 aq11(modq)이고 또한 양의 정수 s가 존재해서 ed=(q1)s+1이므로 다음이 성립한다.aeda(q1)s+1(aq1)sa1aa(modq)p,q는 서로소이므로 위의 두 결과와 중국인의 나머지 정리에 의해aeda(modm)이고 따라서 가환환 Zn에서 D(E(a))=aed=a이다.

마찬가지로 (ii)의 경우에도 가환환 Zn에서 D(E(a))=aed=a이다. 

위의 증명에 의해 모든 aZn에 대해 D(E(a))=a이므로 두 함수 E,D는 일대일 대응이고 E1=D이다. 


RSA 암호체계 프로토콜


1단계. 수신자 A는 충분히 큰 서로 다른 두 소수 p,q를 선택하여 m=pq를 계산하고 m은 공개, p,q는 비공개한다. 그리고 A는 m의 오일러-피 함수값 ϕ(m)=(p1)(q1)의 값을 구한다.

2단계. 수신자 A는 gcd(e,ϕ(m))=1, 1<e<ϕ(m)인 정수 e를 선택하고ed1(modϕ(m))1<d<ϕ(m)인 정수 d를 구해서 e를 공개하고 d는 비공개한다. 즉, A의 공개 키는 m,e이고 비밀 키는 p,q,d이다. 

3단계. 송신자 U는 송신하려는 평문을 0a<m인 정수 a로 나타낸다. 이때 1의 자리수 앞에 0을 붙인다. 

4단계. 송신자 U는 공개된 m,e를 이용하여 평문 a에 대하여bae(modm)0b<m인 정수 b를 구해서 암호문 b를 A에게 전송한다. 

5단계. 수신자 A는 암호문 b와 자신의 비밀 열쇠 d를 이용하여abd(modm)0a<m인 정수 a를 구함으로써 평문 a를 얻는다.

RSA 암호체계의 안전성은 정수의 인수분해가 어렵다는 점에 있다. 앞의 단계 (1), (2)에서 A가 상당히 큰 서로 다른 두 소수 p,q를 택하면 합당한 시간 안에 정수 m의 두 소인수 p,q를 구하는 일은 대단히 어렵고 따라서 ϕ(m)의 값을 계산하는 일은 어렵게 되고, 공개된 e의 값을 이용하여 1<d<ϕ(m)d를 구하는 일은 어렵다. 

이때 두 소수 p,q는 다음과 같은 조건을 만족해야 한다. 

(1) p,q는 서로 다르고 상당히 커야 한다. 

(2) p,q는 자리수가 거의 같아야 한다. 

(3) p1q1은 각각 큰 소인수를 가져야 한다. 

(4) p1q1의 최대공약수는 작아야 한다.

보통 RSA 암호체꼐에서는 p,q를 100자리 정도의 소수로 택하여 m=pq를 이용한다.     

공격자가 mϕ(m)의 값을 알면 이차방정식x2(m+1ϕ(m))x+m=0의 두 근을 구하여 m의 두 소인수 p,q를 구할 수 있다. 

앞의 3단계에서 am일 때는 적당한 함수 h를 사용해서0h(a)<m인 정수 h(a)를 정하여 a 대신 h(a)를 사용하거나 또는 mn자리의 수인 경우, aa=a1a2ak와 같이 처음부터 차례로 그 길이가 n1인 블록으로 나누어 이들 블록이 나타내는 양의 정수 a1,a2,...,ak가 모두 m보다 작도록 하고 필요하다면 평문에 적당한 문자를 추가한다.  


서로 다른 두 홀수 소수 p=1733, q=2347에 대하여m=pq=4067351ϕ(m)=(p1)(q1)=17322346이다. e=31일 때 gcd(e,ϕ(m))=1이므로 유클리드의 알고리즘을 이용하여ed1(modϕ(m)),1<d<ϕ(m)인 정수 d를 구하면 d=3145759이다. 

평문 'public key cryptography'를 알파벳-숫자 표에 따라 정수 a로 나타내고 이를 길이가 6인 블록으로 나누면 다음과 같이 나타낼 수 있다.a=152001a1110802a2100424a3021724a4151914a5061700a6150724a7다음으로 각 i(1i7)에 대하여bia31i(modm)(0bi<m)인 정수 bi를 구하여 이들을 차례로 늘어놓은 정수를 b라고 하면 다음과 같다.b=2721372b13969831b22416419b31795753b42110079b50242624b60889174b7수신한 암호문 b=b1b2b7과 비밀 키 d를 이용하여 각 bi에 대하여 다음과 같이 ai를 구하면 평문 a를 얻을 수 있다.aib3145759i(modm)0ai<mRSA 암호체계에서 다음에 유의해야 한다.

1. 여러 수신자가 동일한 정수 m을 이용하는 것을 피해야 한다.

2. 암호화 함수에서 지수 e를 택할 때 가장 작은 값을 피해야 한다.  


참고자료:

암호학과 부호이론, 박승안, 경문사    

반응형
Posted by skywalker222