基于MC9S08JS16和AES的USB Key设计

网友投稿 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小时内删除侵权内容。

上一篇:Java匿名内部类方法调用
下一篇:探讨系统架构选择对电源和控制电路设计的影响
相关文章

 发表评论

暂时没有评论,来抢沙发吧~