利用英特尔扩展硬件/软件契约实现加密代码的安全编译

本文探讨了如何利用英特尔CPU的数据操作数无关时序(DOIT)模式,确保加密软件在秘密数据操作中仅使用安全指令,实现未来验证的恒定时间代码,并评估现有加密软件的性能影响。

利用英特尔扩展硬件/软件契约实现加密代码的安全编译

摘要

实现加密软件时,确保秘密输入不影响周期计数是一种广泛接受的标准实践。遵循这种范式的软件通常被称为“恒定时间”软件,通常涉及遵循三个规则:1)绝不基于秘密相关条件分支;2)绝不在秘密相关位置访问内存;3)避免对秘密数据使用可变时间算术操作。第三条规则需要了解此类可变时间算术指令,或者反过来,哪些操作在秘密输入上是安全使用的。长期以来,这种知识基于文档或微基准测试,但关键的是,从未对未来微架构提供任何保证。随着英特尔CPU上数据操作数无关时序(DOIT)模式的引入,以及在一定程度上Arm CPU上的数据无关时序(DIT)模式,这种情况发生了变化。英特尔和Arm都记录了各自指令集的一个子集,这些指令集旨在通过时序不泄露其输入信息,即使在未来微架构上,如果CPU设置为运行在专用DOIT(或DIT)模式下。

在本文中,我们提出了一种原则性解决方案,利用DOIT实现未来验证的恒定时间加密软件,确保即使在错误预测分支或函数返回位置后的推测执行中,也仅使用DOIT子集中的指令来操作秘密数据。对于此解决方案,我们基于Jasmin框架中现有的安全类型系统,用于高可信度密码学。然后,我们使用我们的解决方案评估现有构建为“恒定时间”的加密软件在DOIT暗示的更严格范式中的安全程度,以及从恒定时间移动到未来验证恒定时间的性能影响。

作者

  • Santiago Arranz-Olmos: MPI-SP, Bochum, Germany
  • Gilles Barthe: MPI-SP, Bochum, Germany; IMDEA Software Institute, Madrid, Spain
  • Benjamin Grégoire: Inria, Sophia-Antipolis, France
  • Jan Jancar: Masaryk University, Brno, Czechia
  • Vincent Laporte: Inria, Nancy, France
  • Tiago Oliveira: SandboxAQ, Palo Alto, USA
  • Peter Schwabe: MPI-SP, Bochum, Germany; Radboud University, Nijmegen, The Netherlands

关键词

数据操作数无关时序, Jasmin, 高可信度, 恒定时间代码

发布信息

引用格式

Arranz-Olmos, S., Barthe, G., Grégoire, B., Jancar, J., Laporte, V., Oliveira, T., & Schwabe, P. (2025). Let’s DOIT: Using Intel’s Extended HW/SW Contract for Secure Compilation of Crypto Code. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2025(3), 644-667. https://doi.org/10.46586/tches.v2025.i3.644-667

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计