文献标识码: A
文章编号: 0258-7998(2010)07-0157-03
当前,IP网络百兆甚至千兆的速率已经成为可能,带宽的提升为、在IP网络上传输语音、视频提供了有力的前提条件。IP视频电话越来越多地得到广泛应用并将引领现代通信的潮流。但由于IP网络的开放性,敏感信息可能被轻易地窃取、篡改、非法复制和传播,因此对IP视频通信的保密性和可靠性提出了更高的要求。为了确保IP视频电话端到端的通信安全,必须对SIP信令和RTP音视频数据进行加密处理。
全球最大IP电话提供商Skype在其软件中内嵌了加密系统,安全专家Phil Zimmermann提出了ZRTP密钥协商协议并开发了IP电话安全软件Zfone,这些均采用软件方式实现加密,当处理器性能较低时,这种方式必然会影响到通话质量。为此本文设计了一种适合于IP视频电话的高速硬件加密引擎。
IP视频电话通信具有以下特点:
(1) 占用带宽大。目前常用音频算法编码速率约为10 Kb/s,视频算法编码速率约为1 Mb/s(视不同图像质量和算法而有不同)。
(2)实时性要求高。人的听觉对时延超过400 ms的语音信号比较敏感。
(3) SIP信令和RTP音视频数据采用UDP方式传输,UDP协议是面向非连接的协议,数据包在网络繁忙的情况下可能被丢弃。
针对这些特点,设计加密引擎协助IP视频电话终端完成各类数据加密功能,密钥协商和密钥管理由IP视频电话终端处理,两者之间通过SPI总线通信。
1 硬件设计
1.1 处理器选择
针对IP视频电话通信的特点处理器可以选择专用密码算法芯片,但在使用上缺乏灵活性,如果需要更改密码算法或者相关参数,需重新设计,因此本系统选用TI公司的DSP处理器TMS320C6416T。TMS320C6416T是基于VelociTI.2TM构架的32位定点高性能DSP处理器,主频高达1GHz,处理能力可达8 000 MIPS[1]。它采用超长指令字结构(VLIW),每个时钟周期可以执行8条指令。TMS320C6416T内部集成大容量存储器,采用两级缓存结构,即一级缓存(L1)和二级缓存(L2)。
TMS320C6416T强大的计算、数据存储能力大大缩短了实现各种算法的时间,迎合了IP视频电话通信的实时性要求。它既可用于IP视频电话终端加密,也可扩展用于其他大流量数据加密(如流媒体服务器)。在处理更改加密算法、系统参数和通信接口方面,相对于专用处理器,DSP更具灵活性和可扩展性。
1.2 硬件结构及注意事项
加密引擎以TMS320C6416T为核心,包括SDRAM、Flash、电源、JTAG接口、看门狗等。加密引擎和IP视频电话终端通过SPI总线通信,硬件总体结构如图1所示。
DSP作为系统的核心,在完成数据加解密运算的同时,还要与IP视频电话终端实时通信,交互SIP信令、音视频数据、种子密钥及控制命令等。
SDRAM采用HY57V283220T(4 M×32 bit),工作时钟为133 MHz,用于数据存储。Flash采用39VF800A(8 M×16 bit),存取速度为70 ns,100 000次可擦写,用于程序存储和DSP上电自举。电源为整个系统供电,看门狗用于监视系统的正常运行,JTAG接口用于DSP仿真调试。
IP视频电话终端除了向加密引擎发送待处理数据和命令外,还需具备密钥协商和管理、用户权限控制、网络传输等多种功能。在设计过程中,应重点注意以下问题:
(1) DSP、SDRAM等芯片的功耗较大,需根据具体功耗参数设置合理的电源和地线的布线宽度,注意电路板在物理空间的散热问题;考虑DSP为BGA封装,PCB应采用多层板设计(8层或更多层),设置单独的电源层和地层,以提高系统的可靠性。
(2) DSP工作在1 GHz主频下、SDRAM工作在133 MHz时钟频率下,布局布线时要充分考虑信号的完整性。在实际设计中采用合适的总线拓扑结构、合理的叠层结构,对高速数字信号线在仿真的基础上加入适当的端接消除信号反射,以解决高速信号完整性问题。
2 软件设计
2.1 算法选择及加密方式
2.1.1 AES算法和工作模式
IP视频电话数据流量大,SIP信令和音视频数据采用UDP方式传输,不可避免地存在数据丢包问题,因而使用分组密码算法较为合适。考虑密码算法的速度和安全性等因素,本系统采用AES分组密码算法实现各种数据端到端加密。
AES算法作为迭代分组密码算法其分组长度和密钥长度均可改变,在使用上更加灵活安全。论证表明,它能够抵抗所有目前技术水平下的已知和潜在的密码攻击,是更加安全可靠的加密算法。AES使用长为32×Nk(Nk=4、6、8)的比特流作为密钥,每次对长为32×Nb(Nb=4、6、8)比特的明文组进行加密,得到的密文组长为32×Nb比特,迭代轮数Nr=Max(Nb,Nk)+6。
AES算法有5种基本工作模式:ECB、CBC、OFB、CFB、CTR。考虑到IP数据包丢失问题,如采用反馈模式需考虑数据同步问题,因而降低了数据处理效率。而ECB模式简单易操作,不存在数据丢失产生的通信同步问题SIP信令中的会话描述符SDP和音视频数据都没有固定的格式,攻击者也难以通过统计特性分析密文,因而采用ECB模式是安全易行的。
2.1.2 数据加密方式
在IP网络中,视频和音频数据是分类打包、分段传输的,因而对它们的加密处理也需单独进行。目前针对视频数据主要有选择性加密和完全加密2种方式[4]。选择性加密利用视频数据的数据结构,对视频流中的部分数据(如I帧)加密,这有利于减小系统开销,但安全性较差。而完全加密不考虑视频数据结构,加密所有视频码流,虽然系统开销较大,但安全性较高。本系统对视频、音频数据、SIP信令均采用完全加密方式。
2.2 通信机制和数据格式
2.2.1 通信机制
DSP和IP视频电话终端通过SPI总线通信,SPI作为一种串行同步通信方式,通信速率可达到4 Mb/s或者更高,适合音视频数据传输。在本系统中,将DSP的多通道缓冲串行口McBSP[2]配置为SPI模式,IP视频电话终端配置为主设备,DSP配置为从设备。
采用中断方式接收或发送数据会增加CPU的负担。将增强型存储器直接访问EDMA[3]与McBSP结合使用,使得CPU加解密数据与EDMA数据接收或发送并行进行,将大大提高DSP的运行效率。具体流程为:(1)DSP通过McBSP接收待处理数据,将数据保存在指定映射的存储器中,随后EDMA通道搬运数据至片内L2缓存以供CPU提取并处理;(2)CPU加解密处理完成后,通过相反的路径发送给IP视频电话终端。为确保CPU数据处理和EDMA数据传输同步,在L2缓存开辟一对乒乓缓存(Ping-Pong Buffer),分别用于接收和发送数据。
2.2.2 数据格式
为了便于处理器之间的数据交互,定义通信数据格式如下:
数据头标志:长度为2 B,表示一个数据包的起始。
数据类型:长度为2 B,定义0x0001为IP视频电话终端发送的待加密数据,0x0010表示IP视频电话终端发送的待解密数据,0x0100表示DSP回送给IP视频电话终端的已加密数据,0x1000表示DSP回送给IP视频电话终端的已解密数据,0x0101表示IP视频电话终端发送的种子密钥,0x1010表示其他控制数据。
数据长度:长度为2 B,表示待处理数据的有效字节数。以太网帧的最大长度是1 500 B,因此不能超过这个长度。
数据头校验和:长度为2 B,防止头部因传输错误而执行误操作。
RTP数据载荷:小于1 500 B,表示加/解密数据、种子密钥、控制数据等。
2.3 软件设计要点
根据DSP系统架构,考虑AES算法和通信数据的特点,充分发挥DSP的数据处理能力是软件设计的重点。
2.3.1 AES算法优化设计
AES的轮函数由字节变换、行位移、列混合、密钥加4个部件组成[5]。(1)字节变换是非线性变换,独立地对状态的每个字节进行变换,可用代换表(S盒)的方式实现;(2)行移位是将状态阵列的各行进行循环移位;(3)列混合使用有限域上的矩阵乘法,可以用查表操作实现;(4)密钥加可以通过执行一个32位“异或”运算来实现。通过算法优化,可将有限域矩阵乘法和S盒简化为查表和“异或”两种基本运算,并充分利用DSP处理器32位总线结构特点,大大降低了算法复杂度。
2.3.2 使用软件流水技术
AES是迭代分组密码,共Nr轮迭代,一般采用C循环程序实现,循环是影响系统实时性的一个重要因素。软件流水技术用于设置循环内指令的运行方式,使循环的多次迭代能够并行执行。程序应该考虑合理的循环迭代次数,以保证软件流水能够顺利进行。将循环展开可以增加及并行执行指令数,从而改进流水编排,提升循环性能。同时应该正确使用pragma指示和-ms、-mh等编译选项。
2.3.3 合理设置CCS编译器选项
使用const关键字定义变量可提高代码性能和稳定性;联合使用-pm与-o3选项可进行程序级优化并有效地消除相关性;-mt选项有利于消除存储器相关性;这些选项都能大大提升代码的执行速度[6]。测试表明,选择C代码优化选项,可使AES算法的执行速度提高近一倍。
系统关键代码如下:
void main()
{ //初始化CSL
CSL_init();
//SPI配置
McBSP_config(&McBSPConfig);
//乒乓方式EDMA配置
EDMA_config(hEDMAPing, &EDMAConfigRcv);
EDMA_config(hEDMAPong, &EDMAConfigSnd);
//密钥扩展
KeyExpansion(CipherKey,ExpandedKey);
while(1)
{ //EDMA传输完成后对数据加解密密处理
if(EDMAFlag)
DataProcessing();
}
}
3 测试结果
3.1 加密速率
表1是CCS软件Profile对各函数指令开销的评估结果。
在该测试中,取Nb=Nk=4,Nr=10。经过DataProcessing运算加密1 536字节数据,总指令开销128600。取DSP速率8 000 MIPS,则运行时间为128 600/8 000=16.075 μs,加密运算速率为1 536×8/16.075=765.41 Mb/s。该数据吞吐量完全满足了IP视频电话的实时性要求。
3.2 效率对比
参考文献[5]在TMS320C54x DSP上实现了AES算法,表2给出两种实现方式的对比。
两种处理器的架构和处理速度是不同的,在软件设计上会有不同的处理方法,若仅考虑DSP速率对算法速率的影响,本系统加密效率更高。另外,本测试仅考虑了AES加密算法代码的指令开销,实际中还要考虑DSP存取数据、中断处理等其他任务。
系统首次采用DSP TMS320C6416T处理器,合理的硬件设计确保了系统的可靠性,EDMA与McBSP相结合的通信机制提高了通信效率,优化的软件设计提升了加解密速率。本系统已成功应用于IP视频电话保密通信,经扩展设计,也可以应用于多媒体服务器,实现多通道数据加密。本方案对VOIP、视频监控、视频会议等领域具有很高的参考价值。
参考文献
[1] Texas Instruments Incorporated. TMS320C6414T, TMS320C 6415T and TMS320C6416T fixed-point digital signal processors[Z]. 2008.
[2] Texas Instruments Incorporated. TMS320C6000 DSP Enhanced direct memory access (EDMA) controller reference ruide[Z]. 2004.
[3] Texas Instruments Incorporated. TMS320C6000 DSP Multichannel Buffered Serial Port (McBSP) Reference Guide[M]. 2004.
[4] 陈道敏,王正华,彭宇行,等. 流媒体安全技术研究与实现[J]. 计算机工程,2005,31(6):137-139.
[5] 章登义,毛从武,李永忠. AES算法及其在DSP中优化实现[J]. 计算机工程与科学, 2005,27(9):7-9.
[6] 任丽香, 马淑芬, 李方慧. TMS320C6000系列DSPs的原理与应用[M]. 北京:电子工业出版社,2000.