论文部分内容阅读
分组密码是现代密码学的基础原语之一,它不仅加密速度快,安全性有保障,而且算法在设计时又考虑了在软硬件平台上的高效实现,因此被广泛应用于数据加密的各个领域。随着物联网和传感器网络的快速发展,密码学界提出了一些新的适用于这类资源受限设备的分组密码算法,即轻量级的分组密码算法。相比传统分组密码算法,轻量级分组密码算法使用更简单的轮函数来减少实现所需的硬件成本,同时为了保证安全性,轻量级的分组密码算法通常会采取更多的迭代轮数。故障攻击是针对承载密码算法设备的攻击,通常分为故障注入和故障利用两个过程。在故障注入阶段,攻击者通过改变设备运行时的环境因素,诱使设备输出错误的运行结果。在故障利用阶段,攻击者根据获得的错误输出信息并结合密码特性来恢复算法密钥。本文主要研究针对轻量级密码算法的故障攻击。本文首先提出了对轻量级分组密码算法Piccolo的故障攻击方法,故障注入位置选择在算法的倒数第三轮的特定两个字节上。实验显示,通过差分故障故障方法可以恢复算法80比特密钥中的64比特。其次,本文在Piccolo算法上尝试了不可能差分故障分析方法,故障注入位置选择在算法倒数第四轮的特定单字节且故障值随机,软件仿真实验表明使用大约1400对有效故障密文对可以恢复密钥的1个字节。另一方面,本文还针对SPN型的轻量级分组密码算法,提出了基于统计方法的故障攻击手段,该方法利用了分组密码算法比特置换结构扩散速度慢的特性,使得故障注入轮数大大提前。对于单S盒故障模型,本文提出的方法可以攻击注入在PRESENT算法倒数第7轮和PRINTcipher算法倒数第9轮的故障。同时该方法具有一定的通用性,可扩展至针对多个S盒故障模型的攻击。最后本文还给出了在故障注入方面一些实验结果,我们主要使用干扰电源和时钟来对智能卡芯片进行故障注入,实验表明故障注入更容易施加在软件实现的密码算法电路中,在硬件实现的电路中注入故障更为困难。