导言
跟着互联网与电子商务的开展,网络信息安全问题显得尤为重要。数据保密改换或信息加密,成为对计算机信息进行维护的最有用和最牢靠的办法。各种加密技能如软件自校验、暗码加密、钥匙盘等软加密技能和扩展卡、并行口软件加密狗等硬加密技能应运而生,而USB接口密钥(USB Key)凭仗其共同的优势和极高的安全性备受喜爱。
USB Key是一种通过USB(通用串行总线)接口直接与计算机相连、具有暗码验证功用、牢靠高速的小型存储设备。USB Key的规划细巧精美、携带方便。由所以USB接口设备,USB Key通过USB端口供给的电源来作业,不需求额定的电源。USB Key本身所具有的存储器用于存储一些个人信息或证书,USB Key的内部暗码算法可认为数据传输供给安全的管道,适用于单机或网络运用的安全防护产品。
1 体系作业原理及硬件规划
USB Key(简称Ukey)通过USB接口与PC机相连,用户能够通过坐落PC机的客户端向Ukey宣布指令,Ukey通过内部固件中算法完结数据加密,然后将加密后的数据回来客户端。其作业原理如图1所示。规划选用了8位USB微操控器(MCU)MC9S08JS16,MC9S08JS16型MCU内置全速USB2.0操控器并集成了1个USB收发器,一起含有高达16 KB的Flash和512 B的RAM。
用户能够通过片内专用的3.3 V稳压器或VUSB3.3引脚外接3.3 V电源为USB收发器和上拉电阻供给电源,这儿选用片内的3.3 V稳压器为USB收发器供给电源(须使能USBCTL0寄存器的USBVREN位),硬件衔接图如图2所示。
USB模块需求两个时钟源,别离为24 MHz总线时钟和48 MHz参阅时钟。48 MHz时钟源由MCGOUT直接发生,为了取得48MHz时钟速率,MCG(通用时钟发生器)有必要被恰当装备为PLL使能的外部占用方式PEE(PLL EngagedExternal),外接一晶振。MC9S08JS16的USB模块挑选内部上拉电阻(使能USBCTL0寄存器USBPU位)USB主机通过检测上拉电阻检测USB设备的联合并确认设备速度。
2 体系软件规划
2.1 USB设备初始化
图3为USB模块初始化流程图,固件代码初始化USB模块,使其预备联合到USB主机。通过设置USBCTL0寄存器的RESET位,重置USB模块和一切寄存器为默许状况,完结对USB RAM,BD(buffer descriptor)寄存器的初始化,特别是关于端点0的BD,设置EPAD寄存器,指示端点寄存器在USB RAM中的存储,为了接纳DATA0数据包,状况与操控寄存器设置为(DTS=1,OWN=1,DATAO/1=0)。使能端点0,并依据硬件规划装备USB模块,使能上拉电阻,3.3 V稳压器与PHY。敞开USB模块和USB中止,设备被置为衔接状况。
2.2 AES加密算法
体系选用128位高档加密标准AES(Riindael)算法进行数据加密。AES(Advanced Encxyption Standard)是美国国家标准与技能研究所用于加密电子数据的标准,用于代替现有的DES算法,AES作为新一代的数据加密标准汇聚了强安全性、高功能、高效率、易用和灵敏等长处,被预期能成为公认的加密包含金融、电信和政府数字信息的办法。
AES算法是根据置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES加密例程开端是仿制16字节的输入数组到一个名为State(态)的4×4字节矩阵中。AES算法加密进程如图4所示。
AES的主循环对State矩阵履行4个不同的操作,标准中被称为SubBytes(字节替换)、ShifiRows(行位移改换)、MixColumns(列混合改换)和AddRoundKey(轮密钥加)。AES加密算法运用了一个由种子密钥字节数组生成的密钥调度表,AES标准中称之为密钥扩展例程(KeyExpans-ion)。
SubBytes例程是一个代替操作,它将State矩阵中的每个字节替换成一个由Sbox决议的新字节,Sbox是初始化的1个16×16的矩阵。比方State[0,1]的值为0xXY,则被替换为Sbox表中Sbox[X,Y]的值。
ShifiRows是一个置换操作,它将State矩阵中的字节向左旋转。State的第0行向左旋转0个方位,State的第1行向左旋转1个方位,State的第2行向左旋转2个方位,而第3行则向左旋转3个方位。
MixColumns列混合改换进程,在该改换中将状况的每列视为有限域GF(28)中的多项式且被一个固定的多项式C(x)=的模x4+1,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加密算法的优化
从式(1)矩阵函数能够看出,在软件完结进程中,只需重视怎么完结State矩阵元素在GF(28)中与0x01,0x02,0x03的乘法和加法。GF(2 8)顶用0x01的乘法相当于一般管用顶用l做乘法而且成果也相同,任何值乘以0x01等于其本身;用0x02做乘法,只要被乘的值小于0x80,这时乘法的成果便是该值左移一比特位,假如被乘的值大于或等于Ox80,这时乘法的成果便是左移一比特位再用值Ox1b异或,它避免了”域溢出”并坚持乘法的乘积在规模以内;用0x03做乘法时能够分解为2的幂之和,即0x03=0x02+Ox01。对程序进行优化,选用查表法,将16×16的Sbox表别离与Ox01,0x02,0x03相乘发生与Sbox相对应的3个256字节表:XtimeSbox[256]=Sbox[256],Xtime2Sbox[256],Xtime3Sbox[256]。将发生的表存储于code区。MixColumns进程与SubByte操作可通过以下程序完结:
3 USB Key功能测验
考虑到MCU功能,将加密算法初始化所需的4个256字节的数据表存放于Code区,128 bit-AES扩展密钥ExpendedKey=4xNbx(Nr+1)=4×4×(10+1)=176存放于data区。在确保代码空间与运算速度的前提下,通过优化,最终AES加密程序占用3 701字节的程序存储单元和277字节的RAM。
4 结束语
与通用磁盘介质比较,UKev数据只在UKeY内留存,能够避免被不合法仿制,确保了数据的唯一性,有利于在公共场所运用。
该方案规划的UKey可完结短时间内对少数数据的加密,适用于对数据量要求较小的场合,安全性高,携带方便。在与电子商务以及各种以PC为根底的安全运用上具有其他产品不行代替的优越性。