您好, 访客   登录/注册

基于安全芯片的AES算法掩码方案研究

来源:用户上传      作者: 张晓 李菁 张俊彦

  摘 要 任何防御对策的目标都是使密码设备的能量消耗不依赖于设备所执行的密码算法的中间值,掩码技术通过随机化密码设备所处理的中间值来实现这个目标。这种方法的一个优点是它可以在算法级实现,并且无需改变密码设备的能量消耗特性。也就是说,即使设备的能量消耗具有数据依赖性,掩码技术也可以使设备的能量消耗与所执行的密码算法的中间值之间无依赖关系。本文讨论掩码技术的工作方式并设计一种AES算法的掩码方案。
  关键词 信息安全;掩码技术;高级加密标准;功耗模型
  中图分类号:TP302.8 文献标识码:A 文章编号:1671-7597(2013)13-0069-02
  1 掩码技术
  在掩码方案中,密码算法的基本每个中间值都会被一个称为“掩码”的随机数进行变换,即vm=v*m。掩码一般由密码设备内部产生,并且在每一次执行中各不相同。运算*通常根据密码算法所使用的操作进行定义。运算*多为异或运算、模加运算或模乘运算。在模加运算和模乘操作中,模数根据密码算法选择。
  通常,掩码直接应用于明文或密钥。为了能够处理掩码型中间值以及对掩码进行跟踪,需要对算法实现进行修改。加密的结果也是被掩码处理过的。因此,为了获得密文,还需要在计算结束时消除掩码,还原真实密文。
  2 布尔掩码和算术掩码
  在布尔掩码中,密码运算中间值与掩码进行异或运算,即vm=v⊕m。在算术掩码中,密码运算中间值与掩码进行加法或是乘法算术运算。通常采用模加或模乘运算,即vm=v+m(mod n)或vm=v×m(mod n),其中,模数n的选取取决于密码算法。
  密码算法使用线性和非线性函数。由于线性函数满足如下性质:f(x⊕y)=f(x)⊕f(y)。因此,在布尔掩码中,线性运算会以一种易于计算的方式改变掩码m,这也就说明很容易对线性运算采用布尔掩码。而对于非线性运算,S(x⊕y)≠S(x)⊕S(y),例如,AES运算的S盒就是一种非线性运算。在这种情况下,对S盒采用布尔掩码就不合适,然而,S盒的计算基于有限域元素的乘法逆,即f(x)=x-1。S盒适用于采用乘法掩码,因为f(x×y)=(x×y)-1=f(x)×f(y)。但是,乘法掩码对中间值0无效。
  3 安全性证明
  SPA/DPA攻击的工作原理是密码设备的瞬时能量消耗依赖于设备所处理的中间值。掩码方案试图通过对中间值进行掩码来破坏这种依赖关系。如果中间值v被掩码,与之对应的掩码型中间值vm=v*m便与v无依赖关系。如果vm与v无依赖关系,则vm对应的能量消耗与v也无依赖关系。
  4 AES算法
  AES是一种对称的分组迭代加解密算法,其明文分组长度固定为128bit,密钥分组长度可为128bit,192bit和256bit,与DES的Feistel结构不同,AES轮运算具有替代-置换(S-P)结构,分别由密钥扩展、轮密钥异或(AddRoundKey)、字节替换(SubBytes)、行移位变换(ShiftRows)和列混合变换(MixColumns)构成。在通常的嵌入式应用中,密钥分组一般选择128b,对应的轮运算次数为11轮。明文输入为以字节为单位的4×4矩阵,即状态矩阵,所有的轮运算都在该矩阵上进行。首轮运算由初始密钥与状态矩阵经过简单的异或完成,中间9轮运算依次由对应的字节替换、行移位变换、列混合变换和轮密钥异或构成,最后l轮稍有不同,没有列混合变换。11轮运算除状态矩阵由寄存器缓存数据外,其余操作均为组合逻辑设计,1个时钟周期完成1次轮运算,11个时钟周期后得到密文输出。字节替换是AES运算中唯一的非线性操作,字节替换实现的面积、功耗在很大程度上决定了整个AES电路实现的代价和性能。
  5 AES算法掩码方案
  下面将讨论如何对AES轮变换的4个操作进行掩码,然后从整体上描述掩码方案,最后给出掩码方案的性能指标。
  5.1 轮操作掩码
  5.1.1 轮密钥异或AddRoundKey
  因为该方案使用m对子密钥的字节k进行掩码,所以执行AddRoundKey会自动对状态字节d进行掩码,即d⊕(k⊕m)=(d⊕k)⊕m。为了抵御SPA对密钥编排方案的攻击,对子密钥进行掩码也很重要。
  5.1.2 字节替换SubBytes
  AES中唯一的非线性操作是SubBytes。在微控制器上软件实现中,往往是通过查表实现SubBytes。因此需要用一个掩码型S盒来实现这个操作。
  5.1.3 行移位变换ShiftRows
  ShiftRows操作将状态中的各字节移到不同的位置。在此方案中,算法状态的所有字节均使用同一个掩码。所以,这个操作对掩码方案没有影响。
  5.1.4 列混合变换MixColumns
  MixColumns操作非常重要,因为它对同一列中不同行的字节进行混合。所以,MixColumns操作需要至少两个掩码。如果同一列中只用两个掩码,为了确保所有的中间值都被掩码,需要小心处理MixColumns操作,这可能会导致效率很低。所以,最好在此处算法状态的每一行都采用一个单独的掩码。
  这在整个AES掩码方案中,共使用了6个相互独立的掩码。前两个掩码m和m'分别为掩码SubBytes操作输入和输出的掩码。剩下的4个掩码m1、m2、m3和m4则为MixColumns操作的输入掩码。每一次AES加密开始时,需要进行两个预计算。首先,计算一个满足d(km)=(dk)m的掩码型S盒S;而后,将(m1、m2、m3和m4)应用于MixColumns操作,计算MixColumns操作输出的掩码。用(m'1、m'2、m'3、m'4)表示MixColumns操作输出结果的掩码。
  5.2 掩码流程   AES算法掩码一轮的流程如下:
  1)每一轮开始时,用m1'、m2'、m3'和m4'对明文进行掩码。
  2)执行AddRoundKey操作,其中子密钥是掩码的,并且会使得状态掩码从m1'、m2'、m3'和m4'变为m。
  3)在SubBytes操作中执行与S盒对应的查找表Sm,这样掩码改变为m'。
  4)在MixColumns操作之前,第一、二、三、四行的掩码从m'变为m1、m2、m3和m4。MixColumns操作把掩码从mi变为mi',其中,i=1,…,4。
  5)通过以上方式对任意轮操作进行掩码,当最后一轮加密结束时,通过最后的AddRoundKey操作消除掩码。
  5.3 掩码性能分析
  掩码处理在计算时间上的开销是很高的。提高的开销并非来自每一轮增加的操作,而是来自对掩码型S盒查找表的预计算。上节设计的AES掩码方案在8位微处理器上实现总共需要8240个时钟周期,同样的平台上的原始AES实现则需要4427个时钟周期。也就是说,掩码AES实现大约需要两倍的耗时。在8240个时钟周期中,大约2800个时钟周期,既有1/3的运行时间用来预算,包括:掩码型S盒、掩码型MixColumns输出以及掩码的预置。由于掩码处理不需要对AES算法的实现流程做太多修改,所以AES的每一轮操作(包括每轮密钥编排)由掩码所导致的额外运算仅需要78个时钟周期。
  由于对AES算法的功耗分析攻击,多是从第一轮发起,因此认为只对前几轮进行掩码,而去掉中间几轮的掩码,可以很大的改善掩码AES算法实现的性能,但实验表明:这种观点是错误的。在上节的实现方案中,去掉AES中间六轮的掩码仅仅减少了大约468个时钟周期,性能只提高了5.6%。
  6 结束语
  本文提出了基于安全芯片的抗功耗攻击的AES掩码算法实现技术。将AES算法中不同的变换转换为原子操作的序列,并使用不同的随机量对所有的中间值结果进行掩码。为达到运算性能与硬件复杂度之间较好的折衷,给出此掩码的性能分析。实验结果表明,本文提出的AES算法掩码方案实现技术可以一定的运算性能开销获得了高安全性,抵御功耗攻击。
  参考文献
  [1]Sigl, Georg: Kryptologie. Lecture notes, 2010.
  [2]Swoboda, Joachim, Stephan Spitz, and Michael Pramateftakis: Kryptographie und IT-Sicherheit:Grundlagen und Anwendungen. Vieweg + Teubner, 2008, ISBN 3834803484.
  [3]Mangard, Stefan, Elisabeth Oswald, Thomas Popp: Power Analysis Attacks: Revealing the Secrets of Smart Cards. Springer Science+Business Media, LLC, 2007, ISBN 978-0-387-30857-9.
  [4]Paul Kocher, Joshua Jaffe, and Benjamin Jun: Differential Power Analysis and Related Attacks, CRYPTO, ser. LNCS, vol. 1666. Springer, 1999, pp. 388-397.
  [5]Qi Zhang: Countermeasures on Side-channel attacks. Master Thesis of Technical University of Munich, 2011.
  [6]胡予濮,张玉清,肖国镇.对称密码学[M].北京:机械工业出版社,2002:219-220.
  [7]黄文平.AES的安全性分析[J].微型机与应用,2004(02):3-5.
  [8]STALLINGS W.密码编码学与网络安全第4版[M].孟庆树,王丽娜,傅建明,译.北京:电子工业出版社,2007.
  [9]KOCHER P,JAFFE J,JUN B.Differential power analysis[A].Advances in Cryptology-Proceedings of Crypto’99[C].Berlin: Springer-Verlag, 1999.388-397.
转载注明来源:https://www.xzbu.com/8/view-4643793.htm