[암호학] 11. 영지식 증명(2)
앞에서 다음의 두 정리들을 증명했다.
정리 1. 서로 다른 홀수 소수 p,q에 대하여 m=pq라 하고 a를 gcd(a,m)=1 즉 gcd(a,p)=gcd(a,q)=1인 정수라고 하자.
이때, 이차합동식 x2≡a(modm)이 해를 가질 필요충분조건은 다음의 두 이차합동식x2≡a(modp),x2≡a(modq)가 모두 해를 갖는 것이다. 즉(a/p)=(a/q)=1일 때 해를 갖는다.
이차합동식 x2≡a(modm)이 해를 가질 때 이 이차합동식은x≡x1(modm)x≡x2(modm)x≡−x1≡m−x1(modm)x≡−x2≡m−x2(modm)과 같은 4개의 해를 갖고 이들 해에 대해 다음이 성립한다.
(1) 두 최대공약수 gcd(x1+x2,m), gcd(x1−x2,m)중 하나는 p이고 또 하나는 q이다.
(2) p≡q≡3(mod4)이면, 이들의 해 중에는 (x0/p)=(x0/q)=1인 해 x≡x0(modm)즉, 법 m에 대해 2차잉여인 해가 존재하고 이러한 해는 유일하다.
정리 2. 홀수 소수 p에 대하여 p≡3(mod4)일 때, gcd(a,p)=1인 정수 a에 대하여 (a/p)=1이면 즉, 2차합동식 x2≡a(modp)의 해가 존재하면 이 2차합동식의 두 해는 다음과 같다.x≡±ap+14(modp)양의 정수 m이 서로 다른 두 홀수 소수 p,q의 곱으로 인수분해 됨을 알 때, 2차합동식 x2≡a(modm)의 4개의 해를 구할 수 있으면 앞의 정리 1의 (1)을 이용하여 m의 소인수 p,q의 값을 구할 수 있다.
비밀 정보 자체를 노출시키지 않고 보유하고 있음을 타인에게 확신시킬 때 이용하는 증명 방법을 영지식 증명(zero-knowledge proof)이라고 한다.
영지식 증명에서 비밀 정보를 가지고 있음을 증명하는 사람(proofer)과 이러한 사실을 확인하는 사람(verifier)이 있게 된다. 영지식 증명을 사용하는 경우, 비밀 정보를 모르는 제 3자가 증명하는 사람 행세를 하여 확인하는 사람을 속일 확률은 충분히 작고, 확인하는 사람은 충분히 작은 정보를 갖고 있기 때문에 제 3자에게 자기가 이 비밀 정보를 알고 있는 것처럼 확신시켜 줄 수 는 없다.
영지식 증명 프로토콜
P가 p≡3(mod4), q≡3(mod4)인 서로 다른 두 소수 p,q를 선택해 이 두 소수 p,q를 비공개로 한 상태로 이 두 소수를 알고 있다는 사실을 V에게 확신시키려고 할 때 다음의 절차를 따른다.
1단계: P는 V에게 p,q의 곱인 m의 값을 알려 준다.
2단계: V는 gcd(c,m)=1, 1≤c<m인 정수 c를 임의로 선택해a≡c4(modm),1≤a<m인 정수 a를 구한 다음 이 값을 P에게 송신한다.
3단계: P는 V로부터 받은 a의 값을 이용해 2차합동식 x2≡a(modm)의 해 중에서 법 m에 대한 2차잉여일 때x≡b(modm),1≤b<m를 구해 b를 V에게 송신한다.
4단계: V는 b≡c3(modm)인지 확인한다.
앞의 3단계에서 V는 m의 소인수 p,q의 값을 이용해 2차합동식 x2≡a(modm)의 해를 구하고 (b/p)=(a/p)=1임을 밝힘으로써 정리 1로부터 b가 법 m에 대한 2차잉여임을 판정한다. 그러나 p,q의 값을 모르는 경우, 합리적인 시간 안에 b를 구할 수 없다.
4단계에서 V는 두 소인수 p,q의 값을 알지 못하면서 자신이 이미 고른 c의 값을 이용하여 b의 값을 판정할 수 있다. 실제로a≡c4≡(c2)2(modm)이므로 x≡c2(modm)은 2차합동식 x2≡a(modm)의 해인 동식에 법 m에 대한 2차잉여이다. 그리고 이러한 해는 유일하므로 b≡c2(modm)이다.
소수 p=103,q=239에 대하여 m=pq라 하자. 이때 m=24717이고 2단계에서 V가 c=9134를 고르면a≡c4≡91344≡20682(mod24617)이므로 V는 a=20682를 P에게 보낸다.
3단계에서 P는 2차합동식 x2=20682(mod24617)의 해를 구하기 위해 다음의 연립합동식의 해를 구한다.{x2≡20682≡82(mod103)x2≡20682≡67(mod239)103≡3(mod4), 239≡3(mod4)이므로 정리 2에 의해 합동식x2≡82(mod103),x2≡67(mod239)의 해는 각각 다음과 같다.x≡±82103+14≡±8226≡±59(mod103)x≡±67239+14≡±6760≡±75(mod239)르장드르 기호의 성질에 의해(59/103)=−(103/59)=−(44/59)=−(11/59)=(59/11)=(4/11)=1(75/239)=(3/239)=(239/3)=−(2/3)=1이므로 따라서 2차합동식 x2≡20682(mod24717)의 해 중에서 법 24717에 대해 2차잉여인 해는 다음의 연립1차합동식의 해이다.{x≡59(mod103)x≡75(mod239)중국인의 나머지 정리를 이용해 해를 구하면 x≡2943(mod24717)이므로 b=2943이다.
4단계에서 V는 다음이 성립함을 밝혀 P가 보낸 값이 옳은지 확인한다.c2≡91342≡2943≡b(mod24617)동전 던지기 프로토콜
장거리에 위치한 A, B 두 사람이 전화 또는 전자계산기를 이용하여 승패를 결정하는 경우를 고려하자. B가 동전 던지기를 해서 얻은 결과를 A에게 통보한다면, A는 B는 서로를 불신해서 서로 잘못된 정보를 전달하거나 정보전달을 아예 안할 수 있다. 블럼(Blum)은 이러한 문제를 해결하는 방안을 제시했다.
1단계: A는 상당히 큰 홀수 소수를 선택해서 p≡q≡3(mod4)인 p,q를 선택해서 m=pq의 값을 구하고 B에게 m의 값만을 알려 준다.
2단계: B는 gcd(x1,m)=1, 1≤x1<m인 정수 x1을 임의로 선택해서x21≡a(modm),1≤a<m인 정수 a를 구한 다음 A에게 a의 값만을 알려 준다.
3단계: A는 이미 알고 있는 두 소수 p,q의 값과 B로부터 통보받은 a의 값을 이용하여 2차합동식 x2≡a(modm)의 4개의 해x≡x1(modm)x≡m−x1,(modm),1≤x1<mx≡x2(mod)x≡m−x2(modm),1≤x2<m를 구하고 이 중 한개만을 B에게 알려준다.
4단계: B가 A로부터 통보받든 값을 이용하여 p,q의 값을 구하여 그 값을 A에게 알려줄 수 있을 때 B가 이기는 것으로 정하고, 그 반대로 p,q의 값을 알려줄 수 없을 때 A가 이기는 것으로 한다.
그리고 B는 A로부터 받은 값의 제곱을 m으로 나눈 나머지를 구하여 그 나머지가 a와 일치하는지 확인함으로써, A가 잘못 계산했는지 아니면 속였는지를 알 수 있다.
4단계에서 B가 A로부터 x2, 또는 x2(1−t)를 받는 경우, B는 x1의 값을 이용해 (a+ap) 또는 gcd(x1+x2,m) 또는gcd(x1+m−x2,m)=gcd(x1−x2,m)의 값을 구하면 p 또는 q이다.
B가 A로부터 x1 또는 m−x1을 받는 경우 B는 이 정보로부터 p,q의 값을 구할 수 없다. 그런데 A가 x1,m−x1을 고를 확률과 x2,m−x2고를 확률은 같으므로 이 동전 던지기는 공평하다.
참고자료:
암호학과 부호이론, 박승안, 경문사
'응용수학 > 암호학' 카테고리의 다른 글
[암호학] 13. 갈루아 체를 이용한 암호체계 (0) | 2020.10.21 |
---|---|
[암호학] 12. 갈루아 체 (0) | 2020.10.20 |
[암호학] 10. 영지식 증명(1. 2차잉여, 르장드르 기호) (0) | 2020.10.18 |
[암호학] 9. 엘 가말 암호 (0) | 2020.10.17 |
[암호학] 8. RSA 암호체계 (0) | 2020.10.16 |