DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 805|回复: 0
打印 上一主题 下一主题

[接口电路] 基于MC9S08JS16和AES的USB Key设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-21 23:54:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随着互联网与电子商务的发展,网络信息安全问题显得尤为重要。数据保密变换或信息加密,成为对计算机信息进行保护的最实用和最可靠的方法。各种加密技术如软件自校验、密码加密、钥匙盘等软加密技术和扩展卡、并行口软件加密狗等硬加密技术应运而生,而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(态)的4x4字节矩阵中。AES算法加密过程如图4所示。
                          
                       
                          
                               




    AES的主循环对State矩阵执行4个不同的操作,规范中被称为Subbytes(字节替换)、ShifiRows(行位移变换)、MixColumns(列混合变换)和AddRoundKey(轮密钥加)。AES加密算法使用了一个由种子密钥字节数组生成的密钥调度表,AES规范中称之为密钥扩展例程(KeyExpans-ion)。
    下面简单分析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加密算法的优化
   
从式(1)矩阵函数可以看出,在软件实现过程中,只需关注如何实现State矩阵元素在GF(28)中与OxO1,0x02,0x03的乘法和加法。GF(2 8)中用0x01的乘法相当于普通算数中用l做乘法并且结果也同样,任何值乘以0x01等于其自身;用0x02做乘法,只要被乘的值小于0x80,这时乘法的结果就是该值左移一比特位,如果被乘的值大于或等于Ox80,这时乘法的结果就是左移一比特位再用值Ox1b异或,它防止了”域溢出”并保持乘法的乘积在范围以内;用0x03做乘法时可以分解为2的幂之和,即0x03=0x02+Ox01。对程序进行优化,采用查表法,将16x16的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。
    以下是2组128位数据加密测试的结果:
   



4 结束语
   
与通用磁盘介质相比,UKev数据只在UKeY内留存,可以防止被非法复制,保证了数据的唯一性,有利于在公共场所使用。
    该方案设计的UKey可完成短时间内对少量数据的加密,适用于对数据量要求较小的场合,安全性高,携带方便。在与电子商务以及各种以PC为基础的安全应用上具有其他产品不可替代的优越性。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-12 05:01 , 耗时 0.089050 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表