密码学:安全多方计算--比特与(茫然传输协议和数字签名)

数字签名

举个例子

Alice一个私钥,所有人都有一个公钥。

Alice发布自己的消息,并给自己的消息签名,用她的私钥去加密。

每个人都可以根据公钥去判断Alice消息的正确性。

这样Alice的签名就不能抵赖,不能反悔。

具体场景案例

Alice和Bob想知道对方是否爱着自己。

有以下场景

Alice 发送0或1,0表示不爱,1表示爱。

Bob也一样,发送0或1,0表示不爱,1表示爱。

现在的问题就转换成了双方想知道一个函数f的结果

函数f的定义如下:f(A,B)=A&B;

存在问题

这样看似完美解决了问题,实际产生了新的问题。

如果双方互相喜欢,那当然皆大欢喜。如果双方不互相喜欢呢,那么被“拒绝”的一方岂不是很尴尬。

传统方案

比较简单的方法,建立一个第三方,我每次把消息发给第三方,让第三方把最后的结果发给双方,这样就避免了尴尬,但是还是需要反思,能不能不存在第三方。

安全多方计算

主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。

当然所有安全都有前提条件

一个安全多方计算协议,如果对于拥有无限计算能力攻击者而言是安全的,则称作是信息论安全的或无条件安全的;如果对于拥有多项式计算能力的攻击者是安全的,则称为是密码学安全的或条件安全的。

已有的结果证明了在无条件安全模型下,当且仅当恶意参与者的人数少于总人数的1/3时,安全的方案才存在。而在条件安全模型下,当且仅当恶意参与者的人数少于总人数的一半时,安全的方案才存在。

也就是说,这个最终的需求是为了满足在没有第三方的条件下,达到和有第三方一样的效果。

茫然传输协议(OT协议)

A向B发送消息,B有可能收到A的消息,也可能没收到B的消息。

而发送者A对于发送消息的两种可能性是不知道的,也就是说是茫然的。

为了清晰的说明,换回上面的案例。

Alice向Bob表示爱意,M0表示不爱,M1表示爱。如果Bob不爱,那么输出C变为M0,如果Bob爱,那么C变为M1,此时Alice对Bob的心意是茫然的。用数学公式表达

C:=OT((A0,A1),B),注意接受方且能仅能获取A0和A1.

下面就是如何产生这个OT函数。

实现方法一:

1.Alice写好两条消息即爱与不爱,随机生成两对密钥(sk0,pk0),(sk1,pk1),用sk0和sk1分别加密,把pk0和pk1发送给Bob,Bob接受时,根据爱与不爱的选择pk0或pk1,同时生成一个随机的对称密钥K,将结果x:Enc(pkx,K)加密发送给Alice。

2.分析以上情景,不难分析出两个情况。

当Bob的选择为0时,K0=K,当选择为1时K1=K,

然后Alice接受方计算有:

K0:=Dec(sk0,X),K1:=Dec(sk1,X)

C0:=E(K0,A0),C1:=E(K1,A1)

从而Ab=D(K,Cx),x=0或1。

实现方法二:

利用OT协议:

Alice消息设置为(A0,A1)即为(0,A),Bob发送自己的消息,即为1/2-OT协议,当且仅当A=B=1时,Bob所得的结果才会为1,所以Bob的所得同比特与运算A&B的结果相等,Bob输出自己的所得与运算作为运算结果。

为A&B=OT((0,A),B),即实现了上述功能。

你可能感兴趣的:(MIMA,ENCRY)