当前位置:无忧公文网 >范文大全 > 征文 > 基于智能卡实现的分组加密算法的功耗分析

基于智能卡实现的分组加密算法的功耗分析

时间:2022-03-21 10:10:12 浏览次数:

摘 要:

针对基于智能卡硬件实现的【SM4分组加密算法的物理泄露安全问题,提出了一种快速、高效的相关功耗分析方法,通过理论分析和实验研究,暴露了即使是理论上非常安全的SM4加密算法,在物理实现过程中也会泄露重要的敏感信息。首先,通过分析SM4算法的实现流程和加密特性,建立功耗分析的数学模型,并推导出解密流程和优化算法;其次,结合理论物理泄露点,搭建完整的智能卡硬件功耗分析实验系统,通过智能卡的功耗数据采集、分析、优化,研究真实智能卡的侧信道安全漏洞;最后,结合实验结果,进一步优化功耗分析,探讨嵌入式系统环境下的SM4算法安全性能。与Mifare DESFire MF3ICD40智能卡三重数据加密标准【(3DES)算法侧信道分析相比,所提方法将功耗数据量从25万条降低到不足一千条,分析时间从7个多小时,减小到几分钟,并且完整地恢复了SM4的原始密钥,能有效提高硬件环境下的功耗分析效率,降低计算复杂度。

关键词:

相关功耗分析;侧信道攻击;SM4算法;密钥恢复成功率;汉明重量模型

0 引言

自1998年Kocher等开创性地提出侧信道分析[1]以来,密码学展开了一项崭新的领域。它提供了一种新的方式,利用一些物理泄漏信息来恢复加密算法的密钥信息,如电能消耗、电磁辐射[2]、时间消耗[3]以及侵入分析技术[4-5]。功耗分析已被证明是一种非常强大侧信道分析手段,通过测量和分析加密设备的功耗数据来攻击内部加密算法。在近几年中,差分功耗分析(Differential Power Analysis,DPA)迅速发展,特别针对智能卡是一种很有效的分析手段。而一些令人印象深刻的智能卡的侧信道分析工作[6-8],也显示该项研究已经威胁到日常的安全。

侧信道分析[1]的提出,让人们可以利用一些物理泄漏信息来恢复加密算法的密钥信息,如电能消耗、电磁辐射[2]、时间消耗[3]以及侵入分析技术[4-5]。功耗分析已被证明是一种非常强大的侧信道分析手段,主要通过测量和分析加密设备的功耗数据来攻击内部加密算法。在近几年中,差分功耗分析(Differential Power Analysis,DPA)迅速发展,对智能卡而言,它是一种非常有效的分析手段,而一些令人印象深刻的智能卡的侧信道分析工作[6-8]也显示该项研究已经威胁到日常的安全。

商密4号算法(SM4)是第一个正式通过中国国家商用密码管理(State Cryptography Administration Office of Security Commercial Code Administration, OSCCA)的商用算法,并于2006年发表[9],它被提议为无线局域网提供数据验证和保护。最近,中国中央银行发布了最新版本的国内金融集成电路(Integrated Circuit,IC)卡标准(The Peoples Bank Of China 3.0, PBOC3.0)[10],提出将使用SM4取代三重数据加密标准(Triple Data Encryption Standard,3DES)算法。

SM4算法是128位密钥的分组密码。一些已发表的针对SM4的功耗分析研究[11-13]专注于软件仿真化的阶段,也有其他一些涉及错误注入攻击、代数分析的研究成果[14-17]。但只采用软件仿真与实际相差巨大,为了弥补这块缺陷,本文给出了一种有效的针对SM4算法的功耗分析,并且分析过程只需要几秒钟的时间。实际功耗测试表明,即使算法存在充分的随机扩散,利用功耗分析也是可能恢复整个算法密钥。

1 SM4算法

在本节中,将对SM4算法进行描述以及简短的介绍,对于相关功耗分析(Correlation Power Analysis,CPA)[18],重点放在如何在SM4分组密码算法的功耗分析中选择合适的攻击目标。并给出一个攻击第一轮子密钥例子。

1.1 SM4算法

SM4算法具有128位的密钥和128位明文输入,加密和解密过程由32轮非线性迭代过程组成,考虑到对称性,加密、解密具有相同的结构。假设以Ze2代表一个e比特的向量,那么算法的明文输入可以用(X0,X1,X2,X3)∈(Z322)4表示;同样,128比特的密文输出可以用(Y0,Y1,Y2,Y3)∈(Z322)4来表示;轮密钥表示为rki∈Z322(i∈{0,1,…,31})。SM4算法的第i轮变换可以如下定义:

1.2 SM4算法的相关功耗分析

相关功耗分析(Correlation Power Analysis,CPA)[18]已被证明能在恢复密钥过程中有效减少所需的功耗曲线数量。该方法通过计算目标值(基于密钥字节的假设)的汉明重量和功耗数据的相关值来进行密钥恢复。相关性使用的是如下所示的皮尔斯相关系数:

其中:N代表功耗曲线数量;HWi,k表示第i个明文、假设密钥为k的目标值的汉明重量(1的数量);T(Pi)表示第i个明文所对应的功耗曲线。

理论上,如果预测密钥k是错误的假设,那么其汉明重量将和实际的功耗曲线不相关,这也就意味着ρ(k)的绝对值会非常小,甚至接近于零。与之相反,正确的预测密钥将会在加密过程的某一点呈现很强的相关值,ρ(k)曲线上将出现一个明显的峰值。因此,对所有的密钥可能值进行测试,正确的密钥将可以通过相关系数推断

这里ci是通过32比特的循环左移得到的,因此ci不仅仅取决于bi,而且取决于其他三个S盒,因此使用ci来进行CPA攻击并不可行。式(7)和(8)显示了只有bi和rk0,i相关,因此使用它的汉明重量模型进行相关分析,并且相关系数通过bi和功耗曲线进行计算。

对于采用半导体逻辑门电路实现的智能卡微处理器,通常可以假设:通过功耗泄露的敏感信息取决于加密电路中,从一个状态跳转到另一状态的晶体管数量。敏感信息不同,加密电路计算的数据不同,内部晶体管的状态和相应状态跳转也会不同。由于二进制逻辑电路中只存在于“0”和“1”两种状态,则电路中的状态跳转只有四种情况:0—0、0—1、1—0和1—1。针对状态跳转和功耗的关系,可以作出如下的合理假设:

推荐访问: 智能卡 功耗 分组 加密算法 分析