白盒设计提交的安全评估与分类
在安全设计领域,对候选设计的安全性评估至关重要。本文将围绕白盒设计提交的安全评估展开,介绍相关的预处理方法、攻击工具,以及对候选设计的分类评估。
1. 源代码预处理
在竞赛中,设计者需提交候选实现的源代码,攻击者也会分析这些代码进行密钥提取攻击。为应对此情况,健壮的候选实现不仅混淆了加密操作的控制流,还对源代码进行了混淆。
- 长行代码 :部分候选者使用极长的行来阻止常用文本编辑器解析文件。例如,“relaxed brown”包含一行由31588个字符组成的代码。
- 特定字节序列 :一些候选者包含特定的字节序列,只有部分编辑器和编译器能正确处理。
- 函数隐藏 :代码会将函数定义隐藏在两个巨大的数组之间,利用特定控制字符使函数对编译器可见,但在编辑器分析时隐藏。
我们使用 clang-format
自动解析源文件,生成修改后但功能等效的源文件,去除这些混淆技巧,使其更易理解。例如,“adoring poitras”能用 gcc
成功编译,但不能用 clang
编译,经 clang-format
处理后更易分析。
2. 差分计算分析(DCA)工具
我们按照特定方法执行DCA攻击,使用自定义的Intel PIN插件,该插件适应竞赛规则,挂钩到 AES 128 encrypt
调用以获取与实际加密函数完全相似的计算跟踪。这