基于SGX 的轻量级两方安全计算协议*

2021-06-22 01:58王发星
通信技术 2021年6期
关键词:参与者标签远程

王发星,张 驰

(中国科学技术大学,安徽 合肥 230026)

0 引言

多方安全计算是一种用于隐私计算的密码学方法,支持互不信任的数据所有者以保护隐私的方式参与计算。此方法在保证数据的所有权和隐私的同时,能够打破数据之间的物理和法律隔离,充分发挥数据的价值。在百万富翁[1]问题被提出之后,多方安全计算逐渐走入人们视野。经典安全计算的思路是将计算转化为对一个等价电路,然后以保护参与者隐私的方式对电路求值。多方安全计算经过30年发展,已经在实际生活中有所应用[2]。

一方面,多方安全计算被应用到隐私数据共享,但各方数据受限于强有力的隐私保护法规而无法实现联动来实现更高的商业价值。因此,如何实现合法的数据共享是一个重要且现实的问题。多方安全计算能够保护数据隐私和所有权,因此这是解决这类商业需求的理想方案。另一方面,传统集中式应用被攻击会导致严重后果,因而人们尝试利用多方安全计算的分布式特点来提升系统的健壮性和安全性。

尽管多方安全计算技术已经被有限地应用到实际生产生活中,但目前多方安全计算在大多数实际场景中没有足够的实用性。为了对抗参与者不诚实的行为,现有方法引入零知识证明[2],使用Cutand-Choose[3]的技术或者利用混淆认证方法[4],但这都会造成了很大的性能开销。由于移动端用户天然存在设备性能和网络通信速度限制,因此移动端用户无法参与到多方甚至两方安全计算。

Intel 可信硬件(Software Guard Extensions,SGX)作为一个成熟的可信硬件技术提供了强大的安全计算能力,允许在操作系统上运行经过硬件隔离保证的用户级飞地。飞地提供硬件隔离的执行环境,可以保证飞地中数据的机密性和代码的完整性,并且程序本身可以被远程验证,使得处于飞地之外的任何程序都无法访问和控制飞地。

为支持移动端用户参与到安全计算,并且对抗安全计算中的恶意参与者,本文通过将混淆电路中预计算部分外包到一个第三方的SGX 来支持轻量级的计算参与者,并且基于SGX 来限制双方各自的恶意行为。

本文的结构安排如下:第1 章主要介绍研究背 景及国内外研究现状;第2章主要介绍系统架构设 计;第3 章给出轻量级两方安全计算方法;第4 章给出了系统的仿真实验和结果分析;第5 章得出结论。

1 研究背景

1.1 混淆电路

混淆电路[1]是基于布尔电路的两方安全计算协议。在混淆电路中,其中一方为电路生成者另一方为电路求值者。生成者A基于他们所要计算的函数f(x,y)生成相对应的电路C(x,y),接着对于两者的n位输入x,y∈{0,1}n的第i位,有xi,yi∈{0,1},随机选择对应的标签值,其中k为安全参数。然后随机生成电路中需要用到的所有标签L。A生成所有的标签值之后,将每个门电路输出对应的真值表进行混淆生成最终的混淆表GT,最后将混淆表GT 和自身输入对应的标签发送给求值者。求值者使用不经意传输得到自身输入相应的标签值,之后求值者可以对混淆电路进行求值得到最终结果。一个混淆电路实例如式(1)所示。

1.2 相关研究工作

传统多方安全计算的性能改进已经接近瓶颈。值得指出的是,多年以来针对多方安全计算性能优化人们做了大量的工作。就混淆电路来说,现在最先进的方法是结合Free-XOR[5]和半门[6]方法。在半门中已经证明,要达到多方安全计算中的隐私性和正确性保证,混淆电路中每次计算与门的通信开销至少为2。基于密码学方法提升多方安全计算性能已经接近极限,SGX 作为处理机密数据的一般化工具,结合SGX 来提高多方安全计算的性能和安全性是值得探究的研究方向。

人们在这个方向已经做了有益的探索。一个方法是将SGX 作为可信第三方[7]。SGX 如同多方安全计算安全定义中理想世界的可信第三方,所有参与者远程认证SGX 后将自身敏感数据发送给SGX,SGX 计算得到结果后再将结果分发给相关参与方。无疑这样的做法是高效的,因为即使在n方参与的情况下整个协议的通信复杂度也只是线性增长,并且作为可信第三方的SGX 避免了较大的计算开销。

这种做法的问题在于多方安全计算的安全性完全取决于SGX,一旦SGX 出现安全问题就会破坏多方安全计算的安全性。多方安全计算中不仅需要保证用户输入的机密性,还需要保证协议中间过程值的机密性。SGX 与理想第三方至少存在两点不同:实际拥有SGX 的第三方可以对其进行侧信道攻击,从而获取所有参与者的隐私数据。另外SGX 与外界的通信信道是由SGX 拥有者控制的,SGX 发送/接收的消息可以被其控制者任意地阻断。例如在一个拍卖服务中,SGX 拥有者可以屏蔽所有的出价而导致物件流拍或者自己使用一个基本价格拍得物品。因此如果将存在安全威胁的SGX 中作为可信第三方直接进行多方安全计算会降低多方安全计算的安全性。

为了避免多方安全计算的安全性完全依赖于SGX 的安全性,在半诚实模型下,文献[8-9]等没有将SGX 作为一个可信第三方,而是将SGX 作为计算辅助,参与多方安全计算中预计算过程。SGX由于不接触用户数据避免了用户隐私被破坏的风险。另外结合SGX 不仅能够使得多方安全计算受益,还能够缓解SGX 侧信道问题。Felsen 等[10]指出通过在SGX 中使用多方安全计算风格的电路求值方法,能够避免产生依赖于数据的执行路径,从而阻止针对SGX 的计时攻击。

本文在两方安全计算中,引入一个作为第三方的SGX 参与计算。与上文不同的是此方案支持移动端用户参与计算,并且考虑恶意参与者存在。这个方法是可实现的,例如可以通过配置第三方公有云平台,如亚马逊的EC2 和微软的Azure 云计算服务。由于此时SGX 只参与到与输入无关的预计算过程,从而避免了SGX 接触到任何用户隐私,进而消除了在两方安全计算中引入SGX 而带来的安全隐患。

2 系统架构

2.1 安全假设

因为参与安全计算的实体都有保护自身数据隐私的需要并且这些数据通常价值较高,所以现实中参与者不会是理想的诚实协议执行者。参与安全计算的各方或多或少都有动机通过各种方式来窥探其他参与者的隐私。因此在本文中,假设双方参与者的行为是任意的,即双方可通过各种方式来取得安全计算中的额外优势。

另外,使用SGX 参与两方安全计算的关键是对SGX 进行合理的安全假设。SGX 的安全保证主要有两点:机密性和完整性。现有研究要么假设SGX 完全安全要么假设SGX 完全不安全,这在现实中都很难成立。为了对SGX 作出更现实合理的安全假设,先讨论SGX 面临的安全威胁。SGX 面临的主要安全威胁是微体系结构的侧信道攻击,主要可被分为以下3 个部分:微体系结构竞争侧信道攻击,受控侧信道攻击和瞬时执行攻击。前两种攻击泄露得到的敏感数据是带有噪声的,两者的差别在于受控侧信道攻击的攻击者可主动攻击而竞争性侧信道攻击的攻击者是被动攻击者,因此其攻击所耗时长相较第一种长。瞬时执行攻击得到的飞地中机密数据是无噪声的。所有披露的SGX 攻击都得到了社区的积极响应并且SGX 持续由Intel 维护。因此可对SGX 做最小安全假设,即只假设存在一个保护完整性的SGX,而对SGX 的机密性保证不作要求。现有针对完整性的攻击[11]是通过破坏SGX 远程认证过程达成,通过使用数据不经意技术和避免Seal功能来保护远程认证过程。经过验证,此假设在现实中能够成立。

2.2 方案概览

本方案考虑两方安全协议中存在恶意参与者。并且假设SGX 拥有者为高权限用户,企图获取SGX 中的机密信息。同时对SGX 进行更细粒度安全假设,抛弃了对SGX 中数据机密性的要求,而只要求SGX 在恶意环境下保持其完整性。

两方安全计算的实体分别为参与者X、Y和一个运行在第三方的辅助SGX。双方使用混淆电路作为两方安全计算协议,其中X为轻量级恶意参与者,Y为混淆电路的恶意求值者。在计算开始,双方分别对云端SGX 发起远程认证,验证云端SGX 的行为是否符合预期。接着SGX 生成混淆电路计算所需数据,分别将生成数据分发给双方。在参与者X想要参与安全计算时,基于从SGX 得到的数据与自身输入数据X可求得输入所对应的标签值Lx,然后将其标签值Lx直接发送给参与者Y。参与者Y结合得到的标签值Lx和Ly之后,对混淆电路进行 求值。

3 轻量级两方计算方案

3.1 方 案

移动或物联网等设备常常保留有许多的私密数据,如个人定位信息或者个人交易数据等敏感信息。由于隐私保护要求而无法分享这些数据,从而不能发挥更大价值,提升服务质量。因此一个轻量级的安全计算协议在现实中有着实际的需求。考虑两方安全计算的场景,使用一个SGX 作为第三方辅助参与计算。考虑到现实中此类设备通常为人所控制,因此假设参与安全计算双方都存在恶意行为。设计了一个两方参与的轻量级安全计算协议,使得计算能力受限的设备也能够参与开销巨大的安全计算。另外,本协议在存在恶意参与者且SGX 存在安全威胁情况下仍然能保护双方数据的隐私。轻量级两方计算方案如图1 所示。

图1 轻量级两方计算协议

轻量级两方计算协议主要分为6 个步骤,分别为初始化阶段、远程认证阶段、混淆电路预计算、预计算结果分发、轻量级用户标签生成和混淆电路求值。协议执行流程如下。

(1)初始化阶段。SGX 在初始化阶段首先将在内存区域为混淆电路程序Proggc开辟一块飞地eid,接着将Proggc加载进SGX,有load(eid,Proggc)。Proggc中包含以下6 个组件:第1 个组件是电路转化器T,T将计算函数z=f(x,y)转化为其等价的电路表示C(x,y),两者满足关系:

式中,x、y分别为两者的输入。第2 个组件是伪随机生成器PRG,负责生成随机数用于生成混淆电路。第3 个组件是用于生成混淆电路的生成器Gen。第4 个组件是用于外部通信的接口Comm。第5 个组件用于支持不经意传输OT。第6 个组件用于分发最终计算结果。

(2)远程认证。在远程阶段,双方首先对计算函数f(x,y)达成一致,接着双方分别向SGX 进行认证挑战,。SGX 收到挑战消息后首先比较双方计算函数是否一致,即fx=fy。接着SGX 调用远程认证过程attest(eid,report)生成认证report,双方接收到report之后可以自行借助SGX 的IAS 认证服务器完成远程认证。同时,完成远程认证之后,双方可分别与SGX 建立一个可信信道chalx↔SGX,chaly↔SGX。

(3)混淆电路预计算。双方完成对SGX 的远程认证后,SGX 中开始进行混淆电路预计算。首先对长度为n的移动端参与者Px输入inpx,生成一个对应的随机数种子seedx,接着使用seedx对于输入的每一位可能值,按照式(3)中生成输入对应的k位随机标签值:

按照同样的方法生成Py输入对应的标签值。在生成完双方输入对应的标签值以后,SGX调用飞地中的程序将计算函数f(x,y)转化为对应的等价电路表示:

得到电路表示后,SGX 对于每一个门g∈C的输入输出线w随机生成对应的标签:

在生成所有标签之后,SGX 调用混掉过程Gen生成最终的混淆电路GC,过程为:

(4)预计算结果分发。生成混淆电路GC 后,SGX 将预计算结果分发给双方用于后续混淆电路求值。SGX 首先通过远程认证建立的可信信道发送将随机种子seedx给参与者Px:

将Py输入对应的标签值通过不经意传输发 送,有:

SGX 在完成上述4 个步骤之后,SGX 清空生成的相关预计算数据,只保留最终输出值z和其对应标签值的映射表OM,如式(10)所示。此后作为辅助的SGX 不会参与后续混淆电路计算过程。最后SGX只是从Py得到最终输出结果对应的标签值,恢复原始值后分发计算结果。

(5)轻量级用户标签生成。Px在接收到SGX发送的随机数种子seedx后,通过式(11)方法可以生成自身实际输入每一位i∈[1,k]对应的标签值。

轻量级用户Px在生成输入对应的所有标签后,可以在想要参与安全计算时将标签值一并发送给Py。

(6)混淆电路求值。参与者Py作为混淆电路求值者,在收到Px发送的标签值之后,结合自身输入对应的标签值即可对接收到的混淆电路GC 进行如式(12)所示的运算。求值运算完成后Py将求得的最终输出标签值发送给SGX,如式(13)所示,SGX 通过输出标签的映射关系得到最终结果输出z,最后SGX 如式(14)所示分发此次计算结果。

3.2 安全性分析

本方案可以对抗恶意的混淆电路参与者,下面首先对混淆电路中存在的不同恶意行为进行讨论,基于此进而讨论基于SGX 的轻量级两方安全计算方案的安全性。在两方安全计算中,任何恶意参与者想要获得额外优势,只能通过不一致输入、生成不正确的电路以及对电路故意错误求值3 种途径实现。

不一致输入。不一致输入在混淆电路中主要表现在两个方面:一方面传统方法中为对抗恶意参与者需要对同一电路生成多个混淆电路,参与者可在不同混淆电路中使用不同输入;另一方面恶意的电路生成者可修改电路输入标签,这会导致最终求值错误。上述两种恶意行为在传统的方法中都会导致选择性失败攻击从而会破坏另一方隐私。在本方案中,由于电路的生成完全由SGX 完成,因此轻量级用户失去了传统方法中作为电路生成者的优势,无法以此来窃取对方隐私。注意不考虑参与者使用无效输入或使用不真实数据参与计算的情况。

生成不正确的电路。传统两方安全计算中,恶意参与者通过修改电路的输入和电路构成来进行破坏安全计算的隐私和正确性保证。在上文讨论了使用SGX 来生成电路,保证输入和预计算阶段时双方只能诚实参与协议,可以看到实质上已经限制了生成不正确电路的行为。

不诚实的求值。这种途径等价于恶意参与者在拥有正确电路情形下恶意对电路进行错误求值。对于混淆电路中每一个门来说,求值者只能够得到和自身输入相关的一个合法输出标签,而无法得到其他任何输出对应的标签。最终结果是由SGX 生成,因此恶意参与者进行错误求值只会破坏安全计算的正确性,而不会破坏另一方的隐私。更进一步,SGX 能够检测错误的输出标签,从而可以通知双方检测到错误。混淆电路本身限制了恶意参与者进行恶意求值得出合法的输出标签。

总结来说,恶意求值者只有GC、从SGX 得到自身输入的标签以及从对方接收到的输入标签。由于恶意求值者是通过不经传输得到自身输入对应标签,因此恶意求值者不能得知任何其他合法标签的信息。此时求值者有效的恶意行为是进行任意求值,但是由于GC的正确求值要求双方输入对应的合法标签作为输入,因此求值者只有使用合法标签进行正确求值才会得到正确的输出,任何不正确的求值行为都会被SGX 发现。另外,对于恶意的轻量级参与者来说,由于其只得到自身所有可能输入对应的随机数,因而他唯一的恶意行为是发送错误标签。这种行为会被SGX 检测,但这并不会破坏对方隐私。除此之外,一个混淆电路只能用于一次求值过程,混淆电路无法复用,因而轻量级的恶意参与者无法通过发送不同的标签对同一混淆电路进行多次求值。

4 实 验

4.1 性能分析

基于SGX 的轻量级两方安全计算支持移动设备等性能受限用户,同时作为一个简洁的协议,轻量级参与者通信和计算开销与计算函数的复杂度无关。下面分别对参与计算的实体进行性能分析。

轻量级参与者的通信开销包括发送自身输入对应的标签,从SGX 接收seedx和最终结果。在输入输出为n位,生成标签为k位,电路复杂度为G下,可以容易得到通信开销为k+n×k+nbit 计算开销为2n次PRG。

SGX 的计算开销组成包括两部分:一是生成双方输入标签和电路标签的计算复杂度O(nG);二是生成用于不经意传输的计算开销O(n)。它的通信开销也由两部分组成,即分别与双方通信的开销。就轻量级参与者而言,SGX 的通信开销只需要发送其所需的随机数种子seedx。SGX 与求值者的通信开销包括3 部分:一是发送混淆电路GC 所需的通信复杂度,与门电路数成正比;二是通过不经意传输发送求值者输入对应的标签所需的通信复杂度O(n);三是接收最终结果标签和分发结果所需要的开销n×k+2nbit。可以看到,最终SGX 的通信开销与双方输入和计算函数f呈线性相关,是可以接受的。

可以看到,求值者的通信开销为O(n+k),求值的计算开销包含不经意传输和混淆电路求值过程,其计算复杂度为O(n+G)。

另外,对于轻量级参与者来说本方案是能够扩展的,因为随着参与者的增多每一个轻量级参与者的性能保持不变。与之相对比的是传统多方安全计算方案此时性能开销与参与者数目呈非线性增长。

4.2 实验结果

本次实验使用SGX 的C++开发包2.7 版本实现,开发平台是Ubuntu 18.04。在双方使用两方安全计算技术进行求值时,计算函数f需要被表示为布尔电路,这里使用布里斯托格式的来描述一个电路。

布里斯托电路文件组成如下:第一行记录电路的门数目和线路数目;第二行记录总体输入输出线路数目;后面按照输入数量、输出数量、输入列表、输出列表、电路类型格式描述每一个门电路。一个布里斯托格式电路例子如图2 所示。电路由节点组成,这些节点可以是输入、输出或门。用来解析电路的电路文件按照拓顺序包含节点。生成者根据布里斯托格式的电路描述生成对应的混淆电路。

图2 布里斯托格式32 位加法的部分电路

本实验在支持SGX 的英特尔8 代芯片上,配备有2.70 GHz 和3.6 GB 的RAM,执行性能测试。函数f的电路表示可以用HyCC[12]工具来生成,使用ABY(Arithmetic-Boolean-Yao)[13]安全计算框架完成电路求值。参与者对SGX 进行远程认证所需要的通信开销如表1 所示。

表1 远程认证通信开销

可以看到,在使用安全传输层协议(Transport Layer Security,TLS)安全信道进行通信和远程认证的情况下,即使是轻量级参与者也是能够以很小的通信开销完成远程认证过程,这不会给轻量级参与者造成明显的网络负担。为了充分测试轻量级两方安全计算协议的性能,在本场景下,考虑到安全计算协议的性能主要是由计算函数f复杂度所影响。两方安全计算常见的基准测试包括加法、乘法、AES 加密算法和SHA1 摘要算法。使用HyCC 工具生成了上述算法的电路表示并且汇总了电路实际大小。不同函数电路表示的大小如表2 所示。

表2 不同函数的电路表示大小

另外需要提到的是,一般情况下安全计算协议的性能开销测试需要考虑不同网络环境,例如协议在局域网和广域网下的表现。本方案是一个异步方法,并且实际电路求值过程不要求网络交互,因此不考虑在不同网络环境下此方法的表现。最后,轻量级两方安全计算的性能开销主要在于SGX 和电路求值者,轻量级参与者的实际计算开销是可忽略的。由于SGX 参与的所有计算都可以在线下完成并且和双方输入无关,因此方案的实际表现最终是由电路求值者的速度所决定。对比实验参照参与者在半诚实假设下进行两方混淆电路计算。最终结果如图3 所示。

图3 轻量级两方计算协议性能开销

从实验结果可以看到,在恶意参与者的情形下,基于SGX 的轻量级两方安全计算方法能够以近似半诚实模型的开销执行整个协议。这表明本文方法并没有给求值者更多的计算负担。对于移动端用户来说,他们的通信和计算开销都是可忽略的,实验证明这是一个移动端友好方案,能够支持轻量级用户参与者安全计算。

5 结语

多方安全计算这一强大的隐私保护方法由于其开销过大而不适用于计算和带宽能力受限的移动端用户。本文从两方安全计算着手,提出使用SGX 作为辅助参与预计算过程,从而支持轻量级的用户参与安全计算过程,同时对抗安全计算中的恶意参与者。实验证明,基于SGX 的轻量级两方安全计算性能表现良好,轻量级用户只需要极低的代价就能够参与安全计算,并且不会给另一方造成额外的性能开销。未来的研究方向是将两方安全计算扩展到多方参与的情形,挑战在于如何在多方参与的情形下仍然支持轻量级用户以很低的性能开销参与协议。

猜你喜欢
参与者标签远程
远程求助
休闲跑步参与者心理和行为相关性的研究进展
门限秘密分享中高效添加新参与者方案
远程工作狂综合征
远程诈骗
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
基于代理的多方公平交换签名方案
海外侨领愿做“金丝带”“参与者”和“连心桥”
让衣柜摆脱“杂乱无章”的标签