3.2 旁路分析模型
如3.1节所述,CMOS电路的所有物理泄露,如延时、功耗和电磁辐射等,都与设备处理的数据密切相关。研究人员已利用这点提出了不同的旁路分析方法来猜测与密码操作相关的秘密信息。根据对物理泄露的统计处理,这些旁路分析方法主要可分为三类:简单功耗分析、差分功耗分析和相关功耗分析。除了这几类传统的分析方法,一个新的趋势是利用机器学习算法对旁路信号进行分析。这里暂不涉及这类研究。本节将重点讨论物理泄露的统计处理,不区分由功耗和密码操作产生的电磁辐射。根据旁路泄露起源分类的旁路攻击的详细内容将在3.4节讨论。
3.2.1 简单功耗分析
简单功耗分析(simple power analysis,SPA)的定义如下:SPA是一种可直接解释在密码操作期间收集的功耗测量技术。换言之,攻击者可直接通过所测得的旁路曲线来确定密钥,因为不同操作会消耗不同的功耗,任何与秘密数据相关的条件分支都可能泄露有关该数据的信息。
SPA的一个典型示例就是攻击非对称加密算法RSA的实现[7]。非对称加密算法RSA是基于数学的模幂运算。模幂运算的计算公式[8]:
式中,m为明文;c为密文;d为私钥指数;n为模量,可用从右到左的二进制方法(di为d的第i位)直接计算。
根据私钥指数d的每个位的值,决定是否只需进行平方运算,或需要同时进行乘法和平方运算。因此,循环中每一次消耗的功耗(或产生的电磁辐射)将根据私钥指数d的位值不同而不同。而且,通过简单地分析一条曲线,攻击者可以很容易猜测私钥指数d的位值。
简单功耗分析也可用于攻击对称密钥加密。文献[9]对AES密钥扩展的实现提出了SPA攻击。文献[7]描述了简单电磁分析的主要原理和方法,并针对AES电路进行了实际的简单电磁旁路攻击(SEMA)。
在实际情况下,攻击者可能并不完全知晓测试的密码算法,而且秘密设备在进行加密操作时所产生的旁路泄露也可能被测量噪声和工艺变化所掩盖。由于这些因素,因此简单旁路分析攻击在实际应用中较难实现。
3.2.2 差分功耗分析
差分功耗分析(differential power analysis, DPA)是根据设备在对各种输入数据进行加密或解密时记录的大量功耗曲线,揭示密码设备的密钥。与SPA分析相比,DPA的主要优势在于攻击者无需对设备和加密算法有详细的了解。相比之下,DPA是一种更强大的分析计算。到目前为止,很多研究人员都提出了针对DPA攻击方式的改良版,同时也给出了相应的防御策略。
本节将介绍针对高级加密标准(AES)进行DPA攻击的一般模式。图3.4中显示了使用128位输入和128位密钥的AES算法的加密过程。DPA的一般模式分为五步[10],一般模式的关系图如图3.5所示。
图3.4 AES算法的加密过程
图3.5一般模式的关系图[11]
1. 攻击点的选择
攻击者确定加密设备执行的加密算法的中间值。该中间值的选取必须符合一个函数f(d,k)。其中,d表示已知的输入数据(通常是明文或密文);k表示攻击者想要建立的密钥的一小部分(比如是密钥的第一个字节)。在实际实现时,针对AES的大多数攻击都会重点关注S-box的输出[12-14]。
2. 功耗测量
该攻击关注的是加密或解密不同数据块D时加密电路所产生的功耗。对于所有加密或解密操作,攻击者需要知道处理后数据d的值。该值可直接用于计算第一步中确定的中间值。已知值用向量表示,即。其中,表示处理后的输入数据第i块的结果。攻击者记录下在运算期间产生的功耗。对于每项功耗,对应一个已处理数据值,其中T表示功耗曲线的持续时间。攻击者应测量每个处理数据块D。因此,这些曲线可写成维数为D×T的矩阵T。
3. 假设功耗的估计
攻击者可将假设中间值视为函数f(d;k),取值范围为所有密码操作d和所有假设密钥k。可能的密钥值可写为向量k=(k1, …, kK)。其中,K表示可能密钥的总数。生成维数为D×K的假设中间值矩阵V。
之后,攻击者利用泄露模型,将假设的中间值与正在运行的密码设备的假设功耗相对应。这需要将矩阵V与矩阵H映射,其中矩阵H代表假设功耗。最常见的两种模型是前面讨论过的汉明重量模型和汉明距离模型。
4. 测量功耗曲线与假设功耗曲线的统计分析
攻击者使用平均数差值来比较假设功耗与测量功耗曲线。基于均数差的统计方法是通过计算两个被测组的平均数差来比较的。这种方法用来确定矩阵H和T纵列之间的关系。
攻击者首先创建一个二进制矩阵H。该矩阵将测量的功耗曲线分成两组。H的每列中,0和1的序列是输入数据d和估计密钥位的函数。为了确定估计密钥是否正确,攻击者可将矩阵T从横向分为两组(功耗用表示)。第一个数据文件包含T中对应中零的位置的那些行;第二个数据文件包含T的剩余行。随后攻击者计算出这些行的平均值。向量表示第一个文件中行的平均值,表示第二个文件中行的平均值。如果和之间有明显的差异,则表示估计密钥正确。该差异表示和T中部分列之间的关系。具体表示与对应的中间值被处理时的时间点。在某些情况下,均值向量之差可以是零。攻击结果为矩阵R。其中,每一行对应于向量与(估计密钥值)之间的差值。根据均值差法计算R的方程如下:
其中,n表示矩阵H的行数,即测量的功耗。
另一种改进的办法是考虑标准方差的均值距离。这种方法利用假设检验来比较两种不同分布均值之间的等同性。攻击者把矩阵T分成两组。每组包含一定数目的矩阵行,同时对应一种假设。与之前的方法相比,这种方法比较的是平均值。矩阵R中的每一项按照以下公式计算得到。
其中,si,j代表两组数据的标准方差。
3.2.3 相关功耗分析
相关功耗分析(correlation power analysis, CPA)方法[1]主要基于密码设备的实际功耗与泄露模型(如汉明重量模型)之间的关系。攻击者先用可能的密钥与功耗模型计算出假定值,然后计算假定功耗与实际功耗之间的相关系数,即皮尔森相关系数(Pearson correlation coefficient[15]),从而确定哪个可能的密钥为真正的密钥。当攻击者利用芯片的电磁辐射而不是功耗进行相关电磁分析时,CPA变成CEMA[5]。