基于RSA算法的零知识证明

场景:PV证明他知道用户S的私钥(e,d,N)

证明步骤(零知识)

1.P,V共同选定随机数ab满足abe mod N

2.P,V共同产生一个随机密文C

3.P计算:M C^d mod NX M^a mod N 并将X传给V

4.V计算并判别X^b mod N = C 是否成立

 

零知识证明旨在证明过程中不让私密进行传输:

M C^d mod N

C M^e mod N

将上面的第二个式子转换一下,使V在解密的时候不用私密d就可以解密,所以P要在中间过程加一个步骤:X M^a mod N 并将X传给V;V收到X,判别C = X^b mod N是否成立。其实整个过程还是RSA加密解密的过程,只是中间加个环节替换掉d,使V不用d就可以解密。

C M^e mod N  ==> X M^a mod N     (abe mod N)
                                   C = X^b mod N

 

彻底分析透彻:

“≡”的理解:同余符号就是前后两者与除以同一个数余数一样呗,5mod3=2;8mod3=2;11mod3=2;

所以5≡8mod3;5≡11mod3。可以5和8都是相差3的倍数关系,所以

M C^d mod N,意思是M=C^d+k*N....