基于安全芯片AES算法掩码方案探究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于安全芯片AES算法掩码方案探究

基于安全芯片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

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档