我的隐私计算学习——秘密共享

本篇是我笔记目录里的安全保护技术(二),前篇可见:

隐私计算安全保护技术(一):我的隐私计算学习——混淆电路-CSDN博客

 

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。


(二)秘密共享

秘密共享技术发明时间较早,并且是最早在商业环境中应用的多方安全计算技术之一,是隐私计算技术中相对成熟的技术。秘密共享方案中最著名的是 Shamir 门限秘密共享方案,这个方案有两个参数 n 和 t,因此也写作 (t,n)-门限方案。n 表示秘密分割参与者的数量,t 即门限值,表示至少几个参与者聚到一起才可以恢复秘密信息。秘密共享的内容比较多,毕竟它是隐私计算领域常用的关键技术。常见的秘密分享协议包括三种:Shamir 秘密分享、加性秘密分享、复制秘密分享。详情可见:  MPC基本概念和基础组件 

image-20230408135629183

考虑作恶的参与方会将不正确的 share 分享给其他参与方,所以引入认证性,不同的协议采用不同的认证方法就能够验证 share 是否正确。例如,当采用加法秘密分享时,通过不同的 IT-MAC 进行验证,可以分为 BDOZ 和 SPDZ 两种协议。

image-20230505112944999

image-20230408135836267

— — 如何利用秘密共享进行隐私计算呢?看以下两个例子:

1. 秘密共享原理——加法: 以(2,2)-门限的加法为例,假设 Alice 和 Bob 为输入方,Alice拥有隐私输入a,Bob 拥有隐私输入b,Uzer为结果使用方,设计两个计算方 CP1 和 CP2,如图。计算过程如下(实际过程比较复杂,以下描述主要用于辅助理解其基本思想)。

image-20230313113307382

2. 秘密共享原理——乘法: 再以乘法为例,假设 Alice和 Bob 为输人方,Alice 拥有隐私输入a,Bob 拥有隐私输入b,Uzer 为结果使用方,设计4个计算方CP1、CP2、CP3和CP4,如图。计算过程如下。

image-20230313114027714

秘密共享技术更详尽的原理可见: [ 【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制_mpc shamir门限-CSDN博客 ] [ 【隐私计算笔谈】MPC系列专题(十五):三方复制秘密分享_PlatON技术团队的博客-CSDN博客 ]

(这个专栏的资料还是不错的,我当时看的时候还是免费的,结果现在要会员才能看全文了……大家结合自己情况来,也可以看其他一些资料做补充,网上关于秘密分享的好文章还是很多的。)

— — 然而 Shamir 门限秘密共享方案并不足够安全,为什么?

image-20230313112205110

如果仔细思考上述秘密分发的过程,就会发现其存在诸多风险。如果将该服务中的角色分为 Dealer 和众多的 Player,Dealer 负责秘密的分发和恢复,而Player 作为秘密分片的持有人。以(2,3)-门限为例,可能存在的风险如下。

  • Dealer作恶,比如给 Player1 和 Player2 的分片是正常的,而给 Player3 的分片是错误的,这样发送给3个 Player 的秘密分片并不能恢复出一致的秘密。

  • Player 作恶,在恢复阶段发送的分片是错误的,这样恢复的秘密也是错误的。

这意味着 Shamir 门限秘密共享方案不够安全。因此,Chor、Goldwasser、Micali、Awerbuch 提出了可验证密钥分享(Verifiable Secret Sharing,VSS),并给出了一个基于大数分解难题的常数轮交互方案。后来,研究者又提出优化的非交互式可验证秘密共享方案,比如目前应用比较广泛的 Feldman-VSS 和 Pedersen-VSS 门限方案

开源框架JIFF

        JIFF是波士顿大学的研究者开发的通用型隐私计算开源框架,是一个 JavaScript 库,可以运行在浏览器中或者通过 Node.js 运行在服务器端。相关代码在GitHub上开源 [ https://github.com/multiparty/jiff ]。JIFF的安全模型基于半诚实安全假设。JIFF让开发者在不熟悉隐私计算底层算法的前提下也能实现应用。

        JIFF使用一个中心化的后勤服务器作为消息中介来提高可靠性和容错性。这样,JIFF 能够支持异步计算,也就是说即使在一些参与方连接不稳定的情况下(动态加入或者离开)也可以完成计算。默认情况下,这个后勤服务器可以看到加密数据流但不参与隐私计算。我们可以根据实际情况将后勤服务器配置成数据提供方或者计算参与方。该后勤服务器主要负责消息通知和任务编排,比如当有参与方加入或者退出时,通知其他参与方,以及帮助交换传递公钥信息。参与方在连接后勤服务器时,如果参与方客户端没有为自己指定 ID,后勤服务器会为其分配一个ID。一般而言,这个ID是从1开始的整型数。后勤服务器自身也有一个ID,一般为s1。

image-20230313133611770

        JIFF 支持使用并行计算来提升性能。但要注意以下几点: (1)假设向每个参与方分配 10 台机器来并行进行某些计算,如果秘密共享的门限值是3,并且参与的每台机器都获得该秘密的份额,则单一参与方就足以恢复秘密!所以要仔细设计计算协议,来自同一方的两台机器不能获得来自同一输入方的多个秘密份额;或者,如果复制份额很重要,所有该参与方的机器应获得相同的秘密份额,或者协议每一台机器使用独立的秘密共享方案。 (2)对于复杂的功能,单台机器计算的结果可能需要与其他机器的结果进行通信或聚合,这些结果还可能会被反馈到并行计算的另一个阶段。部分输出或中间输出可能泄露的信息比最终输出的信息多得多,因此向任何一方泄露信息都是不安全的。

运行JIFF框架实例的时候,需要分别运行服务器、Alice的计算程序和Bob的计算程序!

开源框架FRESCO

        FRESCO 是一个基于Java语言开发的隐私计算框架。相关代码在GitHub上开源:[ https://github.com/aicis/fresco ]

        与JIFF框架不同,FRESCO框架并没有设计服务器来帮助进行任务编排。同时,FRESCO框架对底层协议通过抽象化接口封装,使得其可以支持多种不同的协议,其中最主要的有能对抗恶意敌方的SPDZ协议以及支持两方半诚实模型的TinyTables协议。目前,FRESCO框架下的SPDZ协议只支持算术运算,TinyTables 协议只支持布尔运算。

与JIFF框架类似的是,每个参与方也都使用一个ID编号,隐私数据的输入和输出过程中都需要与ID编号进行绑定,明确隐私数据的来源以及最终隐私计算结果的去向。

总结:

        从秘密共享的原理可知,相比明文计算,使用了秘密共享的应用程序之间的网络通信次数和通信量会大大增加。为此,研究者们在秘密共享的基础上提出了很多优化协议,比如 GMW 协议、BGW 协议和 SPDZ 协议等。下面会简单介绍这几个优化协议。在秘密共享的实际应用中,需要综合考虑门限设置以及安全性的要求。

秘密共享的几大优化协议:

  1. GMW协议

    GMW 协议允许任意数量的参与方安全地计算一个可以表示为布尔电路或算术电路的函数。以布尔电路为例,所有参与方使用基于异或门的SS方案共享输入,各参与方之间交互计算结果,逐门计算。GMW协议在使用布尔电路进行计算时与Yao的GC协议类似,对于电路中的异或门,各方可以分别使用SS进行分享。各参与方的本地计算量可以忽略不计。而对于与门,需要各参与方之间使用OT或其扩展进行通信和计算。因此,GMW协议的性能取决于电路中与门的总数(OT的数量)和电路的深度。基于GMW协议的计算不需要对真值表进行混淆,只需要进行异或门和与门运算,所以不需要进行对称的加解密操作。此外,GMW协议允许预先计算所有的加密操作,但在在线阶段需要多方进行多轮交互。因此,GMW协议在低延迟网络中取得了良好的性能,可关注、学习。

  2. BGW协议

    BGW 也是支持多方安全计算的协议。BGW协议基于 Shamir 的(t,n)门限秘密共享机制,总体结构与GMW协议类似。各方最初使用线性SS方案(通常使用Shamir's SS)共享输入,然后逐门计算结果。一般来说,BGW协议可以用来运算任何算术电路。与GMW协议类似,对于加法,计算是可以在本地进行的,而对于乘法,各方需要交互。但是,GMW 和 BGW协议在交互形式上有所不同。BGW协议不是使用OT进行通信的,而是依靠线性SS(如Shamir'SS)来进行乘法运算的。BGW协议依靠的是诚实多数制。BGW协议可以对抗少于 n/2 个腐坏方(即被敌方控制的参与方)的半诚实敌手,对抗少于 n/3 个腐坏方的恶意敌手。

    GMW 协议和 BGW 协议的细节详情可见:【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议_PlatON技术团队的博客-CSDN博客

  3. SPDZ协议

    SPDZ是 Ivan Damgard 等提出的一种涵盖恶意多数制情况的安全计算协议,能够支持两方以上的算术电路。SPDZ将隐私计算分为离线阶段和在线阶段。其优势在于可以将大量计算(比如公钥密码计算)放在离线阶段完成。SPDZ在离线阶段使用了同态加密技术来进行乘法运算。SPDZ的在线阶段遵循GMW范式,在有限域上使用秘密共享来确保安全。如果有n个参与方,极端情况下,SPDZ最多可以对抗 n-1 个恶意敌手(即只有一个可信参与方)。


10月份新开了一个GitHub账号,里面已放了一些密码学,隐私计算电子书资料了,之后会整理一些我做过的、或是我觉得不错的论文复现、代码项目也放上去,欢迎一起交流!Ataraxia-github (Ataraxia-github) / Repositories · GitHub 

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值