1.Introduction

使用可信硬件实现MPC协议需要克服:

  1. 用户和远程机器之间缺乏专用通道
  2. 在异步通信以及仅有TEE介入的条件下对计算进行身份验证/达成一致
  3. 确保“正确”的各方参与计算
  4. 处理共存于同一TEE、共享内存空间的代码之间的交互,每段代码可能对应不同的用户
  5. 确保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中的系统调用结果只能依赖于:

  • 程序加载时定义的初始共享状态
  • 显式传递的输入
  • 新鲜的随机硬币