Feige、Fiat和Shamir设计了一个零知识身份认证协议——Feige-Fiat-Shamir零知识身份认证协议。可信赖仲裁方选定一个随机模数n=p1×p2,p1、p2为两个大素数。实际中n至少为512 bit,尽量长达1 024 bit。仲裁方可实施公钥和私钥的分配。他产生随机数v(v为对模n的二次剩余)。换言之,选择v使得x2=v mod n有一个解并且v-1 mod n存在。以v作为被验证方的公钥,而后计算最小的整数s:s≡sqrt(v-1)mod n,将它作为被验证方P的私人密钥而分发给他。实施身份证明的协议如下:
(1)用户P取随机数r(r<m),计算x=r2 mod n,发送给验证方V。
(2)V将随机比特b发送给P。
(3)若b=0,则P将r发送给V;若b=1,则将y=rs mod n发送给V。
(4)若b=0,则V验证x=r2 mod n,从而证明P知道sqrt(x);若b=1,则V验证x=y2v mod n,从而证明P知道s。(www.daowen.com)
这是一轮认证,P和V可将此协议重复t次,直到V确信P知道s为止。
安全性讨论如下:
(1)P欺骗V的可能性。P不知道s,他也可选取随机数r,将x=r2 mod n发给V,V发送随机比特b给P,P可将r送出。当b=0时,则V让P通过检验而受骗;当b=1时,则V可发现P不知道s。V受骗的概率为1/2,但连续t次受骗的概率将仅为2-t。
(2)V伪装P的可能性。V和其他验证者W开始一个协议。第一步他可用P用过的随机数r,若W所选的b值恰与以前发给P的一样,则V可将在第(3)步所发的r或y重发给W,从而可成功地伪装P。但W可能随机地选b为0或1,故伪装成功的概率为1/2,执行t次,则伪装成功的概率为2-t。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。