c语言sscanf函数的用法是什么
255
2022-11-23
基于MC9S08JS16和AES的USB Key设计
1 系统工作原理及硬件设计
2.1 USB设备初始化
2.2 AES加密算法
AES算法是基于置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES加密例程开始是拷贝16字节的输入数组到一个名为State(态)的4x4字节矩阵中。AES算法加密过程如图4所示。
下面简单分析AES(128 bits密钥)的加密过程:
SubBytes例程是一个代替操作,它将State矩阵中的每个字节替换成一个由Sbox决定的新字节,Sbox是初始化的1个16x16的矩阵。比如State[0,1]的值为0xXY,则被替换为Sbox表中Sbox[X,Y]的值。
ShifiRows是一个置换操作,它将State矩阵中的字节向左旋转。State的第0行向左旋转0个位置,State的第1行向左旋转1个位置,State的第2行向左旋转2个位置,而第3行则向左旋转3个位置。
MixColumns列混合变换过程,在该变换中将状态的每列视为有限域GF(28)中的多项式且被一个固定的多项式
,GF代表伽罗瓦域,将其用矩阵形式表示为:
乘积矩阵中的每个元素是系数矩阵中第i行元素与State矩阵第j列元素State[j]的乘积之和。这里的加法和乘法都定义在有限域GF(28)上;加法即按位异或,乘法遵循GF(28)上的多项式乘法规则。
AddRoundKey轮密钥加过程,State矩阵中的元素通过与一个轮密钥进行逐位异或而得。
KeyExpansion密钥扩展例程,用于产生密钥调度表W[]。例程用到了2个子例程RotWord和SubWord以及1个轮常数表Rcon。 RotWord将接收1个4字节的数组并将它们向左旋转1位,SubWord例程使用替代Sbox对给定的一行密钥调度表进行逐字节替换。该过程的循环为:
2.3 AES加密算法的优化
考虑到MCU性能,将加密算法初始化所需的4个256字节的数据表存放于Code区,128 bit-AES扩展密钥ExpendedKey=4xNbx(Nr+1)=4×4×(10+1)=176存放于data区。在保证代码空间与运算速度的前提下,经过优化,最后AES加密程序占用3 701字节的程序存储单元和277字节的
RAM。
以下是2组128位数据加密测试的结果:
4 结束语
与通用磁盘介质相比,UKev数据只在UKeY内留存,可以防止被非法复制,保证了数据的唯一性,有利于在公共场所使用。
该方案设计的UKey可完成短时间内对少量数据的加密,适用于对数据量要求较小的场合,安全性高,携带方便。在与电子商务以及各种以PC为基础的安全应用上具有其他产品不可替代的优越性。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~