1掩码技术
在掩码方案中,密码算法的基本每个中间值都会被一个称为“掩码”的随机数进行变换,即vm=v*m。掩码一般由密码设备内部产生,并且在每一次执行中各不相同。运算*通常根据密码算法所使用的操作进行定义。运算*多为异或运算、模加运算或模乘运算。在模加运算和模乘操作中,模数根据密码算法选择。
通常,掩码直接应用于明文或密钥。为了能够处理掩码型中间值以及对掩码进行跟踪,需要对算法实现进行修改。加密的结果也是被掩码处理过的。因此,为了获得密文,还需要在计算结束时消除掩码,还原真实密文。
2布尔掩码和算术掩码
在布尔掩码中,密码运算中间值与掩码进行异或运算,即vm=v⊕m。在算术掩码中,密码运算中间值与掩码进行加法或是乘法算术运算。通常采用模加或模乘运算,即vm=v+m(modn)或vm=v×m(modn),其中,模数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也无依赖关系。
4AES算法
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电路实现的代价和性能。 |
核心期刊网(www.hexinqk.com)秉承“诚以为基,信以为本”的宗旨,为广大学者老师提供投稿辅导、写作指导、核心期刊推荐等服务。 核心期刊网专业期刊发表机构,为学术研究工作者解决北大核心、CSSCI核心、统计源核心、EI核心等投稿辅导咨询与写作指导的问题。 投稿辅导咨询电话:18915033935 投稿辅导客服QQ: 投稿辅导投稿邮箱:1003158336@qq.com |