多方安全计算
到目前为止,我们讨论了在私钥、公钥背景下,保证通信保密的安全性和关于消息真实性认证的安全性的算法。下面我们要讨论关于计算的安全性的算法。
双方安全计算(Secure 2-Party Computation)
作为一个motivating example,我们考虑姚期智在1986年提出的百万富翁问题(Yao's Millionare's Problem)。有两个百万富翁,他们手上分别有和的财产。他们想要比较谁的财产更多,却不想暴露自己手上财产的具体数量。
这个问题可以理解为一个关于计算的安全性的问题。双方想要在保护的信息的前提下,计算函数。所以直观上,关于百万富翁问题的一个安全的算法应当保证在双方都能正确计算得到以后,不泄露除了以外的任何信息(这一信息量应当恰好是1 bit)。例如,双方都公开自己的财产然后比较大小就是一个绝对糟糕的算法,因为它们把信息都暴露完了。
另一个与此类似的问题是Private Set Intersection(PSI),双方手上分别有一个私密的集合,双方想要安全地共享互相集合的交集,但不想暴露交集以外的信息。这是一个关于安全计算的问题。
我们可以把上述这类问题抽象成为“双方安全计算问题”:两个对象分别掌握二进制串,对于一个公开的函数,两人想要经过几轮交互然后能分别在自己的设备上输出,但不暴露除此以外的任何信息。(注意在上述定义中,我们认为是公开的。事实上,也可以是私密的,比如由参与计算的一方来提供这个。为了做到这一点,只需把定义为某个通用图灵机上的,这样只需提供函数的一方输入这个参数给通用图灵机,就可以实现的私密化了。)
双方安全计算的安全性可以这样定义:假设原始交互过程为,我们构造这样一个交互过程,其中Alice和Bob分别把发给一个可信任的第三方Ideal-Functionality,它计算出并发还给Alice和Bob,在此过程中,一个只知道和但不知道的simulator与Bob交互。如果存在这样一个simulator,使得Bob无法区分当前交互过程是还是,就称这是一个安全的方案。
多方安全计算(Secure Multi-Party Computation)
上述问题可以拓展到多方的情形。假设有个对象分别掌握各自的信息,对于一个公开的函数,众人想要在不暴露自己的其它任何信息的前提下计算。
对于这个情形,有两种定义问题的方式。一种方式是,众人在经过多轮交互以后,每个人都输出;另一种方式是,每个人输出不同的结果。显然,后面那种定义方式包含了前面那种定义方式,但事实上通过第一种定义方式我们也可以给出第二种定义方式的一种实现:我们假设每个用户手上除了有信息以外,还有一个随机串。定义。如果每个用户都输出,那么根据的结果只能根据自己手上的随机串还原出信息,而不能还原出其它任何信息(以大于negligible的概率),这相当于是每个用户输出了一个不同的结果。
多方安全计算中的敌手
一个重要的问题是,在多方安全计算中,我们应当假设敌手拥有怎样的能力呢?在传统的加密和认证的背景下,我们假设通信双方是好人,敌手在中间试图窃取、篡改好友双方的通信。但在安全计算中,参与计算的其它人可能也不是好人,他们试图利用这一交互、计算的过程窃取我们手上的信息。因此,关于敌手最强的假设就是敌手与除了我以外的所有参与计算的人勾结。基于这样的假设我们能给出安全性最强的多方安全计算方案,但这样的方案通常效率不高。所以有时我们会弱化假设,弱化为“在个人中有不超过个敌手”等等。
具体的双方安全计算协议
暗恋问题(The Dating Problem)
下面我们来构造具体的双方安全计算方案。第一个问题是,这可以理解为Alice暗恋Bob,但只想在Bob也暗恋Alice的情况下暴露“自己喜欢Bob”这一信息,如果Bob并不喜欢Alice就隐藏这一信息。也即,只有当且时才为,否则双方只知道,并不知道谁暗恋谁。
为了完成以上问题的安全计算,Alice和Bob可以用以下协议,玩一个纸牌游戏:Alice有一张0和一张1,Bob有一张0和一张1,还有一张1初始时背面朝上放在中间(位置3)。Alice把它的两张牌背面向上放在位置1和位置2,如果她喜欢Bob就把1放在右边,否则把1放在左边;Bob也把两张牌背面向上放在位置4和位置5,如果他喜欢Alice就把1放在左边,否则放在右边。接着两人都对这五张牌做轮换shuffle(切牌,不改变牌的相对顺序)。我们发现,假如两个人都喜欢对方,那么牌的顺序应当为0 1 1 1 0及其等价排列(1 1 1 0 0,1 1 0 0 1,1 0 0 1 1,0 0 1 1 1,0 1 1 1 0),如果两人至少有一人不喜欢,那么shuffle前是1 0 1 1 0,1 0 1 0 1,0 1 1 0 1,它们落在同一个shuffle等价类中(1 0 1 1 0,0 1 1 0 1,1 1 0 1 0,1 0 1 0 1,0 1 0 1 1)。由此可见,两人如果至少有一人不喜欢对方,则无法区分到底是谁不喜欢对方,可见这是一个安全的协议。
PSI
PSI问题可以用以下协议:
假设Alice手上的集合是,Bob手上的集合是,我们公开一个collision-resistant的哈希函数。Alice随机sample一个,把给Bob;Bob随机sample一个,在接收到Alice的信息以后给Alice。对称地,Bob把发给Alice,Alice计算出,并发还给Bob。于是,两人都可以在本地计算出,于是根据collision-resistant以及Diffie-Hellman假设,这是一个安全的方案。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2023-12-23 有条件凸优化问题