Eliminating timing side-channel leaks using program repair

Eliminating timing side-channel leaks using program repair
复制标题

DOI:
10.1145/3213846.3213851
复制
发表时间:
2018-06
期刊:
Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis
影响因子:
--
通讯作者:
Meng Wu;Shengjian Guo;P. Schaumont;Chao Wang
Meng Wu;Shengjian Guo;P. Schaumont;Chao Wang
中科院分区:
其他
文献类型:
--
作者:
Meng Wu;Shengjian Guo;P. Schaumont;Chao Wang

文献摘要

被引文献

相似文献

我们提出了一种基于程序分析和转换的方法,以消除实现关键安全应用程序的软件代码中的定时侧渠道。我们的方法将原始程序作为输入以及秘密变量列表(例如加密密钥,安全令牌或密码)列表,并将转换后的程序返回输出。转换的程序在功能上可以等效于原始程序,并且不含指令 - 定时侧渠道。具体而言,我们确保为执行任何路径所采取的CPU周期的数量与秘密数据无关,并且在命中和错过方面,内存访问的缓存行为与秘密数据无关。我们已经在LLVM中实现了我们的方法,并验证了其在大量应用程序中的有效性,这些应用程序是密码库,总共有19,708行C/C ++代码。我们的实验表明,该方法既可以扩展用于实际应用,又可以有效消除定时侧通道。
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.