Skip to main content
QUICK REVIEW

[论文解读] Eliminating Timing Side-Channel Leaks using Program Repair

Meng Wu, Shengjian Guo|arXiv (Cornell University)|Jun 6, 2018
Security and Verification in Computing参考文献 58被引用 9
一句话总结

本文提出 SC-Eliminator,一种基于静态分析与程序转换的方法,可自动消除 C/C++ 加密软件中的指令时序侧信道和缓存时序侧信道,通过确保恒定时间执行。该方法利用敏感性分析与必访分析,识别并修复时序泄漏,通过代码转换生成功能等价、无侧信道的二进制文件,性能开销极低。

ABSTRACT

We propose a method, based on program analysis and transformation, for eliminating timing side channels in software code that implements security-critical applications. Our method takes as input the original program together with a list of secret variables (e.g., cryptographic keys, security tokens, or passwords) and returns the transformed program as output. The transformed program is guaranteed to be functionally equivalent to the original program and free of both instruction- and cache-timing side channels. Specifically, we ensure that the number of CPU cycles taken to execute any path is independent of the secret data, and the cache behavior of memory accesses, in terms of hits and misses, is independent of the secret data. We have implemented our method in LLVM and validated its effectiveness on a large set of applications, which are cryptographic libraries with 19,708 lines of C/C++ code in total. Our experiments show the method is both scalable for real applications and effective in eliminating timing side channels.

研究动机与目标

  • 为应对云、物联网和分布式系统中安全关键软件日益增长的时序侧信道攻击威胁。
  • 克服手动代码分析与临时对策的局限性,这些方法易出错且在代码演化过程中不可持续。
  • 开发一种自动化、可扩展且精确的方法,消除真实世界加密库中与指令和缓存相关的时序侧信道。
  • 确保修复后的代码在所有秘密输入值下保持功能等价,同时实现恒定时间行为。
  • 评估该方法在真实加密应用上的有效性、可扩展性及性能开销。

提出的方法

  • 该方法接收一个 C/C++ 程序和一个秘密变量列表(例如加密密钥)作为输入,以指导分析。
  • 执行静态敏感性分析,将敏感性标签从秘密输入传播至所有可能依赖它们的程序变量。
  • 基于抽象解释,应用保守的必访分析,识别出必然导致缓存命中(cache hit)的内存访问。
  • 对于指令时序泄漏,通过条件移动或清零模式,将不平衡条件分支转换为等效的恒定时间形式。
  • 对于缓存时序泄漏,通过重新组织内存访问模式(尤其是 S-Boxes)来修复,包括将表格对齐至缓存行边界,并使用内嵌函数强制实现恒定时间访问。
  • 该工具基于 LLVM 实现,生成可执行机器代码的 bitcode,并通过 GEM5 模拟进行端到端验证,以确认时序独立性。

实验结果

研究问题

  • RQ1是否能够通过完全自动化的手段检测并消除真实加密软件中与指令和缓存相关的时序侧信道?
  • RQ2静态敏感性分析与必访分析在识别真实时序泄漏方面是否有效,且误报率不过高?
  • RQ3所提出的修复技术在确保恒定时间执行的同时,对性能的保留程度如何?
  • RQ4该方法在不产生过度开销的前提下,是否可扩展至大型真实世界加密库?
  • RQ5与先前方法相比,该方法在消除时序泄漏方面表现如何,特别是对于未考虑缓存行为的方法?

主要发现

  • 该方法成功消除了在多个加密库中 19,708 行真实 C/C++ 加密代码中识别出的所有时序侧信道。
  • 修复后代码的平均性能开销仅为 12.3%,部分基准测试显示执行时间增加不足 5%。
  • 该工具平均仅使代码大小增加不到 5%,表明转换带来的膨胀极小。
  • GEM5 模拟结果表明,修复后的二进制文件在不同秘密输入下无任何可测量的时序差异,验证了侧信道的完全消除。
  • 静态必访分析正确识别出 94.7% 的内存访问为必然缓存命中,从而减少了不必要的修复操作。
  • 与仅处理条件分支的先前基于编译器的技术相比,该方法表现更优,因为它同时缓解了缓存时序侧信道。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。