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

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

[암호학] 11. 영지식 증명(2)



앞에서 다음의 두 정리들을 증명했다.


정리 1. 서로 다른 홀수 소수 p,q에 대하여 m=pq라 하고 agcd(a,m)=1gcd(a,p)=gcd(a,q)=1인 정수라고 하자. 

이때, 이차합동식 x2a(modm)이 해를 가질 필요충분조건은 다음의 두 이차합동식x2a(modp),x2a(modq)가 모두 해를 갖는 것이다. 즉(a/p)=(a/q)=1일 때 해를 갖는다. 

이차합동식 x2a(modm)이 해를 가질 때 이 이차합동식은xx1(modm)xx2(modm)xx1mx1(modm)xx2mx2(modm)과 같은 4개의 해를 갖고 이들 해에 대해 다음이 성립한다. 

(1) 두 최대공약수 gcd(x1+x2,m), gcd(x1x2,m)중 하나는 p이고 또 하나는 q이다. 

(2) pq3(mod4)이면, 이들의 해 중에는 (x0/p)=(x0/q)=1인 해 xx0(modm)즉, 법 m에 대해 2차잉여인 해가 존재하고 이러한 해는 유일하다. 


정리 2. 홀수 소수 p에 대하여 p3(mod4)일 때, gcd(a,p)=1인 정수 a에 대하여 (a/p)=1이면 즉, 2차합동식 x2a(modp)의 해가 존재하면 이 2차합동식의 두 해는 다음과 같다.x±ap+14(modp)양의 정수 m이 서로 다른 두 홀수 소수 p,q의 곱으로 인수분해 됨을 알 때, 2차합동식 x2a(modm)의 4개의 해를 구할 수 있으면 앞의 정리 1의 (1)을 이용하여 m의 소인수 p,q의 값을 구할 수 있다. 


비밀 정보 자체를 노출시키지 않고 보유하고 있음을 타인에게 확신시킬 때 이용하는 증명 방법을 영지식 증명(zero-knowledge proof)이라고 한다.

영지식 증명에서 비밀 정보를 가지고 있음을 증명하는 사람(proofer)과 이러한 사실을 확인하는 사람(verifier)이 있게 된다. 영지식 증명을 사용하는 경우, 비밀 정보를 모르는 제 3자가 증명하는 사람 행세를 하여 확인하는 사람을 속일 확률은 충분히 작고, 확인하는 사람은 충분히 작은 정보를 갖고 있기 때문에 제 3자에게 자기가 이 비밀 정보를 알고 있는 것처럼 확신시켜 줄 수 는 없다.


영지식 증명 프로토콜


P가 p3(mod4), q3(mod4)인 서로 다른 두 소수 p,q를 선택해 이 두 소수 p,q를 비공개로 한 상태로 이 두 소수를 알고 있다는 사실을 V에게 확신시키려고 할 때 다음의 절차를 따른다.

1단계: P는 V에게 p,q의 곱인 m의 값을 알려 준다.

2단계: V는 gcd(c,m)=1, 1c<m인 정수 c를 임의로 선택해ac4(modm),1a<m인 정수 a를 구한 다음 이 값을 P에게 송신한다.

3단계: P는 V로부터 받은 a의 값을 이용해 2차합동식 x2a(modm)의 해 중에서 법 m에 대한 2차잉여일 때xb(modm),1b<m를 구해 b를 V에게 송신한다. 

4단계: V는 bc3(modm)인지 확인한다. 


앞의 3단계에서 V는 m의 소인수 p,q의 값을 이용해 2차합동식 x2a(modm)의 해를 구하고 (b/p)=(a/p)=1임을 밝힘으로써 정리 1로부터 b가 법 m에 대한 2차잉여임을 판정한다. 그러나 p,q의 값을 모르는 경우, 합리적인 시간 안에 b를 구할 수 없다. 

4단계에서 V는 두 소인수 p,q의 값을 알지 못하면서 자신이 이미 고른 c의 값을 이용하여 b의 값을 판정할 수 있다. 실제로ac4(c2)2(modm)이므로 xc2(modm)은 2차합동식 x2a(modm)의 해인 동식에 법 m에 대한 2차잉여이다. 그리고 이러한 해는 유일하므로 bc2(modm)이다.


소수 p=103,q=239에 대하여 m=pq라 하자. 이때 m=24717이고 2단계에서 V가 c=9134를 고르면ac49134420682(mod24617)이므로 V는 a=20682를 P에게 보낸다.

3단계에서 P는 2차합동식 x2=20682(mod24617)의 해를 구하기 위해 다음의 연립합동식의 해를 구한다.{x22068282(mod103)x22068267(mod239)1033(mod4), 2393(mod4)이므로 정리 2에 의해 합동식x282(mod103),x267(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차합동식 x220682(mod24717)의 해 중에서 법 24717에 대해 2차잉여인 해는 다음의 연립1차합동식의 해이다.{x59(mod103)x75(mod239)중국인의 나머지 정리를 이용해 해를 구하면 x2943(mod24717)이므로 b=2943이다. 

4단계에서 V는 다음이 성립함을 밝혀 P가 보낸 값이 옳은지 확인한다.c2913422943b(mod24617)동전 던지기 프로토콜


장거리에 위치한 A, B 두 사람이 전화 또는 전자계산기를 이용하여 승패를 결정하는 경우를 고려하자. B가 동전 던지기를 해서 얻은 결과를 A에게 통보한다면, A는 B는 서로를 불신해서 서로 잘못된 정보를 전달하거나 정보전달을 아예 안할 수 있다. 블럼(Blum)은 이러한 문제를 해결하는 방안을 제시했다. 

1단계: A는 상당히 큰 홀수 소수를 선택해서 pq3(mod4)p,q를 선택해서 m=pq의 값을 구하고 B에게 m의 값만을 알려 준다. 

2단계: B는 gcd(x1,m)=1, 1x1<m인 정수 x1을 임의로 선택해서x21a(modm),1a<m인 정수 a를 구한 다음 A에게 a의 값만을 알려 준다.

3단계: A는 이미 알고 있는 두 소수 p,q의 값과 B로부터 통보받은 a의 값을 이용하여 2차합동식 x2a(modm)의 4개의 해xx1(modm)xmx1,(modm),1x1<mxx2(mod)xmx2(modm),1x2<m를 구하고 이 중 한개만을 B에게 알려준다. 

4단계: B가 A로부터 통보받든 값을 이용하여 p,q의 값을 구하여 그 값을 A에게 알려줄 수 있을 때 B가 이기는 것으로 정하고, 그 반대로 p,q의 값을 알려줄 수 없을 때 A가 이기는 것으로 한다. 

그리고 B는 A로부터 받은 값의 제곱을 m으로 나눈 나머지를 구하여 그 나머지가 a와 일치하는지 확인함으로써, A가 잘못 계산했는지 아니면 속였는지를 알 수 있다. 

4단계에서 B가 A로부터 x2, 또는 x2(1t)를 받는 경우, B는 x1의 값을 이용해 (a+ap) 또는 gcd(x1+x2,m) 또는gcd(x1+mx2,m)=gcd(x1x2,m)의 값을 구하면 p 또는 q이다. 

B가 A로부터 x1 또는 mx1을 받는 경우 B는 이 정보로부터 p,q의 값을 구할 수 없다. 그런데 A가 x1,mx1을 고를 확률과 x2,mx2고를 확률은 같으므로 이 동전 던지기는 공평하다.


참고자료:

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

반응형
Posted by skywalker222