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

本文探讨了如何利用英特尔CPU的数据操作数无关时序(DOIT)模式,确保加密软件在秘密数据处理时仅使用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 设计