在不可信中创建信任,安全多方计算技术探秘

admin 2022年7月12日22:00:26评论16 views字数 3585阅读11分57秒阅读模式

在不可信中创建信任,安全多方计算技术探秘

随着信息技术的快速发展,全球数据爆发式增长,海量聚集。数据作为新型生产要素,蕴藏着巨大的社会经济价值,被誉为 “新时代的石油”。数据要素价值的充分释放基于数据的开放、共享和流通,然而近年来数据泄漏事件频发,俨然成为安全的“重灾区”。这样的情况下,隐私计算应运而生。


2021年,安恒信息正式发布AiLand数据安全岛平台,通过综合应用安全多方计算,可信执行环境,同态加密,联邦学习,区块链算等多种前沿技术以实现共享数据的所有权和使用权分离,确保数据 “可用不可见”。其中运用的隐私计算技术包含哪些呢?之前小编在《千亿风口背后:TEE的前世今生》(点击标题查看文章)中为大家介绍了隐私计算的一个方向——可信执行环境技术(TEE)。今天,小编继续为大家另一个方向:安全多方计算(MPC),它作为通用的密码原语,是目前国际密码学界的研究热点之一。


MPC能解决什么问题

MPC是一大类不同技术的总称。这类技术适用的是由多方分别提供数据进行联合计算的应用场景。主要解决的问题是在保证各方的原始数据不被泄露的前提下,完成联合计算任务,得到正确的结果。因此即使多方互不信任,也能一起合作。

MPC的架构

一个MPC系统,通常包含:参与方(数据提供方、算法提供方、结果使用方)、计算方、以及调度方。

参与方

数据提供方提供被计算的数据。

算法提供方提供对数据进行处理的算法。

结果使用方获得MPC计算的最终结果。

计算方

由多个分布式的计算节点构成。不同的计算节点执行相应的、独立的计算任务。不同的计算节点可以部署在不同的参与方中。

调度方

根据需要执行的算法、数据、以及计算方的情况(例如节点数量、计算资源等)调度计算节点执行MPC计算任务。

一个MPC系统,可以是中心化的部署架构,也可以是完全分布式的。分布式的MPC,可以将每个计算节点部署在每个用户域中。

在不可信中创建信任,安全多方计算技术探秘

中心化架构部署

在不可信中创建信任,安全多方计算技术探秘

分布式架构部署


MPC计算任务的下发与执行框架

按照要求部署好了MPC系统后,要执行一个计算任务可以分为两个阶段:编译阶段、以及计算阶段。

在不可信中创建信任,安全多方计算技术探秘

计算任务执行图

编译阶段

编译阶段由MPC任务调度方执行。目的是将不同的计算任务转换成满足MPC安全性要求的、可以被计算节点直接执行的计算模型。这个转换分成两个部分完成。

1. MPC协议的选择。任务调度方会先对计算任务进行拆分,依次确定完成计算任务所需的复杂算子、基础算子。然后根据计算参数选择合适的MPC协议实现对应的基础算子。

2. 计算模型的构建。基于不同的MPC协议,实现不同的基础算子,构建出复杂算子的功能,进一步组合得到计算任务对应的完整计算模型。

计算阶段

计算阶段由MPC计算方执行。基于数据提供方提供的数据,由多个计算节点联合运行计算模型,得到正确的计算结果。安全的计算过程由编译阶段生成的计算模型保证,其需要满足两个特性:

1. 数据源的“可用不可见”:源数据不能被除了自己以外的任何参与方通过任何方式获得。

2. 结果数据的正确性:结果方获得的结果数据需要是正确的。


MPC实现协议的简介

MPC系统的安全性基于计算模型的安全性。计算模型是由不同的多方安全计算协议扩展组合而成。因此,MPC的安全计算的核心是底层的多方安全计算协议的安全性。主流的多方安全计算协议包含基于不经意传输的MPC协议,基于混淆电路的MPC协议,基于秘密共享的MPC协议,等。不同的安全多方计算协议的统一的目的是:参与协议的多方在无法获取其他参与方的源数据的前提下,完成信息的传递与计算任务。

不经意传输

不经意传输的目的是发送者将自己的某一个信息传递给了接受者的同时,保证发送者不知道发送了什么数据、接受者只知道接收到的数据的协议。

在不可信中创建信任,安全多方计算技术探秘

不经意传输示意


不经意传输协议有不同的实现方式,综合而言,可以抽象成下图:

在不可信中创建信任,安全多方计算技术探秘

不经意传输实现方式示意

1. 发送者将拥有的信息分别放入不同的箱子中。箱子由发送者上锁后,发送给接受者。

2. 接受者选出期望接收的箱子,将这些箱子打乱,加上接受者的锁后发回给发送者。

3. 发送者将收到的箱子上自己上的锁解开后,将箱子发回给接受者。这时候的箱子上只有接受者的锁了。

4. 接受者收到箱子后,打开自己上的锁,就可以获得选择的消息。

在上述过程中,发送者将箱子上锁,是为了保证接受者只知道接收到的数据。接受者打乱箱子可以防止发送者通过顺序推测出接受者选择的信息。接受者也将箱子上锁,可以防止发送者通过打开箱子的方式获得接受者选择的信息。

不经意传输协议可以分为1-out-of-2,1-out-of-n,k-out-of-n三大类。1-out-of-2协议支持接受者从发送者的两个信息中选择一个。1-out-of-n协议支持接受者从发送者的n个信息中选择一个。k-out-of-n协议支持接受者从发送者的n个信息中选择任意多个。

混淆电路

任何的计算问题都可以转化为电路的形式。因为复杂的计算都是通过基础算子(四则运算、比较运算等)实现的,基础算子均可以由门电路(与或非门)进行构建。

针对一个两个参与方均提供数据的计算问题,为了保证参与双方的数据“可用不可见”,混淆电路的思路是将计算问题转化为逻辑电路,然后将电路通过加密、扰乱等方式进行混淆掩盖信息的方式。

混淆电路的使用者分为生成者和计算者两方。生成者生成混淆电路,并将完整的混淆电路发送给计算者。计算者根据自己的数据进行输入,得到结果的中间值。最后,计算者与生成者通过交互中间值得到计算结果。

在不可信中创建信任,安全多方计算技术探秘

混淆电路示意

具体而言,以或门为例,生成者选择输入为0,计算者选择输入为1时,计算过程可以表示成以下6步:


1. 生成者随机生成密钥。对或门的两个输入X、Y,以及输出(计算结果)Z的所有可能的值分配随机密钥,公生成8个随机密钥。例如K0x指输入X的值为0时的对应密钥,K1y指输入Y的值为1时的对应密钥。

2. 生成者基于或门电路的真值表生成加密真值表。对或门电路真值表中的每一行,使用X,Y值对应的密钥对Z值对应的密钥进行加密操作。

3. 生成者产生混淆真值表。对加密真值表的顺序进行打乱可以得到混淆真值表。

4. 生成者确定X输入值(假设为0),将混淆真值表,Y输入对应的两个密钥K0y及K1y,X输入对应的密钥K0x发送给计算者。

5. 计算者确定Y的输入值(假设为1),使用对应的密钥K0x及K1y对混淆真值表中的每一行进行解密操作。得到Z对应的K1z。

6. 计算者与生成者交互K1z,确定计算的结果是1。


在此过程中,生成者与计算者同时得到了正确的计算结果。生成者的输入对计算者隐藏是通过对真值表的加密与打乱实现的。在此过程中,计算者的输入没有出过计算者本地;因此生成者无法获得计算者的数据。

混淆电路协议中,姚氏电路是最著名最广为人知的混淆电路协议。在此基础上,BMW和GESS协议通过不同的秘密分享方式让每个输入都是秘密份额。除此之外,姚氏电路还被应用于与其他安全多方计算协议,通过削减通信轮数,提高协议性能。

秘密共享

秘密共享技术在传统的密码学领域的应用目的多聚焦在对秘密信息(例如密钥)的分布式存储。秘密共享可以分成两个阶段。秘密分享阶段会将秘密拆分成不同的分片,然后把秘密的分片分发给不同的用户进行存储。秘密重构阶段会将分发给不同用户的秘密片段进行汇总,恢复出秘密信息(密钥)。根据不同的秘密共享协议,有些协议需要所有的秘密分片才能恢复出秘密信息;另一些协议只需要一部分的秘密分片就能恢复出秘密信息。

在不可信中创建信任,安全多方计算技术探秘

秘密共享示意图

将秘密共享技术应用于安全多方计算时,为了将多方存储的能力扩展到支持多方计算的能力,将应用流程调整为了:秘密分享、秘密计算、以及秘密重构三个阶段。

在不可信中创建信任,安全多方计算技术探秘

秘密共享技术三个阶段

使用秘密共享技术完成安全多方计算分为以下三个步骤。

1. 在秘密分享阶段,每个数据方先将自己的数据进行拆分。然后将拆分出的数据分发给计算方。完成分发后,每个计算方拥有所有数据方的数据片段。例如计算方A除了自己的信息片段X0,还拥有数据方B的信息片段Y0和数据方C的信息片段Z0。

2. 在秘密计算阶段,每个计算方对自己获得的数据片段执行相应计算,得到结果片段。例如计算方A得到结果片段R0。

3. 最后,所有计算方将得到的结果片段进行汇总,计算出最后的结果R。

在此过程中,保证数据的“可用不可见”是基于所有计算方均只能获得数据的分片,而根据数据分片无法推到出完整数据。

秘密共享协议,根据共享的内容,可以分为共享比特的协议和共享数值的协议。其中共享比特的协议一次分享一个比特的信息,具体实现包含基于XOR的布尔共享和基于Yao氏电路的比特共享。共享数值的协议多采用基于加法的算数共享方式。

往期精彩回顾



在不可信中创建信任,安全多方计算技术探秘

在不可信中创建信任,安全多方计算技术探秘

在不可信中创建信任,安全多方计算技术探秘

西湖论剑“特别版”朋友圈,看大咖们的精彩发言

2022-07-11

在不可信中创建信任,安全多方计算技术探秘

图说论剑:十张照片,百分精彩

2022-07-07

在不可信中创建信任,安全多方计算技术探秘

京杭大运河&西湖论剑,以这样的方式遇见

2022-07-06

在不可信中创建信任,安全多方计算技术探秘

在不可信中创建信任,安全多方计算技术探秘

原文始发于微信公众号(安恒信息):在不可信中创建信任,安全多方计算技术探秘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日22:00:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   在不可信中创建信任,安全多方计算技术探秘http://cn-sec.com/archives/1172004.html

发表评论

匿名网友 填写信息