TEE是通过硬件的方式保护参与计算数据的隐私性,但基于TEE的隐私计算并不是建立在参与方间完全无信任环境下的,实际上会有一个各参与方都认可的可信根,一般而言,这个可信根是TEE的制造厂商。
现在比较成熟的TEE技术就是英特尔的SGX,如果是通过SGX做隐私计算,由于要去英特尔的服务器上做远程认证,则需要各个参与方都信任英特尔。因此基于TEE的隐私计算对于某些安全性要求更高场景并不适用。
除了基于TEE的隐私计算外,安全多方计算技术(MPC或SMPC,Secure multi-party computation)也可以做隐私计算。安全多方计算技术则是基于密码学的多种技术纯软件实现的隐私计算。各参与方之间无需可信根,更加安全。但由于包含了复杂的密码学操作,相较于基于TEE的隐私计算而言,效率会低一些。
安全多方计算是指在无可信第三方的情况下,多个参与方协同计算一个约定的函数,并且保证每一方仅获取自己的计算结果,无法通过计算过程中的交互数据推测出其他任意一方的输入和输出数据(除非函数本身可以由自己的输入推测出其他参与方的输入和输出)。
安全多方计算可抽象概括为数学模型,其公式如下:
安全多方计算于1986年由姚期智院士通过姚氏百万富翁问题提出:两个百万富翁街头邂逅,他们都想炫一下富,比一比谁更有钱,但是出于隐私,都不想让对方知道自己到底拥有多少财富,如何在不借助第三方的情况下,让他们知道谁更有钱。姚氏“百万富翁问题”后经发展,成为现代密码学中非常活跃的研究领域,即安全多方计算。
安全多方计算技术并不是一个单一的技术,它本身是由一些列技术组成的协议栈。按层次可为2层,如下图所示:
支撑技术层 支撑技术层提供构建MPC的基础技术实现,包含常用的加密解密、hash函数、密钥交换、同态加密(HE,Homomorphic Encryption)、伪随机函数等,还包含MPC中的基础工具:秘密分享(SS,Secret Sharing)、不经意传输协议(OT,Oblivious Transfer)、不经意为随机函数(OPRF,Oblivious Pseudorandom Function)等;
具体MPC算法层 具体MPC算法是利用支撑技术组合构造的MPC协议。
构造的MPC协议又分为两大类,专用算法和通用框架