1.Introduction
使用可信硬件实现MPC协议需要克服:
- 用户和远程机器之间缺乏专用通道
- 在异步通信以及仅有TEE介入的条件下对计算进行身份验证/达成一致
- 确保“正确”的各方参与计算
- 处理共存于同一TEE、共享内存空间的代码之间的交互,每段代码可能对应不同的用户
- 确保TEE内部运行的代码不会向外部泄露敏感信息
1.1 贡献
通用安全多方计算
一个高效的安全多方计算协议(非交互式)
加载进TEE的代码先执行密钥交换,再通过秘密信道执行任意函数 $F$
标记验证计算LAC
经过验证的输出为计算序列提供完整性保护,输出的完整性可以进行公开验证
- 为输入添加标签,并将对应于特定标签的输入和输出绑定
- 对LAC进行正式建模,通过LAC原语将任意程序部署到TEE
- LAC可用于更多的依赖TEE的安全协议的模块化分析
实现和实验
两个实现:
-
sgx-mpc-mbed
:依赖TLS库,使用RSA进行密钥交换 -
sgx-mpc-nacl
:依赖NaCl密码学库,使用椭圆曲线密码进行密钥交换和数字签名
3.TEE程序与机器
TEE程序
抽象为编程语言 $L$ ,包含TEE系统调用
TEE中的系统调用结果只能依赖于:
- 程序加载时定义的初始共享状态
- 显式传递的输入
- 新鲜的随机硬币