Processing math: 100%

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

[암호학] 7. 공개 열쇠 암호체계



지금까지 다루었던 암호는 비밀 키 암호 체계였다. 이 암호 체계 에서 사용자 모두가 동일한 열쇠 K를 택하기 때문에 이 암호체계에서는 이 열쇠가 공격자에게 노출되면 안된다. 

그러기 위해서는 

1. 암호문 수신자는 그 근원을 확인할 수 있어야 한다.

2. 평문이 송신되는 도중 변형되지 않았는가를 확인할 수 있어야 한다. 

3. 암호문을 송신한 사람은 나중에 송신한 사실을 부인할 수 없어야 한다.

4. 열쇠가 공격자에게 노출되면 안된다.

이 4가지를 모두 충족시켜야 한다. 

고전적 비밀 키 암호 체계에서는 위 4가지를 모두 만족시키기가 어려우나 디피(Diffie)와 헬만(Hellman) 등은 공개 열쇠 암호체계를 창안해 이러한 어려움을 해결했다. 

공개 키 암호 체계에서는 평문을 암호화하는 키는 공개하나 암호문을 평문으로 복호화하는 키는 비밀로 한다. 이렇게 하면 각 사용자는 공개 열쇠와 비밀 열쇠를 가지므로, 여러 사용자 사이에 열쇠를 교환할 필요가 없게 되어 통신망을 구축하는데 필요한 키의 개수를 줄일 수 있다. 


어느 조직에서 공개 키 암호체계를 이용하려면 사용자에 따른 암호화 키(공개 키)와 복호화 키(비공개 키)가 기록된 등록부를 갖게 하여 조직원 간 비밀 통신을 가능하게 한다. 


 조직원

공개 키 

U의 공개 키 

A의 공개 키 

B의 공개 키 

 

 


조직원 C가 조직원 A에게 암호문을 보내려고 한다. 공개키 암호 EA를 이용하여 평문 a를 암호문 b로 암호화하여 이 암호문을 A에게 전송하고 이 암호문을 받은 A는 자기 자신만이 알고 있는 복호 함수 DA(비공개)를 이용해 수신된 암호문 b를 복호화하여 평문 a를 얻는다.


공개 키 암호체계에서 암호문이 공격당하면 안되고 각 평문 a에 대하여 암호문 EA(a)와 복호화된 암호문 DA(EA(a))=a를 안전하고 빠르게 계산할 수 있어야 하며 암호화 함수 EA를 이용해 DA를 알게 해서는 안된다. 또한 각 사용자는 누구나 모두 한 쪽 방향으로 쉽게 들어갈 수 있어도 특정 사용자 이외에는 되돌아올 수 없는 덫문(trapdoor)과 같은 안전 장치가 마련되어야 한다. 


두 유한집합 A,B 사이의 일대일 대응함수 f:AB에 대하여 각 원소 aA의 함숫값 f(a)는 쉽게 계산할 수 있으나 f의 역함수 f1:BA를 구하기 상당히 어려울 때, 즉 bB에 대하여 b=f(a)aA를 구하기가 어려울 때, 함수 f를 일방향 함수(one-way function)라고 한다.   

일방향 함수 f:AB에 대하여 추가적인 정보(덫문)를 가지고 있는 경우에만 f를 덫문 일방향 함수(trapdoor one-way function)라고 한다. 


*일방향 함수의 예: f(n)=nennn에 대해 증가함수이므로 역함수를 갖지만 그 역함수를 양함수로 나타낼 수 없다. 


홀수 소수 p에 대하여 법 p에 대한 원시근이 존재한다. 즉 다음의 두 조건을 만족하는 r(2ap2)가 존재한다.

(i) gcd(r,p)=1

(ii) ri1(modp)(1i<p1), rp11(modp)

Zp={1,2,...,p1}라 하고 aZp를 법 p에 대한 원시근이라고 하면, 체 Zp에서Zp={r0,r1,...,rp2},rp11(modp)이고 각 aZp에 대하여 유일한 k가 존재해서k=indrarka(modp),0kp2이다. 이러한 정수 k를 법 p에 대한(r을 밑으로 갖는) a의 이산로그(또는 지표)라고 한다. 

따라서 Zp1={0,1,...,p2}일 때 f(k)=rk로 정의되는 함수 f:Zp1Zp는 일대일 대응이고, 그 역함수 f1를 구하기 어렵다. 따라서 함수 f는 일방향 함수라고 할 수 있다. 

이와 같이 p와 원시근 r의 값을 알고 있을 때 gcd(a,p)=1인 정수 a에 대하여 indra를 구하는 문제를 이산로그 문제(discrete logarithm problem)라고 한다.  


서로 다른 두 홀수 소수 p,q에 대해 m=pq를 계산하는 것은 쉬우나 m을 두 소수의 곱 pq로 인수분해하는 것은 어렵다. m의 두 소인수 p,q를 알면 등식ϕ(m)=ϕ(p)ϕ(q)=(p1)(q1)을 이용하여 ϕ(m)을 구할 수 있다. 

mϕ(m)의 값을 알면 m의 두 소인수 p,q의 값을 알 수 있고, 실제로ϕ(m)=(p1)(q1)=pq(p+q)+1이므로p+q=m+1ϕ(m),pq=m이고 따라서 p,q는 다음의 이차방정식의 근이다.x2(m+1ϕ(m))x+m=0그러므로 m,ϕ(m)을 알면 이 이차방정식의 두 근 p,q를 구할 수 있다. 

이처럼 m,ϕ(m)과 같은 추가적인 정보를 이용해 m의  두 소인수 p,q의 값을 구할 수 있는 경우, 이 추가정보가 덫문이다. 


디피-헬만 키 교환 프로토콜(Diffie-Hellman key change protocol)   


(protocol: 약정서)

두 용자 A, B는 비밀 열쇠를 교환하기 위해 충분히 큰 소수 p와 법 p에 대한 원시근 r(2rp2)을 서로 상의하고 결정하여 pr을 공개한다. 

(1) 사용자 A는 2kp2인 정수 k를 임의로(randomly) 선택하여urk(modp),1<u<p인 정수 u를 구하고 이 정수 u를 B에게 보낸다. 

(2) 사용자 B는 2lp2인 정수 l을 임의로 선택하여v=rl(modp),1<v<p인 정수 v를 구하고 이 값을 A에게 보낸다. 

(3) 사용자 A는xvk(modp),1<x<p인 정수 x를 구하여 x를 열쇠로 사용한다.

(4) 사용자 B는xul(modp),1<x<p인 정수 x를 구하여 x를 열쇠로 사용한다. 

이때vk(rl)krkl(rk)lul(modp)이므로 (3), (4)단계에서 구한 x의 값은 일치한다.       


소수 p=37에 대하여 r=2는 법 p에 대한 원시근이고 2를 밑으로 갖는 법 37에 대한 이산로그표는 다음과 같다.

 r

10 

11 

12

13 

14 

15 

16 

17 

ind2r 

26 

23 

27 

32 

16 

24 

30 

28 

11 

33 

13 

r 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

ind2r 

17 

35 

25 

22 

31 

15 

29 

10 

12 

34 

21 

14 

20 

r 

35 

36 

ind2r 

19 

18 


사용자 A는 r=19를 선택하고urk21935(mod37)를 계산해 u=35를 B에게 보낸다. 

사용자 B는 k=11를 선택하고vrl21113(mod37)를 계산해 v=13를 A에게 보낸다. 이때,vk131924(mod37),ul351124(mod37)이므로 A와 B는 24를 공통 열쇠로 사용한다.     


참고자료:

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

반응형
Posted by skywalker222