硬件加密(共4篇)
硬件加密 篇1
摘要:本文提出了一种语音保密通信系统的设计方案, 分别从语音编解码模块、加密模块这两个方面描述了该加密系统的硬件设计, 分析表明, 该系统具有良好的语音加密性能。
关键词:AD73311,AMBE-2000,加密
语音是人们获取信息的重要手段, 语音通信是现代通信中最常用、最方便的通信手段之一。随着通信技术的发展, 针对语音通信的攻击也越来越严重, 如窃听、“电话跟踪”、电话劫持和拒绝服务等对语音通信安全构成了极大威胁, 因此, 研究语音加密, 对保障语音通信的安全十分重要。在研究语音通信保密性的同时, 也要考虑通话的实时性。本文所提出的语音保密通信系统设计方案, 首先将语音信号压缩, 以减少数据量, 而后用一种基于数字混沌序列的快速加密算法对压缩后的数据进行加密。此种方案能较好地满足我们在实际中对语音通信安全性和实时性的要求。
1、系统总体设计
该系统主要由语音编解码模块、加密模块这两大模块组成, 系统框图如图1所示。
在发送端, 系统首先将接收到模拟语音信号经A/D转换芯片转换成数字信号, 而后编解码芯片对转换后的数字语音信号进行压缩编码输出给加密模块, 最后加密模块完成对信号的加密操作。在接收端, 系统对信号的处理流程与发送端相反。
2 各模块设计
2.1 编解码模块
在此模块中, 本文采用AD73311模数/数模转换器芯片和AMBE-2000语音压缩/解压芯片对输入的语音信号进行编解码。
AD73311是美国AD公司推出的低成本、低功耗的数模转换器件。它具有可变增益的输入、输出放大器, 采样频率可通过编程改变, 小的转换群延时, 允许8个芯片级联, 自身带参考电压和低功耗等许多优良特性, 可广泛应用于信号处理、无线通信、数据通信等领域。
AD73311包括四个部分:A/D转换通道, D/A转换通道, 串行输入/输出端口和片内参考电压电路。有5种工作模式:程序模式、数据模式、混合模式、模拟环路模式、数字环路模式。其中前三种是正常的工作模式;后两种是调试模式, 仅在调试时使用。AD73311启动或者重置后即工作于程序模式, 此时可以通过串口往芯片内的控制寄存器写控制字, 来设定工作状态。设定完成后, 写“进入数据模式”的命令进入数据模式, 此时AD73311串行口输出的是A/D转换的16位数据, 输入的是D/A转换的16位数据。
AMBE-2000是一种高性能、低功耗的单片实时语音压缩解压芯片, 其压缩率可在2kbps~9.6kbps范围内由软件调节, 且具有FEC (前向纠错) 、VAD (语音激活检测) 功能和DTMF信号检测功能。AMBE2000可以分为两个独立的元件-编码器和解码器。编码器从语音串行接口接收8KHZ的语音采样数据流 (16位线性, 8位A律, 8位μ率) 并且在给定速率下输出通道数据流。解码器接收通道数据流, 然后合成语音数据流。AMBE-2000编码器和解码器接口时序是完全异步的。语音串行接口接A/D、D/A转换器, 我们选用的AD73311转换器配合AMBE2000使用, 在实际应用中取得了良好的效果。如图2所示是AMBE2000与AD73311的连接图
语音信号经过AD73311转换后的数据和控制信息, 以串行的方式送到声码器。声码器中的编码器接收到8KHZ的采样数据流, 然后输出压缩数据流给解码器;解码器对其进行解压缩, 同样输出8KHZ的语音数据流, 该数据流随后进入AD73311进行D/A转换, 并以差分的形式输出原始的语音信号。
2.2 加密模块
该模块以AT89C51单片机为核心来完成对数据的加解密操作。它接收到来自AMBE-2000的数据后用设计好的加解密算法对其进行加解密操作。为确保数据通信的保密性, 加解密算法的设计是关键。本文所设计的加密的算法是, 让输入的语音信号与一个混沌序列进行模2运算, 即:Yt=Xt⊕St其中, St为发送端的数字语音信号, Xt为发送端的混沌加密序列, Yt为加密后的信号。解密算法是, 让经加密处理后的语音数字信号与同样一个混沌序列进行模2运算。即:Sr=Yr⊕Xr;Yr=St+Nr其中, Sr为解密后的语音信号, Yr为接收端收到的加密信号, Nr为通道噪声。显然, 当收方与发方采用同一初始条件相同的混沌系统时, Xt=Xr;若双方在通信过程中信号传输无误, Nr=0, 则有St=Sr, 此时信号得以还原。
混沌序列的生成:
一类非常简单却被广泛研究的动力系统是Logistic映射, 其定义如下:
其中, 0<μ≤4称为分支参数, Xk∈ (0, 1) 。当3.5699…<μ≤4时, Logistic映射工作于混沌态。也就是说, 由初始值Xk在Logistic映射的作用下所产生的序列j是非周期的、不收敛的, 并对初始值非常敏感。
由于Xk∈ (0, 1) , 因此在计算机中采用浮点运算。但在实际的应用中, 浮点数运算内存需求大, 运算速度慢。又由于单片机对浮点数的运算能力十分有限, 用此生成序列几乎难以实现数字语音信号加密的实时性。研究发现, 我们可以通过关系式 (1) :
使混沌序列的浮点迭代过程变为适合单片机指令的整点迭代过程。转换过程如下:
令
从上式可知:X是十进制整数。由此就完成了从小数到整数的转换。
该方法运算量明显小于浮点运算, 它降低了对计算精度的要求。加快了运算速度。从而降低了对硬件电路的要求。
3 结束语
在数字语音加密通信系统中, 最重要的是加解密密钥的产生, 本文所采用的混沌序列生成方法, 减少了运算量, 加快了运算速度, 降低了对硬件电路的要求。使得加解密算法可在单片机上实现。理论分析表明, 该系统很好地满足了我们对语音保密通信的要求。
参考文献
[1]AD73311Datasheet, Analog Devices, Inc., 1998.
[2]AMBE-2000TM Vocoder Chip User's Manual Version4.8, 2007.
[3]Frey D R.Chaotic digital encoding:An ap-proach to secure communication.IEEE Trans.on CAS, 1993;CAS-40 (10) :660~666.
硬件加密 篇2
关键词:Hummingbird加密算法,FPGA,硬件实现
目前大多低配置的设备中均涉及到信息的传递,例如:智能卡、RFID标签等[1,2]。若这些信息被非授权用户获取将带来安全威胁。因此研究可嵌入此设备中的加密算法是必要的。当前有多种加密标准算法,例如DES、AES等,但这些算法通常需要大量的硬件资源来实现,同时响应时间较长,并不适合资源受限的系统[3]。
在众多加密算法中,Hummingbird 加密算法是Revere Security开发的一种轻型算法。由于其所需的硬件资源少、功耗低,被广泛应用于一些硬件资源受限的应用场合,例如:RFID和简易嵌入式系统等。Hummingbird加密算法易于软件实现,在不同的嵌入式平台中均有相应的实现和优化方案。
目前有多种不同的硬件架构被提出[4,5,6,7],以便使Hummingbird加密算法能适用于多种硬件资源受限的平台。但这些方法所使用的硬件资源同样较多,且加密速度较慢。针对这些问题,文中在基于FPGA硬件平台下,提出了一种Hummingbird加密算法的硬件架构。在响应时间基本相同的情况下,该硬件架构所占用的硬件资源相比其他的解决方案较少。
1 Hummingbird加密算法简介
Hummingbird加密算法结合了基于块和流的加密。整个加密过程包含两部分:初始化过程和加密/解密过程。在Hummingbird算法中,使用16 bit的块长度、256 bit的密钥长度和80 bit的内部状态寄存器。
1.1 初始化过程
Hummingbird算法的初始化过程包括,初始化4个内部状态寄存器,同时计算LFSR的初始值。4个状态寄存器RS1~RS4首先由16 bit的随机数产生器产生。初始化过程中,4个状态寄存器经过4次的更新过程,而同时更新的结果则作为LFSR的初始值。初始化过程的流程如图1(a)所示。
1.2 加密解密过程
在初始化过程后,明文首先与状态寄存器RS1进行模216的加运算,然后再进行块加密。在加密过程中,这些操作重复进行4轮,并得到最终的密文。其中,对应的4个状态寄存器也要经过相应的更新,同样LFSR也进行更新。整个加密过程如图1(b)所示。解密过程可参照加密过程的逆运算。
1.3 块加密过程
Hummingbird加密算法采用4个相同的块加密模块,每个块加密过程均是16 bit,密钥为64 bit。其过程如图2所示。块加密过程中的S-Box如下表所示。当中的线性变换过程定义如下
L(m)=m⊕(m×6)⊕(m×10) (1)
2 算法的FPGA硬件架构实现
由于Hummingbird加密算法是一种轻型加密算法,主要针对硬件资源受限的平台和应用场合,因此,提出了一种硬件资源使用较少的FPGA架构。
首先,对于块加密过程,用4个时钟周期来完成4轮的块加密,由于每轮加密过程的密钥均不同,因此需要一个选择器来选择正确的密钥,块加密过程的FPGA架构如图3所示。
在这一架构中,需要5个异或器、8个S-Box、一个线性变换过程及两个多路选择器。Hummingbird加密算法FPGA架构的顶层设计如图4所示。
在顶层架构中,块加密的输出首先被锁存器锁存,在初始化和每轮的加密过程反馈,以便更新状态寄存器。由于初始状态和每轮加密的状态寄存器更新机制不同,因此需要数据选择器来实现正确的更新,更新后的状态寄存器在每轮加密过程中,分别输入至块加密过程。同时,由于初始化过程需要随机数产生,因此,使用LFSR来实现,以便节省硬件资源。
3 结果分析
文中使用Xilinx FPGA Spartan-3平台,利用Verilog HDL来实现所提出的硬件架构。将所提出的架构和其他设计进行比较[4,5]。文献[4]第一次提出了Hummingbird加密算法的FPGA实现架构,但其所需的硬件资源较多。文献[5]提出的方法虽然花费得硬件资源少,但速度较慢,同时需要更多的存储器,实际所需的硬件资源并未减少。同时,文献[5]使用的是协处理器方法,并不能算作是硬件架构。
在表2中,给出了本次的方法和文献[4]的性能比较。
表2所示,提出方法所需的硬件资源比文献[4]少25 %,同时速度也提升了6 %。而在表3中,给出了文中的方法和文献[5]的性能比较。
相比于文献[5],提出方法虽然所需的Slices数量较多,却无需存储器,同时速度可提升约30 %。
4 结束语
文中提出了一种有效针对Hummingbird加密算法的FPGA硬件实现。该硬件架构相比其他方法可使用更少的硬件资源,同时速度上也优于其他方法。因此该架构可广泛用于RFID等硬件资源受限的加密平台中。
参考文献
[1]范文兵,葛峥,王耀.超高频RFID系统设计与仿真[J].计算机工程,2010,36(17):90-92.
[2]肖梦琴,沈翔,杨玉庆,等.Hummingbird算法在射频识别标签中的应用[J].计算机工程,2011,37(17):78-80.
[3]DZUNG D,NAEDELE M,VON T P,et al.Security for indus-trial communication system[J].Proceedings of the IEEE,2005(6):571-580.
[4]FAN X,GONG G,LAUFFENBURGER K,et al.FPGA imple-mentations of the Hummingbird cryptographic algorithm[C].Italy:IEEE International Symposium on Hardware-O-riented Security and Trust(HOST),2010.
[5]SMAIL S.Enhanced FPGA implementation of the Humming-bird cryptographic algorithm[M].UK:Sonylike Press,2005.
[6]THOMAS E,SANDEEP K,CHRISTOF P,et al.A survey of lightweight-cryptography implementations[J].IEEE De-sign&Test of Computers,2007,24(6):522-533.
硬件加密 篇3
时至今日互联网技术日新月异,网络普及率快速提高,越来越多的企业加入互联网行列,并且不断加速企业信息化的发展步伐。
随着企业的分支机构分布日益广泛以及对信息安全的日益重视,企业迫切需要一种技术把原有各个孤立的局域网联成一个整体,构筑一个安全、可靠、高效的信息传输和管理平台。虚拟专用网(virtual private network,VPN)以其独具特色的优势成为越来越多企业的首选。VPN是提供给企业之间或者个人与企业之间安全数据传输的隧道,而Open VPN无疑是Linux下开源VPN的先锋,它提供了良好的性能和友好的用户GUI。
1 OpenVPN技术
Open VPN是一套开源的基于SSL的VPN实现,能够在复杂的网络环境中建立一条虚拟通道,将通道两边的网络或节点连接起来,并能够保证通道数据的通信安全。因而Open VPN能够帮助企业内部网进行扩展,帮助远程用户、分公司机构以及商业伙伴与企业内部建立可信的安全连接,并保证数据的安全传输。
Open VPN允许参与建立的VPN单点使用预享的私钥、第三方证书或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库以及SSLv3/TLSv1协议。
Open VPN能在Linux、x BSD、Mac OS X与Windows2000/XP上运行。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。
1.1 Open VPN技术原理
Open VPN的技术核心首先是虚拟网卡,其次是SSL协议实现。首先对虚拟网卡及其在Open VPN中的工作机理进行介绍。
虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后就像在主机上多出现一个网卡,它可以像其他网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件向虚拟网卡发送数据,则服务程序可以读取到该数据。如果服务程序向虚拟网卡写入合适的数据,应用软件也可以接收得到。虚拟网卡在很多操作系统下都有相应的实现,这也是OpenVPN能够跨平台的一个很重要的原因。例如,Linux平台提供TUN/TAP虚拟网络设备,该设备为用户空间程序提供网络数据包的发送和接收能力。它既可以当做点对点设备(TUN),也可以当做以太网设备(TAP)。实际上,不仅Linux支持TUN/TAP虚拟网络设备,其他如Unix也是支持的,它们之间只有少许差别。
图1给出了采用Open VPN技术的网络拓扑图。从图1可以看出,在Open VPN系统中,用户通过物理链路远程连接Open VPN服务器。连接成功后,在用户和Open VPN之间建立了一条通道,这条通道就是所谓的虚拟专网。
此外,Open VPN实现了SSL协议。SSL协议已被广泛用于Web浏览器与服务器之间的身份认证和加密数据传输。
1.2 Open VPN技术验证
Open VPN提供了多种身份验证的方式,包括预享私钥、第三方证书以及用户名/密码组合,用以确认连接双方的身份。预享密钥最为简单,但它只能用于建立点对点的VPN。基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。
2 PKCS#11密码令牌接口标准
在密码系统中,PKCS#11是公钥加密标准(Public-Key Cryptography Standards,PKCS)中的一分子,由RSA实验室发布。它为加密令牌定义了一组平台无关的API,如硬件安全模块和智能卡。
由于还没有一个真正的标准加密令牌,此API已经发展成为一个通用的加密令牌的抽象层。PKCS#11 API定义最常用的加密对象类型(RSA密钥、X.509证书、DES/三重DES密钥等)和所有需要使用的功能(如创建和生成、修改和删除这些对象)。PKCS#11主要用于智能卡。大多数商业证书颁发机构的软件使用PKCS#11访问CA的签名密钥或注册用户证书。跨平台的软件需要使用提供PKCS#11接口的智能卡。
3 可行性分析
Open VPN技术可以通过PKCS#11接口标准支持硬件加密标识。如果将实现PKCS#11接口的加密硬件接入Open VPN系统,就可以实现硬件加密。
3.1 智能密码钥匙(KEY)结构特性
如果要采用智能密码钥匙作为加密设备及数字证书的存储载体,首先要了解智能密码钥匙的框架及其通信协议。我们以国内某公司的智能密码钥匙框架为例进行说明(如图2所示)。
KEY基于国产芯片配合其自主开发的智能卡操作系统COS(Chip Operating System)制成,支持PKI应用。KEY设计采用3层协议结构,底层为Bulk Only协议,用于主机和USB控制芯片之间的通信协议;主机和Key芯片通信采用SK协议(即简单KEY协议);Key芯片的COS协议包含在SK的数据包内。KEY接口遵循SCSI协议,主机和USB控制芯片之间通信利用SCSI的私有命令完成。
3.2 KEY提供PKCS#11接口
众所周知,PKCS#11只提供接口的定义,不包括接口的实现,通常接口的实现是由设备提供商提供的。KEY提供符合PKCS#11接口标准的API的实现。这样只要通过接口调用API函数即可实现其功能。KEY对于不同操作系统提供两种方式实现API函数的封装,一是Windows平台下的dll(动态链接库),二是Linux平台下的so(共享库)。
3.3 KEY提供加密算法
KEY智能密码钥匙的内部硬件能够快速产生1024位的RSA密钥对,完成RSA、3DES、Triple DES、SHA-1及SSF33等国家密码管理委员会认可的算法;密钥的产生、存储与运算都在硬件内完成,提高使用安全性;使用标准的USB V1.1/2.0接口和PC主机完成连接,即插即用;实现Microsoft CSP,支持Microsoft CAPI、PKCS#11;实现SSL和S/MIME协议所支持的安全通信功能,包括申请和存放数字证书,实现数字签名/签名认证、数据加密/解密等。
综上所述,采用KEY智能密码钥匙作为数字证书的载体及加密设备,就可以通过它所提供的PKCS#11接口实现与Open VPN的对接,从而实现Open VPN硬件加密。
4 设计及测试
根据智能密码钥匙结构及其硬件特性设计实现PKCS#11接口。PKCS#11标准接口可跨平台,实现时要考虑不同平台的兼容性和可移植性。在此基础上对OpenVPN进行协调,以达到通过PKCS#11接口访问相关硬件设备的目的。
4.1 设计及环境
Open VPN采用C/S(客户端/服务器)模式。我们将客户端安装在Windows系统下,将服务器端安装在Linux系统下进行测试。
4.1.1 服务器端的安装及配置
Open VPN是开放源码项目,在Linux系统中编译。Open VPN官方指定采用gcc方式进行编译。Open VPN需要调用open SSL库、用于数据压缩的lzo库、PKCS#11接口所需的pkcs11-helper库,因此这些库需要在系统平台上预先安装配置。过程如下:
(1)安装操作系统平台,如Red Hat Enterprise Linux(RHEL)6.3。安装后进行必要的配置,如驱动安装、网络设置等。
(2)从各官方网站上下载OpenSSL、lzo、pkcs11-helper、Open VPN源码压缩包。
(3)分别编译OpenSSL、lzo、pkcs11-helper和Open VPN。编译OpenSSL、lzo、pkcs11-helper和Open VPN的方法类似。编译Open SSL、lzo、pkcs11-helper会生成libssl.so、libcrypto.so、lzo.so和pkcs11-helper.so库文件,这些是Open VPN运行所需要的共享库。
Open VPN可按照以下命令进行编译:
(4)安装通过PKCS#11标准链接KEY的共享库,可选择安装在/usr/lib下,并使用动态链接库管理命令ldconfig让动态链接库为系统所共享。
(5)启动Open VPN前先对ip地址、端口、协议等进行配置,可以先在目录/etc/Open VPN/下建立文件server.conf,可通过修改这个文件实现对Open VPN的配置。
(6)通过PKCS#11标准调用硬件,这也需要在配置文件里设置,如在server.conf文件中添加以下语句:
其中''里包含的是通过动态库调用KEY所对应的id号。
(7)启动OpenVPN服务端。启动前将KEY插入计算机,检查系统是否已识别新插入的USB,然后通过以下两种方式启动Open VPN:
4.1.2 客户端的安装及配置
Open VPN为Windows提供GUI,此GUI操作简便,界面友好。过程如下。
(1)下载Open VPN GUI For Windows,注意使Open VPN GUI版本和OpenVPN Server版本配套。
(2)依屏幕指示安装Open VPN GUI。
(3)安装PKCS#11动态库。例如,将动态库openvpnpkcs11.dll复制到openvpn.exe对应的目录下。
(4)配置Open VPN GUI。进入Open VPN安装文件的config目录,修改client.ovpn文件中的相应配置,如remote(需要连接的服务器IP),port(端口),proto(协议,与服务器端一致)。与服务器端相同,在配置文件中添加PKCS#11动态库配置:
(5)通过Open VPN GUI启动OpenVPN客户端。
4.1.3 通过数字证书进行验证
Open VPN的客户端和服务器端都是通过数字证书进行验证的,所以在启动服务前必须将相应证书准备好。根证书(ca.crt)不论是服务器端还是客户端都需要,将它复制到相应目录(服务器端:/etc/OpenVPN;客户端:Open VPN安装文件夹的key目录下);服务器端还需要服务器证书和密钥,将两者存储到KEY中;客户端也需要用户证书和密钥,将两者存储到另一个KEY中。当Open VPN启动后,会通过PKCS#11标准接口从KEY中读取所需证书进行验证,也可以通过标准接口函数调用KEY中的加密算法。
4.2 系统测试
我们搭建了一个实验室环境进行测试(如图3所示),环境中安装了一台Open VPN服务器,一台WEB服务器(服务器上设置了一个下载应用,下载文件大小2GB),3台PC。每台PC通过虚拟机方式虚拟100个OpenVPN客户端,每个客户端通过服务器端访问WEB服务器。
测试时,根据以下几种情况进行。
(1)启动服务器端,单客户端接入。此时服务器CPU使用率从15%增加到22.8%,内存使用空间比初始状态增长7.2MB。当连接成功时,服务器恢复稳定工作状态,服务器CPU使用率为16.2%,内存使用空间比初始状态增长4MB。
(2)模拟300个用户同时接入。接入时,服务器状态如图4所示。
从图4可以看出,多用户同时接入时CPU瞬间使用率增长到30.6%,内存使用空间也在不断增长。所有用户连接成功后,服务器恢复到稳定状态,CPU使用率降低,略高于初始状态,内存使用空间比初始状态多100MB。
(3)在上述情况下,模拟10个客户端通过服务器端访问WEB服务器,并同时从WEB服务器高速下载共享文件。此时,服务器状态如图5所示。
从图5可以看出,服务器端CPU使用率明显增高,达到49%。内存使用空间增大,同时网络流量发生变化,下载达到6.3MBps,上传达到12.2MBps。10个客户端使用同样的下载软件,所以基本平分这些流量。
需要说明的是,由于实验室配置的网络速度为100MBps,上述流量对于服务器已经达到满负荷,而此时CPU使用率只达到一半,这种情况下,瓶颈出现在网络带宽上。可见,适当提高网络带宽,服务器还是可以负担的。此外,在提高带宽的同时还可以对服务器进行优化和升级,以适应高速发展的网络。
5 结束语
通过PKCS#11标准将硬件接入Open VPN很大程度提高了Open VPN的安全性能。存储于KEY中的数字证书不能被导出或复制,需要物理上获得其存储介质(即KEY),且KEY使用时需要输入其保护密码,这被称为双因子认证。这种认证手段是目前互联网上最安全的身份认证手段之一。另外,通过硬件实现加解密也增强了Open VPN网络通信的保密性。
摘要:随着企业对使用互联网的安全需求大幅提高,VPN技术成为重要的解决方案。OpenVPN作为Linux下开源VPN的先锋,得到了广泛研究和应用。采用PKCS#11标准将硬件加密设备(KEY,一种智能密码钥匙)接入OpenVPN,使身份验证所需的数字证书能够通过硬件读写、存储,并且使VPN加密算法及加密/解密过程能够通过硬件实现,从而进一步提高OpenVPN的安全性能。
关键词:OpenVPN,PKCS#11,数字证书,智能密码钥匙
参考文献
[1]James Yonan.OPENVPN[EB/OL].2002.http://openvpn.net/
[2]马臣云,王彦.精通PKI网络安全认证技术与编程实现[M]人民邮电出版社.2008.
[3]RSA Laboratories.PKCS#11:Cryptographic Token Interface Standard[EB/OL].2001.http://www.rsa.com/rsalabs/node.asp?id=2133,2009.
[4]James Yonan.OPENVPN HOWTO[EB/OL].2002http://openvpn.net/howto.html.
[5]郭学超,翟正军.OpenVPN体系安全性研究[J].科学技术与工程.2007.
硬件加密 篇4
本文介绍了如何使用MCF52235微控制器内集成的密码加速单元[3,6]实现AES相关算法[4,5],以及AES在网络通信中的应用。微控制器端使用TCP/IP协议栈ColdFire_Lite编写的网络通信程序与PC端进行通信。在实验过程中,使用由密码加速单元实现的AES算法分别对字符数据和图片数据进行了测试。最后,将实验过程中的明文、密文及对密文解密后得到的明文进行了比较。
1 密码加速单元
密码加速单元CAU(Cryptographic Acceleration Unit是一个指令级的协处理器,其支持的加密算法有:DES、3DES、AES、MD5和SHA-1。CAU可应用于网络设备、自动售货机、自动收费机等系统中。
CAU模块内含有8个32位寄存器。根据实现加密算法的不同,每个寄存器被分配给不同的参数,具体分配如表1所示。所有寄存器可以由协处理器存储指令cp0st.l读出和加载指令cp0ld.l写入。CAU共有22条命令,完成读/写各个寄存器和实现每种加密算法相应操作的功能。
2 使用密码加速单元实现AES相关算法
本应用将使用密码加速单元实现高级加密标准AES(Advanced Encryption Standard)相关算法。下面介绍数据加密的概念以及AES加密原理。
数据加密的基本过程就是对原来称为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,即密文。数据解密的基本过程是将密文使用与加密算法相对应的解密算法进行处理,使其转换成明文。数据的加密/解密模型如图1所示。
根据加密密钥与解密密钥是否相同,可以将密码系统分成两类:对称密钥系统和公开密钥系统。对称密钥系统的特点是加密密钥和解密密钥或者相同、或者实质上相同,即易于从一个密钥得出另一个。公开密钥系统的特点是其具有两个密钥,一个是公开的,谁都可以使用;另一个是私人密钥,只由采用此系统的人掌握,从公开的密钥推不出私人密钥。
AES是一个基于置换和代替运算的分组对称加密算法,置换是对数据位置重新进行安排(比如对数据进行移位操作),代替是将一个数据替换为另一个数据。AES的数据分组长度为128 bit,其密钥长度可以是128 bit、192 bit或者256 bit,在算法实现时,密钥首先要进行扩展(如密钥长度为128 bit的密钥要扩展为44字的密钥)。AES中众多参数与密钥长度有关,如表2所示,AES的加密算法与解密算法流程图结构相同。
使用密码加速单元实现AES相关算法即密钥扩展、加密和解密的流程图如图2所示。密码加速单元为实现AES加密算法提供了6条专用的指令:(1)指令cp0ld.l#(AESS+CAx)实现CAx的字节代换,结果保存到CAx;(2)指令cp0ld.l#(AESIS+CAx)实现CAx的逆字节代换,结果保存到CAx;(3)指令cp0ld.l
3 实验数据
实验通过微控制器MCF52235内集成的快速以太网控制器模块FEC与PC机相连接,从而构成一个只包含2台主机的以太网。在微控制器机使用TCP/IP协议栈ColdFire_Lite提供的网络编程接口函数编写网络程序,微控制器使用该网络程序与PC端进行数据交换。
实验主要对2类数据进行了测试:(1)字符数据:PC机使用AES加密算法对发送的字符数据进行加密,然后通过网络程序向微控制器端发送加密后的数据;微控制器接收到数据后使用由密码加速单元CAU实现的AES解密算法对接收数据进行解密,最后微控制器通过UART将解密后的数据发送到PC机,通过超级终端将解密后的数据显示出来并且与原字符串进行比较,如表3所示;(2)图片数据:在微控制器端使用由密码加速单元CAU实现的AES加密算法对一副位图数据进行加密,通过网络程序将加密后的数据发送到PC端,PC接收到数据后使用AES解密算法对接收数据进行解密,通过图片浏览器将解密后的图片数据显示出来并且与原图片进行比较,如图3所示。
如上述实验数据所示,经过AES加密后得到的数据是无法理解的,又因为AES的密钥长度是112 bit,如果采用穷举法破译(到目前为止,对AES密码的攻击没有比穷尽法更有效的方法)经过AES加密后的数据,需耗费相当长的时间,所以AES加密后的数据具有很高的安全性。
本文介绍了数据加密单元在网络安全方面的应用,详细描述了如何使用密码加速单元实现高级加密标准AES相关算法,并且将该算法应用到网络通信中,将实验过程中的明文、密文及对密文解密后得到的明文进行了比较。从实验中可以看出,使用数据加密单元实现的加密算法不仅代码简单,而且执行速度快。所以,对网络传输速度和数据安全性要求较高的嵌入式系统中,应该首先考虑采用数据加密单元实现加密算法。
摘要:介绍了使用密码加速单元实现的加密算法在嵌入式网络安全方面的应用,详细描述了使用密码加速单元实现高级加密标准AES的相关算法;并且将网络通信实验过程中的数据,即明文、密文及对密文解密后得到的明文进行了比较。
关键词:MCF52235,密码加速单元,ColdFileLite,AES
参考文献
[1]韩煜.嵌入式系统安全的密码算法及实现技术研究[D].武汉:华中科技大学,2009(4).
[2]李学梅,路而红,欧海文.AES算法的快速硬件设计与实现[J].电子技术应用,2006,32(5):48-50.
[3]BANNOURA M,BETTELHEIM R,SOJA R.ColdFire微处理器与微控制器[M].李晶皎,王爱侠,高晓兴,等译.北京:电子工业出版社,2008.
[4]刘玉珍,王丽娜,傅建明,等.密码编码学与网络安全—原理与实践[M].北京:电子工业出版社,2004.
[5]林柏钢.网络与信息安全教程[M].北京:机械工业出版社,2004.