面向 SGX 飞地的动态二进制翻译
密码学与安全
2021-03-30 v1
摘要
诸如 Intel SGX 所支持的飞地(enclave)提供了一种用于将用户级应用程序与操作系统隔离的硬件原语。虽然飞地是一个有用的起点,但每当控制流或数据在飞地与不可信操作系统之间传输时,运行在飞地中的代码都需要额外的检查。然而,如果希望在飞地内运行现有的未修改二进制文件,SGX 上的飞地-操作系统接口可能极其庞大。本文提出 Ratel,一个运行在 Linux 上 SGX 飞地内部的动态二进制翻译引擎。Ratel 提供完全的插桩(interposition),即能够插桩飞地中所有执行的指令并监控与操作系统的所有交互。指令级插桩为未来实现多种多样的内联安全监视器提供了通用基础。我们以原则性的方式解释了为何在 SGX 上实现完全插桩具有挑战性。我们提请注意 SGX 中 5 个在性能与确保完全插桩之间产生根本性权衡的设计决策,并解释如何以有利于完全插桩的方式解决它们。为说明 Ratel 框架的实用性,我们首次尝试在 SGX 上提供与现有软件的二进制兼容性。我们报告 Ratel 对我们测试的超过 200 个程序(包括微基准测试和诸如 Linux shell 实用工具等真实应用程序)提供二进制兼容性。两种编程语言(即 Python 和 R)的运行时,使用标准基准测试,无需任何专门处理即可在 Ratel 上开箱即用。
引用
@article{arxiv.2103.15289,
title = {Dynamic Binary Translation for SGX Enclaves},
author = {Jinhua Cui and Shweta Shinde and Satyaki Sen and Prateek Saxena and Pinghai Yuan},
journal= {arXiv preprint arXiv:2103.15289},
year = {2021}
}
备注
24 pages, 11 figures, 10 tables. arXiv admin note: substantial text overlap with arXiv:2009.01144