论文部分内容阅读
现实世界中密码算法实现受到各种各样的侧信道攻击(Side-Channel Attacks, SCAs),包括差分能量分析(Differential Power Analysis, DPA)攻击。掩码是一个广泛应用的保护高级加密标准(Advanced Encryption Standard, AES)等分组密码不受DPA攻击的方案措施。相关的原理是将算法操作的每一个中间变量分为多个份额并分别处理这些份额。高阶DPA攻击利用了多个中间变量的联合泄漏,并能够攻击低阶的掩码方案,在这里“阶”的意思是指同一时间被探测的中间变量的个数。随着阶数的增加,执行高阶DPA攻击的复杂性呈指数级别增长。这意味着,我可以使用一个特定的d阶掩码方案去抵抗实践中的高阶DPA攻击。然而,任何高阶掩码方案的难点在于如何高效的掩盖非线性转换S盒。文献中存在两种解决该问题的基本方法,也就是说,基于ISW的技术和查找表重计算方法。在CHES 2010, Rivain和Prouff(RP)提出了一个属于第一个分类的可证安全的通用d阶AES掩码方案。尽管最初的RP方案包含一个由于掩码刷新过程引入的缺陷,它仍然促生了对任意S盒的高阶掩码方案的设计。除此之外,以所需的安全非线性的安全域乘法的数目衡量,RP方案仍然是AES最高效的高阶掩码方案。为了方便AES的高阶掩码方案在实践中部署,我们在解决了RP方案中缺陷的基础上使用ARM NEON指令集开发了一个高效的RP方案的实现。在经过了详尽的复杂性分析之后,我们总结出域乘法和随机数生成是RP方案中对性能至关重要的组成部分;在每个敏感变量有n个分享的情况下,RP方案需要D(n2)个域乘法和随机数生成。得益于NEON指令集的丰富性,我们分别只需要15个指令去实现这两个部分。我们对不同实现的模拟表明我们在实现中集成DPA防范措施(基于RP的掩码方案)导致的性能损失明显的低于先前的工作。例如,我们的二阶DPA防范措施(每个敏感变量有三个分享)只比不包含DPA防范措施但是抵抗缓存-时间攻击的基准实现慢9倍。这些模拟同时表明我们的高效实现足够在实践中部署。