利用英特尔扩展硬件/软件契约实现加密代码的安全编译
摘要
实现加密软件时,确保秘密输入不影响周期计数是一种广泛接受的标准实践。遵循这种范式的软件通常被称为“恒定时间”软件,通常涉及遵循三个规则: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, 高可信度, 恒定时间代码
发布信息
- 发布日期: 2025-06-05
- 卷期: Vol. 2025 No. 3
- 章节: Articles
- DOI: https://doi.org/10.46586/tches.v2025.i3.644-667
- 许可证: Creative Commons Attribution 4.0 International License
引用格式
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