• Data security.隐私保护-多方安全计算技术基础



    Data security.隐私保护-多方安全计算技术基础


    一、多方安全计算的背景

    1.定义

    多方安全计算(SMPC)用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。多方安全计算在保证参与方获得正确结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝对的控制权。

    e.g.在一个分布式的网络中,有n个互不信任的参与方P1、P2、…、Pn,每个参与方Pi持有秘密数据xi (i=1,2,3,…,n)。这n个参与方执行既定函数,f(x1,x2,…,xn)→(y1,y2,…,yn),其中yi为参与方Pi得到的输出结果。任意参与方Pi除yi之外无法获得关于其他参与方Pj(i!=j)的任何输入信息。如果y1=y2=…=yn,则可以简单表示为f(x1,x2,…,xn)→y。

    2.分类

    2.1不诚实参与方数量

    设t为不诚实的参与方的数量,n为总的参与方的数量
    在这里插入图片描述

    • 诚实大多数:t
    • 不诚实大多数:t≥n/2(通常t=n-1)

    2.2敌手行为

    • 半诚实敌手
      被动攻击、按照协议规定执行、可根据协议记录攻击隐私性
    • 恶意敌手
      主动攻击、执行任意攻击、发送任意消息

    2.3敌手计算能力

    • 概率多项式时间
      计算安全协议。不诚实大多数、诚实大多数
    • 无限计算能力
      信息论安全协议。仅诚实大多数

    2.4输出可达性

    在不诚实大多数(t≥n/2)下可达到:

    • 中止安全(security with abort):恶意实体获得输出后,可终止协议,使诚实实体不能获得输出

    在诚实大多数(t

    • 公平性(Fairness):如果一个实体获得输出,那么所有实体获得输出
    • 保证输出传送(Guaranteed output delivery):所有实体一定获得输出

    大部分高效的MPC协议考虑中止安全性

    2.5计算模型

    大部分MPC协议考虑电路模型:

    • 布尔电路:由逻辑门(XOR、AND)组成的电路
    • 算术电路:域/环上操作(ADD、MULT)组成的电路

    RAM-MPC研究相对较少,适合数据库输入:

    • RAM程序:由读、写操作组成的程序

    2.6腐化策略(攻击者确定攻破并控制参与方的策略)

    • 静态腐化(static corruption):被腐化实体在协议运行前确定
    • 自适应腐化(adaptive corruption):敌手在协议运行过程中自适应决定腐化哪些实体

    2.7通信网络

    • 同步网络:同一个交互轮的消息在固定延时 Δ \Delta Δ内一定到达
    • 异步网络:没有要求同步时钟,也没有要求预先固定的网络延时,更加现实的网络假设(要求t

    实际高效的MPC协议主要考虑静态腐化与同步网络

    3.设计方法

    3.1秘密共享(Secret Sharing)

    秘密共享通过将秘密信息分割成若干的秘密份额并分发给多人掌管,以此来达到风险分散和容忍入侵的目的。一般来说,一个秘密共享方案由一个秘密分割算法和一个秘密重组算法构成,包含秘密分发者、秘密份额持有者和接收者三类角色。秘密分发者持有秘密信息并且负责执行秘密分割算法,并将秘密份额分发给秘密份额持有者。接收者是试图重组秘密信息的一方。当接收者希望重组秘密信息时,将从一组授权的秘密份额持有者中收集秘密份额,并执行秘密重组算法计算秘密信息,当有充足的秘密份额就可以重新恢复出秘密信息。一个参与方可以承担多个角色。

    • 通信带宽低、吞吐率高
    • 轮数与电路深度成线性关系

    只适用于低延迟

    3.2混淆电路(Garbled Circuit)

    混淆电路是由姚期智先生提出的针对半诚实敌手模型的两方安全计算协议,核心思想是将任何函数的计算问题转化为由“与门”、“或门”和“非门”组成的布尔逻辑电路,再利用加密技术构建加密版本的布尔逻辑电路。姚氏混淆电路包含布尔逻辑电路构建和布尔逻辑电路计算两部分。

    • 通信带宽高
    • 常数轮复杂度

    可用于高延迟

    部分MPC协议融合了上述两种设计方法

    不经意传输(Oblivious Transfer)

    如下图所示,该协议中发送方Alice拥有两个秘密消息x0和x1,接收者Bob选择并且仅能恢复其中的一个秘密消息xb(b∈{0,1}),但无法得到关于x1-b的任何消息,Alice无法知晓接收方选择的是哪一个消息。
    在这里插入图片描述

    二、混淆电路

    1.基本概念

    在这里插入图片描述
    如图,可以把混淆电路理解为有四个算法:首先是Garble(混淆)算法,它把要计算的函数对应的电路C作为输入,输出被混淆的电路GC、解码信息d和编码信息e;之后,将输入信息x和编码信息e作为输入,通过Encode(编码)算法,得到输出X,即加密后的输入信息;之后,Eval(求解)算法把被混淆的电路GC和加密后的输入信息X作为输入,得到加密后的输出信息Y;最后,通过Decode(解码)算法,以Y和d作为输入解码得到解码后的输出y。

    2.不经意传输(OT)

    在这里插入图片描述
    OT: 协议中发送方Alice拥有两个秘密消息m0和m1,接收者Bob选择并且仅能恢复其中的一个秘密消息mb(b∈{0,1}),但无法得到关于m1-b的任何消息,Alice无法知晓接收方选择的是哪一个消息。
    ROT: 是OT的变形,相较于OT,功能基本相同,但是消息是随机的,而接收者的选择也是随机的,而不是自选。
    COT: 相关性的OT,功能也等价于OT,但是消息r和接受者的选择满足一个相关性。
    在这里插入图片描述

    3.不经意传输扩展

    在这里插入图片描述

    • IKNP类
    • PCG类
    • PCF类

    目前,计算几百/几千个OTs,IKNP类协议效率更高;计算上万个OTs,PCG类协议效率更高

    4.不经意线性函数计算

    在这里插入图片描述
    协议比较:
    在这里插入图片描述

    tip:LWE为基于容错学习假设,LPN为基于带噪声学习假设(可用于对抗量子计算攻击者)

    5.Yao两方安全计算协议基本框架

    在这里插入图片描述

    6.恶意敌手模型下2PC协议

    Yao 2PC协议在半诚实敌手模型下安全,那么如何实现恶意敌手模型下2PC协议?即如何检测Garbler的恶意行为?可以采用Cut-and-Choose(C&C)方法

    6.1电路级C&C

    在这里插入图片描述

    • Garbler计算n个GCs
    • Evaluator随机选择一半GCs打开检查正确性
    • 如果都通过检查,则剩下一半的GCs用于计算

    6.2门级C&C

    在这里插入图片描述

    • Garbler计算n个混淆AND门
    • Evaluator随机选择一半打开检查正确性
    • 如果都通过检查,则剩下一半的混淆AND门粘合成一个GC

    认证混淆电路方法

    而目前,认证混淆电路方法效率会优于C&C方法,得到更多的使用。

    • 通过信息论消息认证码(IT-MAC)实现电路认证,保证计算结果正确性
    • 通过混淆电路的分布式生成,抵抗选择失败攻击(敌手猜测部分比特,观察协议是否中止)

    在这里插入图片描述

    7.常数轮多方安全计算协议

    • 核心问题:存在多个Garbler,如何抵抗合谋攻击?
    • 解决思路:所有参与方共同计算混淆电路

    在这里插入图片描述

    三、秘密分享

    1.线性秘密分享

    方案:

    • Share(x)→[x]=(x1,…,xn):将秘密x拆分成多个share,分给多个参与方
    • Reconstruct([x],i)→x:一定数量的参与方可以通过重构算法恢复出秘密x
    • Open([x])→x:拆分出的多个share一起可以还原秘密x

    性质:

    • 割裂性:拥有部分key的参与方仅靠自身无法知道最终正确的结果,必须联合多个参与方
    • 决定性:对于严格的模式,必须所有参与方联合,才具有决定性(可恢复秘密);对于阈值的模式,需要至少约定数量的参与方联合,才具有决定性(可恢复秘密)
    • 加法同态性:[y]=∑ch*[xh]+c0(只需本地计算,无需通信)

    2.MPC几类常用秘密分享方案

    • 加法秘密分享 (常用于不诚实大多数MPC)
    • Shamir秘密分享(阈值的秘密分享)(常用于诚实大多数MPC)
    • 复制秘密分享
    • 打包秘密分享

    秘密分享方案详解

    3.基于秘密分享的MPC协议框架

    半诚实MPC协议的设计基本思路: 所有电路线值均被线性秘密分享,保证隐私性

    • 输入处理:对于Pi的每一个输入x,Pi运行[x]←Share(x)
    • 电路计算:

    在这里插入图片描述

    • 输出处理:对于Pi的每个输出y,所有参与方运行y=Reconstruct([y],i)

  • 相关阅读:
    Anaconda3安装部署(二) 百篇文章学PyQT
    数据大屏定时请求后端数据
    9、设计模式之组合模式(Composite)
    FL Studio选购指南:新手小白应该选择哪个版本FL Studio?
    SpringBoot 03: 常用web组件 - - - 拦截器 + Servlet + 过滤器
    element ui中el-form-item的属性rules的用法
    生成对抗模型
    Qt系列-常用控件使用整理
    Redis的发布与订阅
    was下log4j设置日志不输出问题
  • 原文地址:https://blog.csdn.net/qq_51352378/article/details/133683756