中文

面向 RISC-V 的高效可封印保护密钥

密码学与安全 2020-12-07 v1 硬件体系结构

摘要

随着基于软件的攻击数量持续增加,将敏感数据和可信软件组件与不可信的第三方组件隔离的努力日益增长。硬件辅助的进程内隔离机制使软件开发人员能够将进程划分为隔离的组件,进而保护敏感数据免受不可信组件侵害。然而,现代处理器(如 ARM 和 IBM Power)中大多数现有的硬件辅助进程内隔离机制依赖代价高昂的内核操作在可信与不可信域之间切换。最近,Intel 引入了一种用于进程内内存隔离的新硬件特性,称为内存保护密钥(MPK),它使用户空间进程能够高效地切换域。虽然 Intel MPK 的高效性使开发人员能将其用于代码指针完整性等常见用例,但有限数量的唯一域(16)阻碍了其在 OpenSSL 等需要大量域的情况下的使用。此外,Intel MPK 存在保护密钥释放后使用(use-after-free)漏洞。为解决这些缺陷,本文提出一种面向 RISC-V 开放指令集架构的高效进程内隔离技术,称为 SealPK,它支持多达 1024 个唯一域。SealPK 通过采用惰性释放方法防止保护密钥释放后使用问题。为进一步加强 SealPK,我们设计了三种新颖的封印特性,以保护已分配域、其关联页面及其权限免受攻击者的修改或篡改。为证明我们设计的可行性,我们在 RISC-V Rocket 处理器上实现 SealPK,为其提供操作系统支持,并在 FPGA 上原型化我们的设计。我们通过利用 SealPK 在 FPGA 原型上实现隔离影子栈来展示其效率。

关键词

引用

@article{arxiv.2012.02715,
  title  = {Efficient Sealable Protection Keys for RISC-V},
  author = {Leila Delshadtehrani and Sadullah Canakci and Manuel Egele and Ajay Joshi},
  journal= {arXiv preprint arXiv:2012.02715},
  year   = {2020}
}

备注

7 pages, 5 figures