关键词:
S盒
掩码
AES算法
差分能量分析
面积
摘要:
AES算法是一种在国际上应用广泛的密码算法,迄今为止还没有人能够从数学层面攻破它。但当其运行在具体软件上或被部署到硬件设备中时,攻击者往往可以利用程序运行时所泄漏的敏感信息如运行时间、瞬时功耗等,对能量曲线进行采集和分析,从而绕开了密码算法本身复杂的数学理论,达到侧面攻击的目的。差分能量分析(Differential Power Analysis,DPA)攻击作为一种强大的侧信道攻击手段,已经严重威胁到密码算法硬件实现的安全性,Chari等人、?rs等人以及Kocher博士相继提出了针对AES硬件实现的DPA攻击实例。目前防护DPA攻击最有效的手段就是对密码算法进行掩码处理,其基本原理是将算法操作的每一个中间变量分为多个份额并分别处理这些份额。由于执行高阶DPA攻击的复杂性呈指数级别增长,因此可以使用一个特定的d阶掩码方案去抵抗实践中的DPA攻击。在d阶DPA攻击中,由于在足够的噪声水平下,攻击者难以通过指数形式来估计d阶功耗的任何统计时刻,因此一般实现算法的安全水平达到1阶和2阶就可以了。在AES算法中,轮密钥加、行移位和列混合都是线性的,可以简单地将输入分为d+1份来进行掩盖,只有字节替换即S盒是非线性的,因此如何安全高效地实现S盒,一直是密码学领域的研究热点之一。掩码S盒的硬件实现性能受到面积、延迟及随机数成本等方面的综合影响,在实现时往往需要根据现实的应用场景对某一特定方面的性能进行优化,比如牺牲面积去减小延迟或者牺牲速度去减小面积等。密码算法在经过掩码处理后,通常面积占用较大,在一些硬件资源比较紧张的场合,面积占主导因素,因此必须找到面积下限,在此基础之上再去寻求面积和延迟之间的权衡标准。本文在Lauren De Meyer等人研究工作的基础上,提出了一种具有已知最小面积的掩码S盒的串行化实现方案。首先将用于对零值进行处理的Kronecker Delta函数串行化,接着通过共享一个8比特乘法器模块用于求逆过程以及布尔掩码和乘法掩码之间的切换,最后加上仿射变换以最小的面积代价实现了 S盒。我们针对串行乘法器和并行乘法器两种组件分别设计了一阶、二阶掩码S盒的串行化实现方案,由此给出了掩码S盒的面积下限及硬件实现中防护Glitch的策略。之后将所设计的S盒与AES算法合并,并且提供了一阶、二阶掩码AES的串行化实现方式以及多种流水线实现方式,由此给出了掩码AES的面积下限及一些权衡标准。实验表明,在可比的随机数成本下,我们S盒的一阶掩码和二阶掩码实现以一定的延迟为代价将面积分别优化了 50%和70%左右,我们AES算法的一阶掩码和二阶掩码实现以一定的延迟为代价将面积分别优化了 10%和20%左右,并且随着安全级别d的增大,我们的实现方案对面积的优化幅度会进一步提高,同时我们也提出了一系列面积和延迟的权衡方法,可用于以后的研究和实现。最后,我们在实验中通过对从SAKURA-G板上获取的轨迹执行固定与随机的Welch T测试来验证我们所实现的安全性,对于AES算法的一阶掩码和二阶掩码实现我们分别采集了多达50万条曲线没有发现泄漏点。