APP下载

一种抗能量分析攻击的混沌密码系统

2022-05-06罗玉玲李天浩肖丁维丘森辉

关键词:掩码密文字节

罗玉玲,李天浩,肖丁维,丘森辉,3

(1.广西师范大学电子工程学院,广西桂林 541004;2.广西多源信息挖掘与安全重点实验室,广西桂林 541004;3.广西无线宽带通信与信号处理重点实验室,广西桂林 541004)

如今,信息传输环境变得更加严峻,信息安全变得尤为重要,越来越多的学者参与到了密码学这一研究领域中.为了提高信息传输的安全性,各种密码算法被提出[1-4],例如数据加密标准(Data Encryption Standard,DES),高级加密标准(Advanced Encryp⁃tion Standard,AES).由于密码学和混沌之间存在固有的关联性(例如,对初始条件的敏感性,迭代结果的伪随机性以及硬件实现的简单[5-6]),使得混沌密码系统成为一个可选方案.近年来,已经提出了许多基于混沌的文本加密[7-9]和图像加密方案[10-14],它们的安全性大多都是从数学、统计学特性进行分析的.然而从硬件角度来看,密码系统在实际应用时,会泄露能量或时间消耗、电磁辐射等侧信道信息[15-16].侧信道分析(Side Channel Analysis,SCA)就是分析这些侧信道信息与数据或操作之间的相关性[17-18].有学者证明常规的混沌密码系统在实际应用中存在被破解的风险[19],其设计的混沌密码系统虽通过了常规的安全性能测试,但是硬件密码系统在运行的过程中,不可避免地会泄漏能量.这些能量与加密操作中的中间数据有关,攻击者则可以通过收集能量并进行分析攻击从而得到敏感信息.

为了解决这类问题,本文提出了一种基于混沌的密码系统,其在一个8 位微控制器上实现.在该系统中,由密钥经过混沌映射生成轮密钥与随机序列数.随后,将明文、轮密钥与随机序列数组合生成中间数据,使密钥空间扩大了2128倍.此外,在该密码系统中设计了四种加密操作顺序,通过由随机序列数生成的操作数控制,使得操作随机化,以达到隐藏侧信道信息的目的.并且,对中间数据进行了位级和字节级的扩散,提高了密文的扩散性能.最后,本文从常规安全测试和硬件安全两个方面对其进行了安全性能分析.常规安全测试主要从字符频率、随机性、依赖性等进行测试,实验结果证明,该密码系统具有良好的安全性能.在硬件方面,利用相关能量分析(Correlation Power Analysis,CPA)攻击方法验证所提出的混沌密码系统的安全性能.实验结果证明,该密码系统在完成加、解密的任务时,可以有效抵抗能量分析攻击.

1 基础知识

1.1 混沌映射

由于混沌系统具有良好的输出遍历性和对初始值的敏感性,所以目前经常用于密码系统生成加密或解密所需的随机数.基于众所周知的阴影引理,许多人认为,通过迭代混沌映射生成的任何伪随机数序列在很大程度上保留了原始混沌映射的复杂动力学.然而,研究者发现数字混沌映射的动力学肯定会退化到一定程度.了解数字计算机中混沌映射SMN的网络结构,有助于在有限精度领域避免混沌动力学的不良退化,也有助于对混沌映射迭代生成的伪随机数序列进行分类和改进[20].

Logistic[21]和Tent[22]是非常经典的两种混沌映射,并且具有良好的混沌效果,能满足本文加密算法的需求,所以本文选择使用Logistic 和Tent 两种混沌映射,分别用于生成加密所需的轮密钥和随机序列数.本节将简单介绍Logistic 和Tent 混沌映射的基本原理.

1.1.1 Logistic映射

Logistic 映射是一种应用广泛的一维离散混沌映射.它被证明有良好的混沌性能,并且可以通过将初始值在[0,1]范围内伸缩,从而生成[0,1]范围内的混沌序列.它在数学上的定义式为

式中:a为控制参数,取值范围为[0,4].

1.1.2 Tent映射

Tent 映射是另一种一维离散混沌映射.当其输入值小于0.5时,将输出扩展到[0,1]范围内.当其输出大于或等于0.5 时,Tent 映射会将其输入值折叠到[0,0.5]的范围内,然后再生成[0,1]范围内的输出.它在数学上的定义式为

式中:u为控制参数,取值范围为[0,2].

1.2 分岔图

分岔图是将混沌的输出序列随着其初始值的混沌参数变化而引起迭代过程中输出的变化可视化.图1 给出了Logistic 和Tent 映射的分岔图,可以看出,在整个参数范围内,都会产生混沌现象.

图1 分岔图Fig.1 The bifurcation diagram

1.3 CPA攻击

在密码设备加密过程中,会生成一些与密钥相关的中间数据.这些中间数据在处理时可能会通过能量、电磁等方式泄漏.CPA 攻击是能量分析攻击中比较强大的一种攻击方法,它是利用了功耗与所处理数据之间的相关性,从而破获敏感信息.

首先,攻击者测量每次执行加密或解密操作时密码设备产生的能量消耗.其次,攻击者选择一个中间值函数将明文或密文与假设密钥相关联起来,并以此函数来计算假设中间值,该函数的表达式为f(d,k),其中d是明文或密文,k是密钥的一部分.再次,中间数据通过能量模型转化为假设能量消耗(常用的能量模型有汉明重量和汉明距离两种).最后,计算每个假设密钥的假设能量消耗与实测能量迹之间的相关性,相关性最高的则为正确密钥.用hd,i表示假设功耗矩阵中第i列的第d个元素,td,j表示实测功耗矩阵中第j列的第d个元素,和均表示均值.相关性计算公式为

2 密码系统

该密码系统在完成加、解密的任务时,可以有效抵抗能量分析攻击.该密码系统中采用的所有操作都是可逆的,所以是可以解密的.本节将对该密码系统的结构和操作流程进行介绍.

2.1 操作流程

图2 为提出的密码系统的整体框架图.其中每组明文和密钥长度为128位,并将128位的明文和密钥分为16字节.操作流程如下.

图2 加密算法的总体结构Fig.2 The overall structure of encryption algorithm

第一步:根据每个密钥字节,分别用Logistic 和Tent映射生成轮密钥和随机序列数.

第二步:将轮密钥、明文和随机序列数通过异或操作生成中间数据.其中随机序列数也作为掩码参与加密计算.

第三步:轮密钥加操作.即每一轮新的中间数据与对应的轮密钥进行异或操作.

第四步:随机操作.对随机序列数求均值得到操作数,通过依次对操作数从低二位到高二位进行判断,然后选择对应操作顺序对中间数据进行加密.

第五步:进行扩散混淆操作.主要包括S 盒替换、移位异或、P盒换位等.

第六步:加密M轮后,形成密文.其中M的取值应该是合理的值,因为M太大的话,不仅会导致加密的时间过长,还会增加资源消耗成本,M太小的话,会导致密文的扩散和混淆性能不足.本文首先参考了以前研究者对加密轮数的取值[9,23].此外,对于本文随机操作中存在的四种情况,充分运用随机序列数的每一位.基于此,本文将加密轮数M的值设为4.

2.2 轮密钥和随机序列数生成

每组轮密钥由初始密钥通过Tent 映射产生.首先将每组密钥ki的范围限制到[0,1],并将其作为Tent映射的初始值xi,即xi=ki/255.

然后其初始值xi进行20 次迭代,并将得到的浮点数映射到[0,255]之间的整数,设第m组轮密钥的第i个字节为xm,i,设轮密钥为RK,则轮密钥为

随机序列数的生成与轮密钥的生成操作基本一致,唯一不同的就是将Tent 映射改为Logistics 映射,设随机序列数为RS,则随机序列数为

Tent 映射和Logistic 映射参数的范围分别为[0,2]和[0,4],根据图1 的分岔图可知,Tent 映射的混沌参数r越接近2 和Logistic 映射越接近4 时,其混沌效果更好.本系统将Tent 映射的混沌参数r设1.999 887,Logistic 映射的混沌参数r设为3.999 888.将两个混沌参数都设置为只有密文接受者才能知道的秘密参数.

相比于传统的加密算法,攻击者只需要猜测密钥即可,本文由明文、轮密钥和随机序列数进行异或操作得到中间数据,其中随机序列数不仅控制随机操作,还作为掩码参与加密操作.当攻击者进行攻击时,则需额外将掩码计算在内,即扩大了密钥空间.本文是对128 位的文本进行加密,掩码也为128 位,所以密钥空间从2128变为了2128×2128,即相比原本的密钥空间扩大了2128倍.

2.3 掩码操作

掩码是保护加密系统免受CPA 攻击的有效方法.它通过使用随机生成的数字(掩码)隐藏敏感数据,使功耗独立于敏感数据.因为操作是基于屏蔽数据执行的,所以泄露的功耗与屏蔽数据相关,而不是与敏感数据相关,因此不可能利用功耗信息进行攻击.

本文采用加性掩码.掩码由混沌映射产生.将中间数据a和掩码m异或在一起,生成掩码中间数据am,即am=a⊕m.如果屏蔽数据am是线性运算T的输入,则输出结果为

由于T()是一个线性运算,式(6)可以写成T(am)=T(a⊕m)=T(a)⊕T(m).当需要去除掩码时,即可以计算T(am)和T(m)之间的异或结果,即T(am)⊕T(m)=[T(a)⊕T(m)]⊕T(m)=T(a).

掩码机制也存在一些缺点,特别是当一些中间数据用相同的掩码隐藏敏感信息以减少掩码的数量并加速操作时.例如,当中间数据a和b被相同的掩码处理时,即am=a⊕m,bm=b⊕m.处理am和bm时的功耗分别表示为和它们与中间数据相关,即∼(a⊕m)和∼(b⊕m).差分功率也与am和bm的异或结果相关,因此功耗与中间数据a⊕b之间存在相关性.二阶和更高阶的DPA 或CPA攻击可以使用这种相关性来进行攻击[24].为了克服这个限制,随机操作被用来增强加密算法的安全性.

2.4 随机操作

当执行CPA 时,首先需要对能量消耗数据进行对齐,即执行某一操作时产生的能量消耗可以定位到同一采样点的每一条能量迹中.例如,在对密码设备的一次能量消耗跟踪中,第1 000个采样点对应移位操作,对于其他的能量迹中,此采样点也应对应于同一操作的能量消耗.如果能量消耗数据未对齐,则需要更多的能量迹来攻击密码系统[25].其次,为了抵抗这种攻击方式,可以通过将某一操作发生的时间随机化这种方法来抵抗攻击.例如,加密一个明文块时,某个操作在第500 个系统时钟执行,但是加密另一个明文块时,该操作可能在第550 个系统时钟执行.为了实现执行时间随机化,添加随机延时和操作顺序随机化是两种常用的方法.然而如果添加太多的延时,会降低密码系统的性能,因此本文选用后者以增强混沌密码系统的安全性.本文设置了四种加密顺序,在每一轮加密时,系统都会根据操作数来选择具体执行哪一种加密顺序.

首先对由初始密钥经过Logistic 映射生成的随机序列数求均值,得到一个操作数X,因为生成的随机序列数每个值都在[0,255],所以X的取值范围也是[0,255],然后将其转化为一个八位的二进制,记为Xb.随机操作的判定流程如图3所示.

图3 随机操作判定流程图Fig.3 The random operation judgment flow chart

每一轮加密对其中两位进行判定,从最低两位开始,然后每一轮左移两位.每次判定会有四种情况,即00,01,10,11,因此该密码系统设计了四种加密操作顺序,以此对应于每种情况.例如,当情况为00 时,则执行第一种加密操作顺序,情况为01 时,则执行第二种操作顺序.该系统一共设置了四轮加密,每一轮判定两位,四轮加起来刚好等于8 位,充分利用了Xb的每一位.

2.5 混淆和扩散

在密码学中,混淆就是改变原本数据的值,使明文与密钥的关系复杂化.扩散就是通过改变原本数据的值来将明文或密钥的影响扩散到整个密文中[26].它们分别通过置换和换位操作实现.例如:S盒置换和P 盒换位.本文使用S-P 网络结构[27],即交替使用置换和换位操作.在该密码系统中,由于有四种操作顺序,所以这里以00的情况举例.

中间数据首先被S 盒替换混淆,S 盒是一个非线性替换表.本文采用的S 盒为AES 的S 盒,输入一个[0,255]的值,经过S盒后替换成对应的值.

式中:di为S 盒的输出,do为经过S 盒的输出.然后使用向左移位的异或操作(LSX),将中间数据中的每个字节与其后续字节相关联,即中间数据从高字节计算到低字节,最后一个字节保持不变.向右移位的加法操作(RSA)则相反,将中间数据与其前一个字节相关联.即中间数据从低字节计算到高字节,第一个字节保持不变.中间数据的第i个字节用Si表示,将x向左和向右循环移位y位分别用函数SL(x,y)和SR(x,y)表示.则LSX和RSA的表达式为

为了要将每个字节的值控制在[0,255]内,所以在执行向右移位加法操作时,需要对其结果模256.

组合模块一共包括三个操作,即P 盒换位、位序颠倒,以及位级移位.首先对得到的中间数据进行P盒换位操作.P 盒是通过随机排列[0,127]的所有数字.在本文中,P 盒定义如表1 所示.即按照P 盒对128位中间数据进行重新排列.然后基于整个中间数据,即128 位,进行位序颠倒操作.位序颠倒操作为:将中间数据的第一位与最后一位的值互换,第二位与倒数第二位的值互换,以此类推.即

表1 P盒Tab.1 P-box

最后将128 位中间数据向左循环移动一位.即最后一位的值等于第一位的值,其他每一位的值等于后一位的值.得到一个新的中间数据.即

3 安全性能分析

本节选用广泛使用的一些统计测试(包括字符频率测试、信息熵测试、依赖性测试、SP 800-22 测试)来评估该密码系统的安全性能.

3.1 字符频率测试

在密码学中,字符频率是推测密钥的重要途径之一.一些替代密码算法可以使用字符频率来攻击[28].因此,字符频率测试可以用来评价密码算法的安全性能.一个良好的密码算法所得到的密文分布应该是尽可能均匀的.本文将100 000 套(1 600 000 字节)随机明文通过固定密钥加密成密文,在加密过程中,明文和密文以ACSII 码的形式存储.然后对其明文和密钥进行字符频率计算.计算结果如图4 所示.由图4 可以看出,密文的ASCII 值大约都在0.003 9 左右,即1/256,分布十分均匀.因此,使用概率攻击是很难破解该密码系统的.

图4 字符频率测试Fig.4 Character frequency test

3.2 信息熵测试

熵最初是表示分子状态混乱程度的物理量.后来,在密码学中引入了熵的概念,即信息熵.信息熵被定义为离散随机事件的出现概率.用p(xi)表示字节xi的ASCII值在整个密文中出现的概率,则随机变量X的信息熵H(X)为

在理想状况下,加密算法得到的密文分布是绝对均匀的,即p(xi)=1/256,i∈[0,255],则等式可以转换为

本文对不同字节数量的密文进行了信息熵的计算,并与其他论文提出的密码系统进行了比较.如表2所示.

表2 信息熵Tab.2 Information entropy

当密文字节数为1 000 000 时,本文提出的密码系统的信息熵为7.999 8,非常接近8.此外,无论密文字节数量是5 000或者10 000时,其信息熵都大于其他两种密码系统.这意味着该密码系统具有良好的混淆性能.

3.3 依赖性测试

依赖性测试用来检测密码系统的扩散性.依赖性测试包括完备度dc、雪崩效应da和严格雪崩准则dsa三项测试指标.完备度是指密码系统的任何输出位都与所有输入位有关.雪崩效应是指明文或密钥的少量变化会引起密文的巨大变化.严格雪崩准则是指当任何一个输入位被反转时,输出中的每一位均有0.5 的概率发生变化.计算这三个参数的方式如下.

具有n位输入和m位输出的函数表示为f:向量表示通过对向量第ith位进行补码而获得的.对第i位输入位进行补码导致第j位输出位发生变化的输入数为依赖矩阵A中第(i,j)元素,用ai,j表示,用函数#{}表示计算集合元素的数量,则ai,j为

同样,对第i位输入位进行补码导致第j位输出位发生变化的输入数量为距离矩阵B中的第(i,j)个元素,用bi,j表示,用Hw(x)表示x的汉明重量,则bi,j为

通过上述的计算,完备度dc则可表示为

雪崩效应da为

严格雪崩准则dsa为

式中:S表示随机选取的密文数量的集合.

根据加密轮数的增加的,对依赖性进行了测试,结果如图5 所示.由图5 可以看出,当在第四轮后,雪崩效应和严格雪崩准则值的变化趋于平稳,故本文将加密轮数M设为4.

图5 不同轮数下da和dsa的值Fig.5 The values of da and dsa criteria in different rounds

一个出色的加密算法,应满足dc=1,da≈1,以及dsa≈1.本文对所提出的密码算法分析了10 000 000位随机密文,通过上述公式计算得到测试结果分别为dc=1,da=0.999 77,以及dsa=0.997 478.并与其他论文提出的密码系统进行了比较,结果如表3 所示.由表3 可以看出,所提出的密码系统,在da和dsa上都优于所对比的其他密码系统,即证明了该密码系统有良好的扩散性能.

表3 依赖性测试结果Tab.3 Dependency test results

3.4 随机性测试

在密码分析领域,NIST 颁布了一种用于统计随机数和伪随机数的测试标准800-22(SP 800-22),它包括15 个测试项目.每个测试项目中,p值大于0.01则表示密码算法通过了此项测试.一个加密算法如果能通过此测试,则表明它可以抵抗统计分析攻击.本文对由随机明文生成的10 000 000 位密文进行了测试,测试结果如表4 所示.由表4 可以看出,所提出的密码系统通过了全部的15 个测试项目,证明了该密码系统输出序列的随机性.

表4 SP 800-22 测试结果Tab.4 SP 800-22 test results

混沌系统的随机性和遍历性,可以有效避免弱密钥的产生.传统的一维混沌映射所迭代出来的序列可能是存在弱密钥的,但是所提出的密码系统并不是将经过迭代后的序列作为密文,而是经过了混淆和扩散操作后,生成密文.由字符频率和随机性等测试结果可知,所提出的密码系统具有良好的随机性能,即使输入的随机序列大多相同,生成的密文分布也是十分均匀的,即能够有效避免弱密钥的产生.

4 资源消耗及攻击结果分析

4.1 资源消耗

本文设计的密码系统通过Atmel XMEGA128-D4 微控制器实现,该芯片是8/16 位微控制器,时钟频率为7.37 MHz.然后与其他密码系统进行了资源消耗对比,包括AES、CWSN[8]、Protected CBC[9]、CBC[19]、Masked AES[31].本实验通过数据内存、程序内存和时间消耗来衡量资源消耗.结果如表5所示.

表5 资源消耗Tab.5 Resource consumption

由于本文提出的密码系统是基于混沌映射的,需要多次迭代计算,此外还有掩蔽和隐藏操作的存在,所以导致所提出的加密算法相比AES、CBC、CWSN,需要消耗更多资源.但是其时间消耗是小于CWSN 和Protected CBC 的.其中CBC 的混沌系统被证明不能抵抗能量分析攻击与基于机器学习的能量分析攻击[32-33],Protected CBC 的混沌系统采用了掩码的技术,虽然能抵抗能量分析攻击[9],但是相比本文所提出的混沌密码系统,在数据内存、程序内存和时间上的消耗更多.所以本文设计的密码系统在资源消耗上具有一定优势.

4.2 CPA攻击结果分析

为了进行CPA 攻击,将该加密算法在Atmel XMEGA128-D4 微控制器实现,然后采集加密过程中的能量消耗.在这项工作中,采集了500 条由随机明文、固定密钥生成的能量迹.图6 是能量迹中的一条.其中大概前1 700 个采样点处于随机数生成阶段,1 700到2 800个采样点则处于加密阶段.

图6 密码系统的能量迹Fig.6 The power trace of the cryptosystem

首先采用一阶CPA 对不同数量的能量迹进行攻击,实验结果如图7 所示.由图7 可以看出,即使随着能量迹数量的增多,相比错误密钥的相关系数,正确密钥的相关系数隐藏在错误密钥中,即无法通过CPA攻击得出正确密钥.

图7 CPA攻击结果Fig.7 CPA attack results

每个轮密钥和一个操作数定义为一个假设组合,则中间数据的每个字节有216种假设组合.此外,由于该密码系统设置了四种加密顺序,所以攻击者不能很好地确定攻击点.假设每轮加密执行的是一种加密顺序,且S 盒替换都是加密操作的第一步,则CPA的攻击结果如图8所示.

图8 假设攻击结果Fig.8 The result of the hypothetical attack

为了更直观地了解攻击结果,将相关系数排序,排序图如图9 所示.相关系数有了一个骤变到接近0.6 的过程,将该相关性的假设组合提取出来,发现一共有256 种可能,这意味着无法从最大的相关系数推断出正确密钥的组合.

图9 假设攻击结果排序图Fig.9 The sorting of hypothetical attack result chart

但是在实际攻击中,几乎不可能存在这种加密情况,所以,本文做出了另一种假设,攻击者默认第一轮加密都是执行S 盒替换,然后采用CPA 攻击,攻击结果如图10所示.

图10 随机攻击结果Fig.10 The result of random attack

可以看出,皮尔森相关系数仅在0.1 到0.25 之间,再将相关系数排序得到图11.由图11(a)可以看出:相关系数呈反双曲正切函数分布,并且最大与最小的相关系数差异很小.然后将相关系数大于0.20的假设组合提取出来,如图11(b)所示.可以看出最大概率与第二大概率相差不足0.02,且最大的皮尔森相关系数依然存在256 种可能,仍然是不能推断出正确密钥的组合.

图11 随机攻击结果排序图Fig.11 The sorting of random attack result chart

4.3 基于机器学习的攻击结果分析

为了进一步验证提出的混沌加密算法在抵抗能量分析攻击中的效果,采用基于机器学习的攻击方法[33]对该混沌加密算法进行安全性能分析.攻击结果如表6所示.

从表6 可以看出,实际密钥与攻击所得的密钥是不相同的.针对同一字节,攻击所得密钥与实际密钥的相关性最小相差0.071 299,最大相差0.667 533.相差最小的情况下,实际密钥在相关性中排名为17,所以无法得到实际密钥.即该混沌密码算法能够很好地抵抗基于机器学习的能量分析攻击.

表6 机器学习攻击结果Tab.6 Machine learning attack results

5 结论

为了抵抗能量分析攻击,本文设计了一种基于混沌的密码系统.该系统利用两个混沌映射Tent 和Logistic 分别生成轮密钥和随机序列数.中间数据由明文、轮密钥以及随机序列数处理后组成,使密钥空间扩大了2128倍.同时由随机序列数生成操作数,对执行操作进行随机化处理,从而隐藏了侧信道信息.此外,对于中间数据的处理基于位级和字节级扩散,这使得经过四轮加密后的扩散性能良好.实验结果表明,该密码系统能够通过常规安全测试且具有较好性能,并且能成功抵抗CPA 攻击.未来的工作是在提高密码系统安全性能的同时,进一步减少硬件资源消耗与提高密码算法的随机性.

猜你喜欢

掩码密文字节
AES高阶掩码方案抗功耗攻击
一种支持动态更新的可排名密文搜索方案
No.8 字节跳动将推出独立出口电商APP
基于模糊数学的通信网络密文信息差错恢复
旁路功耗分析中不同平台的差异化研究*
支持多跳的多策略属性基全同态短密文加密方案
密钥共享下跨用户密文数据去重挖掘方法*
什么是IPv6的前缀长度
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击