现代密码学复习总结(六)密码技术应用

本文介绍了秘密共享技术,通过实例展示了如何利用该技术进行不经意传输,以及如何将其应用于电子投票系统以保证匿名性和安全性。同时讨论了零知识证明的概念,强调了最小泄露证明在保护隐私的同时防止欺诈。
摘要由CSDN通过智能技术生成

秘密共享

简单的说。
有一个秘密,分给了n个人。需要t个人在场才能解开,t-1则解不开。

检测结论(一)
当某t个人计算出的系数与另外t个人计算出的系数量不相等时,这两次人员中必有“欺骗者”。
检测结论(二)
当某t个人计算出的系数与另外t个人计算出的系数向量相等时,(几乎可以断定)这两次人员都是诚实的参与者。

引申的计算部分:给出n组(ID(k),h(ID(k)),据此求出线性方程的系数ai。
习题举例:

设:p=17;n=5;t=3;
(ID(1), h(ID(1)))=(1, 8);
(ID(2), h(ID(2)))=(2, 7);
(ID(3), h(ID(3)))=(3, 10);
(ID(4), h(ID(4)))=(4, 0);
(ID(5), h(ID(5)))=(5, 11)。
当第1位~第3位参与者同时到场,求共享的秘密h(x) = a0 + a1x + a2x^2 (mod 17)。

(一)代入数据:
8 = a0 + a1 + a2 mod 17		
7 = a0 + 2a1 + 4a2 mod 17	
10 = a0 + 3a1 + 9a2 mod 17	
(二)提系数成矩阵:
1 1 1 8
1 2 4 7
1 3 9 10
(三)化简,求解:
0 0 1 2
0 1 3 -1
1 1 1 8
解出:a2 = 2,代入原方程组:
6 = a0 + a1 mod 17
-1 = a0 + 2a1 mod 17
-8 = a0 + 3a1 mod 17
解出:a1 = -7、a0 = 13。

不经意传输

A向B传输,无论如何B收到的概率只有1/2。并且A不知道B是否收到。
举例:行贿。
设有两个大素数p和q。令N=pq。取整数x,1<x<N。令a=x2(mod N)。

结果一
已知N,求p和q困难。(大数分解)
结果二
a一共有4个(mod N)平方根:x;N-x;y;N-y。即:a ≡ x2 ≡ (N-x)2 ≡ y2 ≡ (N-y)2 (mod N)。
结果三
(1)如果已知{p,q,a},则可以求出a的4个(mod N)平方根{x,N-x,y,N-y} 。
(2)如果仅仅已知{N,a},则不能求出a的任何一个(mod N)平方根。
结果四
(1)如果已知{N,x,y}或已知{N,x,N-y}或已知{N,N-x,y}或已知{N,N-x,N-y},则可以求出p和q。
(2)如果仅仅已知{N,x,N-x}或仅仅已知{N, y,N-y} ,则不能求出p和q。

Rabin的不经意传输协议
(1)Alice取两个大素数p和q, {p,q}是秘密。
(2)Alice计算N=p·q,将N发送给Bob。
(3)Bob取定整数x,1<x<N,计算a=x2(mod N),并将a发送给Alice 。
(4)Alice根据结果三计算出a的4个(mod N)平方根{x,N-x,y,N-y} 。
(5)Alice在4个平方根{x,N-x,y,N-y}中随机地选择一个,并将它发送给Bob。
(6)Bob首先检查是否z2(mod N)=a。若是,则z是a的(mod N)平方根;
接下来,如果z=x或z=N-x,则无法求出p和q。反之是另外两个,则可以。
Bob选择x或N-x的概率为1/2,即,可求出秘密的概率为1/2。

电子投票

(一)投票人:投票内容m。随机整数R,计算C=(Re)·m(mod n)。发送C和自己的身份。
(二)选举委员会:检查:1、投票人的身份是否符合规定;2、投票人的身份先前是否已经用过。如果通过则标记已用过。计算T=Cd(mod n)。送还T。
(三)投票人:计算S=(R-1)·T(mod n)。检查是否Se(mod n)=m。若是,则将S作为选举委员会对投票内容m的签名;否则认为选举委员会在欺骗。
(四)投票人:联立成签名消息(m, S)。发送给选举委员会,完成投票。
(五)选举委员会:检查是否S=md(mod n)。若是,则(m, S)是一张经过签名的选票;否则认为投票者在欺骗。验票完成。公布所有的签名选票。
(六)投票人:检查所有的签名选票中是否有一张为(m, S)。
(七)附加步骤。
投票人:若发现榜上没有(m, S) ,则可以持(m, S)质询选举委员会,并将(m, S) 公布于众。
任何人在见到(m, S)后,都可以计算出Se(mod n)=m。这就是说,任何人都知道(m, S) 是被选举委员会签名的票。选举委员会一定败诉。
满足:合法性、唯一性、匿名性、不可追踪性。不满足:可验证性。

此时,投票人可以进行攻击。
(1)投票人选择一个签名S,用选举委员会的公钥(n,e),计算投票内容m=Se(mod n)。
(2)投票人绕过投票过程的第(一)、(二)、(三)步,直接进入投票过程的第(四)步,将(m, S) 发送给选举委员会,完成投票。
(3)选举委员会进入投票过程的第(五)步, 验证了S=md(mod n),攻击成功。

不过这种攻击方式具有局限性:注意到投票人是先选定了签名S的值,然后反过来对投票内容m进行伪造:m=Se(mod n)。当规定投票内容只能是少数几个值时,伪造的投票内容m很难恰好是这几个值。同样,如果先选定投票内容m,然后对签名S的值进行伪造,则投票人不知道选举委员会的私钥d,无法计算S。

在此基础上,对电子投票的流程协议进行了改进。
改进的协议克服了原来协议不满足可验证性的缺陷,并且能够抵抗投票人攻击。
改进的协议额外使用一个公开的杂凑函数H和一个随机数U,并在协议中用H(m, U)来代替m。
(一)投票人:投票内容m。随机整数R和U,计算C=(Re)·H(m, U)(mod n)。发送C和自己的身份。
(二)不变。
(三)投票人:计算S=(R-1)·T(mod n)。检查是否Se(mod n)=H(m, U)。若是,则将S作为选举委员会对投票内容m的签名;否则认为选举委员会在欺骗。
(四)投票人:联立成签名消息(m, U, S)。发送给选举委员会,完成投票。
(五)选举委员会:检查是否S=H(m, U)d(mod n)。若是,则(m, S)是一张经过签名的选票;否则认为投票者在欺骗。验票完成。公布所有的签名选票。
(六)投票人:检查所有的签名选票中是否有一张为(m, S)。
(七)附加步骤。
投票人:若发现榜上没有(m, S) ,则可以持(m, S)质询选举委员会,并将(m, S) 公布于众。
任何人在见到(m, S)后,都可以计算出Se(mod n)=m。这就是说,任何人都知道(m, S) 是被选举委员会签名的票。选举委员会一定败诉。
可验证性:满足。

当投票人发现榜上没有(m, U, S),则将(m, U, S)公布于众。任何人都可以计算出Se(mod n)=H(m, U)。m可能相同,但U不会一样。因此S不会相同。
此时攻击无效。给定S则面临根据H(m, U)计算m和U,显然不可能。同理,后者无法计算S。

零知识证明

示证者:P(prover)。
验证者:V(verifier)。
P知道某个秘密;他想让V相信他知道该秘密。
最大泄露证明:完整地泄露该秘密。
最小泄露证明: P使用一种证明方法,让V相信他知道该秘密,但对该秘密的泄露程度最小。

最小泄露证明满足:
(1)P无法欺骗V。 (2)V无法欺骗P。
应由V提问,P应答。每次提问,如果P知道秘密,则答对;若不知道,则答对的概率仅为1/2。

实施身份证明的协议如下。
m=p1·p2,随机数y,y2=v,以v作为P的公钥,计算满足下式的最小的正整数s作为P的私钥:s=(1/v)1/2(mod m)。
(1) P取随机数r(<m),计算x=r2(mod m),将x送给V。
(2) V将一随机比特b送给P。
(3)若b=0,则P将r送给V;若b=1,则P将y=r·s送给V。
(4)若b=0,则V证实x=r2(mod m);若b=1,则V证实x=y^2·v(mod m)。
P和V可将此协议重复t次,直到B相信A知道s为止。

安全性:
(1)V得不到s的任何信息。
(2)单次P欺骗V的概率为1/2,重复t次则为(1/2)t

  • 24
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值