Proj CMI Paper Reading: From Theory to Code: Identifying Logical Flaws in Cryptographic Implementations in C/C++
Abstract
背景:通常期望加密协议是可证明的安全的。然而,由于各种实现缺陷,这种安全保证在实践中往往达不到要求。
前提:密码实现中的许多缺陷可以映射到对实现的meta-level properties(A program property that is necessary to realize a cryptographic property 实现加密属性所必需的程序属性)的违反。
本文:密码程序分析cryptographic program analysis (CPA) ,对应工具TAINTCRYPT
任务:使用程序分析在编译时检测安全保证的实现缺陷,在编译时用静态污点分析识别 meta-level property violations of C/C++ cryptographic implementations
方法:
- 调查了关于密码实现缺陷的现有文献,并得出了 25 个相应的元级属性
- 开发了一种基于确定性有限自动机 (DFA) 的规范语言,并表明大多数元级属性都可以用我们的语言来表达。
- 开发了一个名为 TAINTCRYPT 的工具,它在编译时用静态污点分析识别 meta-level property violations of C/C++ cryptographic implementations
实验:
实验1:
数据集:开源 C/C++ 密码库(例如 OpenSSL)
效果:TAINTCRYPT 可以帮助避免几个引人注目的缺陷。
实验2:
数据集:5 个流行的应用程序和库
效果:产生了新的安全见解