基于c++的移动安全终端系统研究
摘 要:无线网络的开放性使移动通信网络面临着更多的安全威胁,如窃听和假冒等,安全技术受到越来越多的关注,本文给出了一种基于SDIO接口的智能移动安全终端系统的设计方案,实现了端到端的安全语音通信。
关键词:AES;SDIO ;VOIP
引言
随着移动通信产业的发展,其在民用,军用及相关商业领域的地位已经越来越重要,由于信息安全的需要,如何利用公开的移动通信网络安全的传输信息成为了目前急需解决的问题。现有技术中,移动通信端到端加密技术的实现主要有两类:一是通过改造手机硬件设备,加入用于加密的硬件模块,这种方案虽然加密强度高,但是需要特制手机,实现困难,功能单一;另一种是通过软件实现加密,这种方案虽然通用性强,但易被破解,数据安全得不到保障。鉴于已有端到端加密技术的缺陷,本文给出了一种基于SDIO接口的移动安全终端系统的设计方案,其优势在于兼得了硬件加密与软件加密之长,加密强度高,应用方便,并具有较好的功能扩展性。
一、智能加密移动终端系统设计
智能加密移动终端系统由两部分组成,基于SDIO的加密卡和智能手机(PDA),通过在具有SDIO插槽的智能手机中插入加密卡,在手机和服务器上安装部署相应软件后可以实现加密的VoIP通话的系统。
1.智能加密卡硬件设计
加密卡的硬件电路是由接口芯片、单片机和晶振以及外围电路构成。单片机是加密卡的运算核心,本文中选用ATMEL公司的单片机ATmega32,它负责解析送入单片机数据头部指令并执行相关加解密操作。晶振为接口芯片和单片机提供精确的外部时钟,接口芯片所需输入时钟为14.7456MHz,因此选取频率为14.7456MHz的晶振,并将其二分频后输入单片机,即单片机的输入时钟为7.3728MHz。
2.智能加密卡软件接口
由于接口芯片的存在,加密卡的对外数据接口为UART串口通信,在加密卡内部采用中断的方式对数据进行接收和发送,期间包括对数据帧的封装及缓冲处理,在主函数中实现对数据帧的AES加密及AES解密操作。本方案中基于对资源和效率的考虑,采用了循环缓冲的方式进行数据帧的处理。
3.移动终端对卡接口及体系结构
作为一个端到端语音加密通信系统,按照语音数据的流向,客户端软件系统可以分为三个层次:网络模块、控制模块、加密卡驱动模块。网络模块负责在网络上收发加密语音数据和协议指令数据;控制模块负责语音数据的采集、压缩以及软件的应用管理;加密卡驱动模块负责调用加密卡,实现对语音数据流的加解密。加密卡插入PDA 后,接口芯片会在PDA 中虚拟出一个串口COM6,通过对这个串口进行操作,按照一定的格式发送数据,就可以实现对加密卡的调用,使用加密卡做加解密操作。下面对移动终端(PDA)的串口相关操作进行介绍。
(1)串口的打开及初始化
对串口的操作封装成一个名为Serial 的类,串口的打开是通过调用系统提供的CreateFile 函数实现,这个函数在成功打开串口后会返回一个句柄hPort,通过hPort 可以完成对串口的操作,包括配置串口、读写数据等。配置信息写在一个名为DCB的结构体里,DCB结构体包含了关于串口配置的所有信息,包括波特率、传输模式、奇偶校验等,在本系统中对串口参数的配置表1所示:
表1 SDIO 串口配置参数
波特率115200 bps奇偶校验无字节长度8 bit停止位每字节一位停止位
端口事件检测超时参数ReadIntervalTimeoutMAXDWORDReadTotalTimeoutMultiplier0WriteTotalTimeoutMultiplier10WriteTotalTimeoutConstant1000(2)串口的写入
WritePort函数用于向串口写入数据;encryptSDwave函数用于向加密卡写入需要加密的数据,它是通过在数据头部加入加密指令并调用WritePort函数实现的;decryptSDnet函数用于向加密卡写如需要解密的数据,它的实现方法和encryptSDwave 函数类似,只是在数据的头部加上解密指令;在驱动程序中,数据将被顺序的放入一个在串口初始化时指定好大小的堆栈中,当数据写入较频繁时应注意此堆栈容量的设置,本文中设为14600bytes。
(3)串口数据的读出
读串口函数ReadPortThread在一个单独的线程上执行,在设定了串口检测事件为EV_RXCHAR后,通过WaitCommEvent函数对事件进行捕捉。从加密卡发回给智能手机的数据帧大小为145bytes,所以需要设置一个指针,在线程中接收到的数据为145bytes的整数倍时将数据读入数据处理缓冲并发送消息函数已进行相应的处理,对于被加密的数据包(即将要发送给对方的数据包),在消息处理函数中将通过RtpSend函数将其发送到网络中,对于被解密的数据包(即从网络中收到的对方的数据包),在消息处理函数中将对其进行语音解压缩并通过语音播放模块进行播放,整个流程如图6所示:
二、功能及性能测试
1.测试平台
以下功能的软硬件测试平台如表2所示:
表2 测试平台及环境
移动终端(PDA)多普达818Embedded Visual C++ Version4.0SDIO加密卡IAR Embedded workbench for Atmel AVR V4AVR Studio Version 4.13数据传输网络中国移动GPRS数据通道测试环境室内
加密功能及速度测试
通过在台式机上软件模拟AES的到一组测试数据如表3所示:
表3 AES测试数据
输入数据0x85, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff加密后数据0xa3, 0x2f, 0x4d, 0xb1, 0xa1, 0x99, 0x19, 0x3e,
0xef, 0x26, 0x13, 0x65, 0x2c, 0x5a, 0x79, 0x7d
在加密卡中循环调用加密操作,设置单片机引脚电平通过示波器观察加解密时间,十次的捕捉结果如表4所示:
表4 AES加密时间
12345678910加密时间(ms)1.71.51.71.82.01.71.81.82.01.7
将加密结果通过串口送入PDA,在PDA中将测试所得数据写入文件,解密功能的测试与加密相同,在此不再赘述,通过观察测试数据文件,结果正确。
3.语音通信测试
设语音采集包数量为N_wave, 收到的RTP网络数据包为N_net, 送入卡中进行加解密后在PDA端读串口线程中捕捉到的加密后的语音数据包数量为N_wave_E, 解密后的待播放的网络数据包的数量为N_net_D,通信延时(包括网络延时和加解密处理延时)为delay, 进行3次通话连接试验得到表5的测试数据:
表5 语音通话数据包测试
N_waveN_netN_wave_EN_net_DDelay(s)13002873002863240037639937553500481498
47954.测试小结
通过以上的功能和性能测试我们可以得出以下结论:SDIO加密卡能够正确高效的对数据包进行处理,在网络数据包较密集的出现时会出现少量丢包。语音质量接近IP电话,但是当网络情况时会出现轻微的丢音或拖音状况。由于语音是在数据通道上通过RTP协议传输,存在着随机的延时。
小结
本文主要介绍了基于SDIO接口的智能移动安全终端系统的设计,包括智能加密卡的硬件实现和软件接口以及移动终端(PDA)上层的体系结构及对卡接口的实现,并针对系统的各方面进行了功能和性能的测试,通过测试发现系统在硬件和软件方面还有比较大的改进空间,在加密卡的设计上可以使用更高速度的处理器并扩展出签名,认证等多项安全功能。并且随着我国3G牌照的发放,手机的功能不在局限于语音通话,可以进行安全电子商务功能的扩展,打造一个安全的移动电子商务终端。
参考文献:
.太原:中北大学计算机学院
上一篇:如何提高计算机基础课堂教学质量