[암호학] 7. 공개 열쇠 암호체계
지금까지 다루었던 암호는 비밀 키 암호 체계였다. 이 암호 체계 에서 사용자 모두가 동일한 열쇠 K를 택하기 때문에 이 암호체계에서는 이 열쇠가 공격자에게 노출되면 안된다.
그러기 위해서는
1. 암호문 수신자는 그 근원을 확인할 수 있어야 한다.
2. 평문이 송신되는 도중 변형되지 않았는가를 확인할 수 있어야 한다.
3. 암호문을 송신한 사람은 나중에 송신한 사실을 부인할 수 없어야 한다.
4. 열쇠가 공격자에게 노출되면 안된다.
이 4가지를 모두 충족시켜야 한다.
고전적 비밀 키 암호 체계에서는 위 4가지를 모두 만족시키기가 어려우나 디피(Diffie)와 헬만(Hellman) 등은 공개 열쇠 암호체계를 창안해 이러한 어려움을 해결했다.
공개 키 암호 체계에서는 평문을 암호화하는 키는 공개하나 암호문을 평문으로 복호화하는 키는 비밀로 한다. 이렇게 하면 각 사용자는 공개 열쇠와 비밀 열쇠를 가지므로, 여러 사용자 사이에 열쇠를 교환할 필요가 없게 되어 통신망을 구축하는데 필요한 키의 개수를 줄일 수 있다.
어느 조직에서 공개 키 암호체계를 이용하려면 사용자에 따른 암호화 키(공개 키)와 복호화 키(비공개 키)가 기록된 등록부를 갖게 하여 조직원 간 비밀 통신을 가능하게 한다.
조직원 |
공개 키 |
U |
U의 공개 키 |
A |
A의 공개 키 |
B |
B의 공개 키 |
⋮ |
⋮ |
조직원 C가 조직원 A에게 암호문을 보내려고 한다. 공개키 암호 EA를 이용하여 평문 a를 암호문 b로 암호화하여 이 암호문을 A에게 전송하고 이 암호문을 받은 A는 자기 자신만이 알고 있는 복호 함수 DA(비공개)를 이용해 수신된 암호문 b를 복호화하여 평문 a를 얻는다.
공개 키 암호체계에서 암호문이 공격당하면 안되고 각 평문 a에 대하여 암호문 EA(a)와 복호화된 암호문 DA(EA(a))=a를 안전하고 빠르게 계산할 수 있어야 하며 암호화 함수 EA를 이용해 DA를 알게 해서는 안된다. 또한 각 사용자는 누구나 모두 한 쪽 방향으로 쉽게 들어갈 수 있어도 특정 사용자 이외에는 되돌아올 수 없는 덫문(trapdoor)과 같은 안전 장치가 마련되어야 한다.
두 유한집합 A,B 사이의 일대일 대응함수 f:A→B에 대하여 각 원소 a∈A의 함숫값 f(a)는 쉽게 계산할 수 있으나 f의 역함수 f−1:B→A를 구하기 상당히 어려울 때, 즉 b∈B에 대하여 b=f(a)인 a∈A를 구하기가 어려울 때, 함수 f를 일방향 함수(one-way function)라고 한다.
일방향 함수 f:A→B에 대하여 추가적인 정보(덫문)를 가지고 있는 경우에만 f를 덫문 일방향 함수(trapdoor one-way function)라고 한다.
*일방향 함수의 예: f(n)=nen−n은 n에 대해 증가함수이므로 역함수를 갖지만 그 역함수를 양함수로 나타낼 수 없다.
홀수 소수 p에 대하여 법 p에 대한 원시근이 존재한다. 즉 다음의 두 조건을 만족하는 r(2≤a≤p−2)가 존재한다.
(i) gcd(r,p)=1
(ii) ri≢1(modp)(1≤i<p−1), rp−1≡1(modp)
Z∗p={1,2,...,p−1}라 하고 a∈Z∗p를 법 p에 대한 원시근이라고 하면, 체 Zp에서Z∗p={r0,r1,...,rp−2},rp−1≡1(modp)이고 각 a∈Z∗p에 대하여 유일한 k가 존재해서k=indra⇔rk≡a(modp),0≤k≤p−2이다. 이러한 정수 k를 법 p에 대한(r을 밑으로 갖는) a의 이산로그(또는 지표)라고 한다.
따라서 Zp−1={0,1,...,p−2}일 때 f(k)=rk로 정의되는 함수 f:Zp−1→Z∗p는 일대일 대응이고, 그 역함수 f−1를 구하기 어렵다. 따라서 함수 f는 일방향 함수라고 할 수 있다.
이와 같이 p와 원시근 r의 값을 알고 있을 때 gcd(a,p)=1인 정수 a에 대하여 indra를 구하는 문제를 이산로그 문제(discrete logarithm problem)라고 한다.
서로 다른 두 홀수 소수 p,q에 대해 m=pq를 계산하는 것은 쉬우나 m을 두 소수의 곱 pq로 인수분해하는 것은 어렵다. m의 두 소인수 p,q를 알면 등식ϕ(m)=ϕ(p)ϕ(q)=(p−1)(q−1)을 이용하여 ϕ(m)을 구할 수 있다.
m과 ϕ(m)의 값을 알면 m의 두 소인수 p,q의 값을 알 수 있고, 실제로ϕ(m)=(p−1)(q−1)=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(2≤r≤p−2)을 서로 상의하고 결정하여 p와 r을 공개한다.
(1) 사용자 A는 2≤k≤p−2인 정수 k를 임의로(randomly) 선택하여u≡rk(modp),1<u<p인 정수 u를 구하고 이 정수 u를 B에게 보낸다.
(2) 사용자 B는 2≤l≤p−2인 정수 l을 임의로 선택하여v=rl(modp),1<v<p인 정수 v를 구하고 이 값을 A에게 보낸다.
(3) 사용자 A는x≡vk(modp),1<x<p인 정수 x를 구하여 x를 열쇠로 사용한다.
(4) 사용자 B는x≡ul(modp),1<x<p인 정수 x를 구하여 x를 열쇠로 사용한다.
이때vk≡(rl)k≡rkl≡(rk)l≡ul(modp)이므로 (3), (4)단계에서 구한 x의 값은 일치한다.
소수 p=37에 대하여 r=2는 법 p에 대한 원시근이고 2를 밑으로 갖는 법 37에 대한 이산로그표는 다음과 같다.
r |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
ind2r |
0 |
1 |
26 |
2 |
23 |
27 |
32 |
3 |
16 |
24 |
30 |
28 |
11 |
33 |
13 |
4 |
7 |
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 |
6 |
34 |
21 |
14 |
9 |
5 |
20 |
8 |
r |
35 |
36 |
ind2r |
19 |
18 |
사용자 A는 r=19를 선택하고u≡rk≡219≡35(mod37)를 계산해 u=35를 B에게 보낸다.
사용자 B는 k=11를 선택하고v≡rl≡211≡13(mod37)를 계산해 v=13를 A에게 보낸다. 이때,vk≡1319≡24(mod37),ul≡3511≡24(mod37)이므로 A와 B는 24를 공통 열쇠로 사용한다.
참고자료:
암호학과 부호이론, 박승안, 경문사
'응용수학 > 암호학' 카테고리의 다른 글
[암호학] 9. 엘 가말 암호 (0) | 2020.10.17 |
---|---|
[암호학] 8. RSA 암호체계 (0) | 2020.10.16 |
[암호학] 6. 힐 암호, 폴리그-헬만 암호 (0) | 2020.10.14 |
[암호학] 5. 아핀 암호, 치환 암호, 비즈네르 암호 (0) | 2020.10.13 |
[암호학] 4. 암호체계 (0) | 2020.10.12 |