Hasty Briefsbeta

双语

Optimization Countermeasures

5 months ago
  • #Cryptography
  • #Compiler Optimizations
  • #Side-Channel Attacks
  • 芯片设计者在构建安全硬件时常有疏漏,这使得必须采用‘恒定时间’编程来防止密钥材料遭受时序攻击。
  • 恒定时间编程是一种威胁模型,旨在通过确保操作不会通过CPU微架构泄露密钥材料,从而防范Spectre等旁路攻击。
  • 编译器可能破坏恒定时间保护机制,但特定的编译器指令(称为‘值屏障’)可强制实施正确行为。
  • ‘值屏障’是一种防止编译器以可能泄露敏感信息的方式优化代码的技术,实质上充当了数据流屏障。
  • 恒定时间编程的典型实例是实现安全比较函数(ct_memeq),该函数通过无分支逐字节比较来防范时序攻击。
  • ‘值屏障’对密码学库至关重要,它能确保条件选择(ct_select)等操作不会引入可能泄露信息的分支。
  • 尽管效果显著,‘值屏障’会阻碍向量化等性能优化,形成安全与效率之间的权衡。
  • 由于其在BoringSSL等主流密码学库中的关键作用,‘值屏障’已被GCC和Clang编译器隐式纳入C++实现。
  • 未来编译器改进(如提议的__builtin_ct_select内置函数)旨在不依赖变通方案的情况下,为恒定时间操作提供更好支持。
  • 本文着重探讨了在恒定时间编程背景下,平衡安全性、性能与编译器优化所面临的持续挑战。