陈敏超,李丽斯,何 虎,麻军平,许 杰
(清华大学 微电子学研究所,北京100084)
多媒体监控系统涉及了商业秘密或者私人信息等,因此监控系统中音视频数据在传输中的保密性非常重要,需要对音视频码流进行加解密。
本文基于LILY DSP[2]处理器,添加了安全认证的专用指令,并对各类算法进行了软件编码加速,实现了AES128/192/256和 DES/3DES的加解密,SHA1和 MD5的认证以及RSA数字签名算法。该款数字信号处理器采用了超长指令字(VLIW)结构,每个时钟周期可以并行处理6条指令,指令集采用了单指令多数据(SIMD)技术,具有矢量操作等特性,适用于各类安全认证算法。
该密码处理芯片(EDSP)首次实现符合安全防范监控数字音视频编码技术标准的可伸缩音视频编码(SVAC)码流的安全认证处理,具有高吞吐率,算法灵活等特点。
图1所示为系统的整体结构图。本系统中主处理器ARM负责系统的总体控制,音频处理器(ADSP)/视频处理器(VDSP)负责音视频编解码,密码处理器(EDSP)负责音视频码流的加解密、认证和数字签名。
密码处理器(EDSP)是一款6发射超长指令字数字信号处理器,图2为EDSP的结构图。EDSP分为六部分:指令获取模块,指令分发模块,指令执行模块,通用寄存器堆,控制寄存器堆和中断模块。EDSP含有6个平行的功能单元XA/YA,XM/YM,XD/YD。XA/YA是算术逻辑运算单元;XM/YM是乘法单元;XD/YD是存储器访问和分支控制单元。EDSP采用了分簇的结构,6个功能单元对称的放在了X簇和Y簇。寄存器堆分为X,Y和G三组,X,Y寄存器分别由X簇和Y簇功能单元访问,G寄存器为全局寄存器,可以由所有单元访问。该处理器主要应用于多媒体监控系统中,实现对音视频数据流的加解密与认证,从而确保数据的安全性、完整性和可鉴别性。
1.2.1 DMA控制器的设计介绍
DMA控制器接口遵循AMBA2.0总线规范[3],能同时配置8个参数集(两个通道参数集和6个链接参数集);支持双通道传输,每个通道支持多个方向的数据传输;单个参数集能支持二维的参数配置和不连续地址的数据传输;支持连接操作,连接是一个通道参数集可以连接到其它的6个链接参数集,实现不连续区域的数据传输;连接操作也可以应用于PING-PONG传输中不规则区域的数据传输;支持传输完成中断、传输错误中断以及参数集配置错误中断。
1.2.2 DMA在系统中实现的功能
DMA控制器的工作主要受主处理器ARM和EDSP的控制。DMA受主处理器ARM控制时,完成EDSP程序的搬运;DMA受EDSP控制时,完成音视频码流搬运、AES算法表格载入、RSA密钥的载入。
DMMU是数据存储管理单元,主要管理EDSP与各个模块之间的接口,如图3所示。EDSP与APB之间的接口主要是配置码流的通道信息,SVAC参数集,加解密算法选择,加解密分组模式,加解密分组长度r,认证算法选择等;EDSP与DMA之间的接口信号主要是EDSP配置DMA参数集;EDSP与bitstuff模块(伪包头处理)之间的接口寄存器主要是配置bitstuff开关,bitstuff的原始数据长度,bitstuff完成后的数据长度等。
图3 DMMU地址映射
PMMU是程序存储器管理单元,主要管理程序存储器与EDSP、DMA等之间的接口。
系统总体结构如图1所示,系统包含64个通道(8个用于音频加解密,56个用于视频加解密)。每个通道有两个BUFFER(PING BUFFER和PONG BUFFER),ADSP/VDSP对音视频数据进行编码,并且传输到通道BUFFER中。ARM负责总体控制,EDSP根据ARM配置信号完成相应通道的数据处理。如果有多个通道数据同时准备好时,EDSP通过查询方式逐一对各个准备好的通道进行处理。每个通道中两个BUFFER的数据,采用PING-PONG的方式进行处理。工作流程如下:
(1)系统初始化,ARM查询EDSP,ADSP/VDSP是否准备好;
(2)ADSP/VDSP将音频/视频编码数据写入相应通道的PING BUFFER;
(3)EDSP配置DMA,DMA将需要EDSP处理的数据流从PING BUFFER传入DRAM;
(4)DMA传输完成后,EDSP根据ARM配置信息选择工作模式,处理传入的码流;
(5)EDSP处理完成后,配置DMA,将处理后的数据从DRAM传到目的BUFFER,EDSP配置另一个DMA通道,将下一步要处理的码流从PONG BUFFER传入DRAM;
(6)等待PONG BUFFER码流传输完成信号,然后继续处理码流,周而复始,直到所有的码流处理完成。
2.2.1 密码处理器EDSP实现的主要加解密认证算法介绍
(1)加解密算法介绍以及硬件指令设计
1)DES/3DES[4],DES是一种明文分组为64位、有效密钥长度56位、输出密文64位的,具有16轮迭代的分组对称密码算法。DES由初始置换、16轮迭代和逆置换组成。3DES是DES的多重加密算法。多重加密算法使用同一算法,在多重密钥的作用下,多次加密同一个明文分组。该算法具有较高的安全性,算法的安全性依赖于密钥,不依赖于算法,算法完全确定,易于理解。
2)AES(128/192/256)[5],AES是一个迭代型密码算法,加密轮数Nr依赖于密钥的长度,密钥长度为128位,则Nr=10;密钥长度为192位,则Nr=12;密钥长度为256位,则Nr=14;
以上加解密算法主要是保证数据的保密性。对于上述算法,为了取得更好的性能,EDSP针对算法主要采取的方法是:①内部设计了8个64位寄存器,DES/3DES每次的处理单元为64位,AES每次的处理单元为128位。设计的64位寄存器能存放一个DES/3DES的处理单元,寄存器对能存放一个AES的处理单元。②设计了针对算法的专用指令。针对DES,设计了专用指令DESIP实现初始置换,DESROUND实现轮变换,DESIIP实现逆置换;针对AES设计的专用指令有,查表指令AES_SubByes、AES_ISubByes、AES_SubMix、AES_ISubMix,分别实现字节代换,字节代换反演,字节代换加列混合,字节代换反演加列混合反演,用专用指令AES_SHF、AES_ISHF实现行移位和行移位反演。
通过设计专用指令,EDSP实现加解密的性能得到了提升,达到了项目中要求的指标。
(2)认证算法:EDSP实现的认证算法主要有 MD5/SHA-1[6],MD5以512位的分组来处理输入文本,输出为128位的散列函数值;SHA-1是数字签名中经常使用的散列算法,能够处理的最大数据长度为264位,输出为160位散列函数值。认证算法SHA-1/MD5的输出作为数字签名算法的输入,保证数据在传输中的完整性和可鉴别性。
(3)公钥加密算法RSA[7]:EDSP实现了公钥加密算法RSA,用于数字签名。系统中实现的RSA算法密钥长度支持1024位与2048位。该算法保证数据传输后的可鉴别性和不可伪造性。
2.2.2 EDSP主要的工作模式
EDSP在系统中主要完成数据的加解密、认证以及认证摘要的数字签名,工作模式主要有:
(1)仅加密:加密的基本功能是实现音视频的保密通信,保密通信模型如图4(a)所示。EDSP实现的加解密主要有 DES,3DES,AES(128/192/256)。DES/3DES支持分组模式ECB/CBC/CFB/OFB,其中CFB,OFB分组长度r可以取8bits,16bits,32bits,64bits;AES支持分组模式 ECB/CBC/CFB/OFB/CTR[8],其中 CFB,OFB 分组长度r可以取8bits,16bits,32bits,64bits,128bits。ECB模式是最简单的模式,直接利用加密算法对明文分组进行加密,安全性较差,优点是对于大量数据的加解密可以并行处理。CBC模式中,加密算法的输入是当前的明文分组和上一次产生的密文分组的异或,输出为密文分组。此模式引入了反馈,较ECB模式安全。CFB模式实现有较大的灵活性,引入分组长度参数r,可以用r指定分组长度。OFB模式中,产生一个密钥流,可加密任意长度的数据,不需要数据填充。CTR模式具有随机访问性和高效性,适合用于对实时性和速度要求很高的场合。在仅加密的工作模式下,用户之间只传输密文,不带有摘要、签名等数据,接收方接收到之后只需要将数据解密即可。该方法只实现了对消息明文加密保护,可以提供传输中的保密性,不能保证传输中数据的完整性和可鉴别性。
(2)仅认证:EDSP实现的认证和数字签名算法主要有MD5,SHA-1,RSA。此种工作模式中不进行加密,因此,认证对象为明文。根据是否做数字签名,认证方式分为两种。第一,只有摘要,如图4(b)所示。如果只验证摘要信息,则摘要随明文一起传送到接收端。接收端将明文经过SHA-1/MD5处理后生成新摘要,然后新摘要与随明文一起发送的摘要对比,验证数据的完整性。第二,摘要加签名,如图4(c)所示。如果数据既要做认证也要做签名,则明文通过SHA-1/MD5生成摘要,摘要再用RSA(私钥)生成签名,然后将摘要去掉,将签名数据随明文一起发送。接收端收到数据包后,将明文经过SHA-1/MD5处理后生成摘要,与签名数据经过RSA(公钥)生成的摘要进行对比,验证明文的完整性和签名的有效性。此种方法不能提供保密性,适合于对消息提供完整性保护,而不要求保密性的场合。
(3)既加密又认证,明文经过加解密,认证,数字签名的流程如图4(d)所示,此种方式中,认证的对象可以是明文,也可以是密文,其余的流程跟以上两种流程相同。此流程保证了数据在传输过程中的保密性,完整性和有效性,适合于对机密性,完整性均有要求的场合。
图4是EDSP对码流做加密,认证,数字签名的流程,在实际的工作中可以选择以上3种工作模式中的任意一种。
该系统中编码后的数据格式主要分为两种:第一种为NONSVAC格式的数据码流,如果需要加密,则所有编码的输出都是需要加密的数据。第二种为SVAC格式的数据码流,此种格式的码流由一个或者多个NAL UNIT组成。NAL UNIT的数据格式如图5所示。SVAC格式的码流中,会对分散的单个或者多个NAL UNIT进行加解密,因此需要包头信息作为标志。一个NAL UNIT包括五部分信息,第一部分是NAL UNIT的起始码;第二部分,指定了NAL UNIT中有效数据负载的长度,数据负载距离起始码的偏移;第三部分,指定了NAL UNIT的类型,比如音频编码,视频P[9-10]帧编码,视频B帧编码,视频I帧编码等;第四部分为标志信息,有加密标识位,认证标志位,是否做过签名,使用哪种加密算法,哪种认证算法等;第五部分为NAL UNIT的数据负载,即要加解密,认证的编码数据。SVAC格式码流由一个或多个具有NAL UNIT结构的数据流构成,每个NAL UNIT均带有包头,标志一个NAL UNIT的开始。但是EDSP将负载数据加密后可能会产生伪包头。对于此问题,EDSP系统中加入了处理伪包头的bitstuff模块,需要把加密后码流中的伪包头进行破坏,保证每个NAL UNIT只有一个包头。同时,在解密之前需要将处理过的伪包头数据恢复,保证解密后数据的正确性。伪包头的处理流程如图6所示。
图5 SVAC码流数据格式
图6 加解密中处理伪包头流程
待加密的数据均是由音频或者视频解码器提供。由于提供数据的格式不同,EDSP加密的流程也有不同。以下分别介绍两种格式码流的处理流程与方法:
(1)EDSP处理NONSVAC码流:图7右半部分为EDSP处理NONSVAC码流的流程图。NONSVAC码流是不带数据包头的码流,处理流程比较简单。ARM通过APB接口配置加解密认证选择的参数信息以及通道的选择,EDSP读取ARM的配置信息,选择通道以及通道内的BUFFER,选择EDSP工作模式(仅加解密,仅认证,既加解密又认证),选择加解密算法(DES,3DES,AES),分组模式以及分组参数r,认证算法(MD5/SHA-1)等。EDSP会读取通道BUFFER上的所有码流,并且处理所有读入的数据,然后存储到目的BUFFER中。此过程中码流没有包头信息,因此EDSP不需要分析包头信息,也不需要打开bitstuff模块。
如果NONSVAC格式码流不需要进行加解密,则数据直接被传输到输出BUFFER中。
图7 EDSP对两种格式码流的处理流程
(2)EDSP处理SVAC码流:图7左部分为EDSP处理SVAC码流的流程图。SVAC码流包括包头信息。EDSP在处理SVAC码流时较复杂。EDSP的加解密方式类似于NONSVAC,不同的是EDSP在完成加解密时,需要根据情况打开bitstuff模块,并且能修改bitstuff前后的数据长度。在完成加解密,认证操作后,应将对应的标志位(加密标志位,认证标志位等)置1或者清0。如果整个SVAC码流均无需加密与认证,则不需要打开bitstuff模块。
对于SVAC音频/视频编码进行认证和签名分为两步,如图8所示:首先是对每个NAL UNIT进行认证,把生成的摘要数据进行缓存;第二步把连续的多个摘要再进行一次认证,生成二次摘要。对二次摘要进行数字签名,生成签名数据。
表1是DSP做加密/解密的性能数据。分组模式为ECB/CBC/CTR时,周期数指AES处理128bits数据,或者DES/3DES处理64bits数据需要的周期数。分组模式采用CFB/OFB时的加密性能数据,周期数是指算法每次处理r bits数据需要的时钟周期。DES/3DES时r≤64;AES时r≤128。
图8 SVAC格式音视频数据认证方式
表1 EDSP 做加解密的性能
EDSP做认证时的性能见表2。
表2 EDSP做认证时的性能
DSP通过调度流程做加解密与认证,当处理NAL UNIT大于10K的码流时,性能最大损失5%。假设有一帧10Mbit的高清图像,采用3DES的CBC模式加密,并且采用MD5进行认证。处理结果发送到接收端,再进行解密,延时一共为83ms,满足实时监控系统的需求。采用其它加密算法和认证算法组合,延时均小于83ms。CFB/OFB分组模式除外,这两种分组模式不符合实时性要求,在大吞吐量加解密时,不采用这两种分组模式。
EDSP系统的硬件设计在TSMC 55nm工艺下综合,EDSP的面积为305.1Kgates,DMA面积为9.98Kgates,DMMU面积为95.5Kgates,PMMU面积为1.92Kgates。
该款密码芯片处理器(EDSP)首次实现了可伸缩音视频编码(SVAC)码流的安全认证处理,包含AES128/192/256和DES/3DES的加解密,SHA1和 MD5的认证以及RSA数字签名等算法,并通过软件和FPGA对数据安全认证进行了大量的评估验证,实际测试结果表明,该DSP满足了监控系统安全认证的实时性、正确性、安全性等要求。在这基础上,希望可以进一步优化各种安全算法,提高性能,降低功耗,减小面积。
[1]Standard GB/T25724-2010,《security monitoring technical standards of digital video and audio codecs》(referred to as SVAC)[S](in Chinese).[标准号GB/T25724-2010,《安全防范监控数字视音频编解码技术标准》(简称SVAC)[S].]
[2]Zheng Shen,Hu He,Xu Yang.Architecture design of a variable length instruction set VLIW DSP[J].Tsinghua Science & Technology,2009,14(5):561-569.
[3]ARM.AMBATMBus specification 2.0[EB/OL].http://www.arm.com.2003.
[4]Behrouz A Forouzan.Cryptography and network security[M].MA Zhenhan,JIA Zhenhan,transl.Beijing Tsinghua University Press,2009:145-168,175-194,363-369(in Chinese).[Behrouz A.Forouzan.密码学与网络安全[M].马振晗,贾军保,译.北京.清华大学出版社,2009:145-168,175-194,363-369.]
[5]LIU Jiayong,REN Debin,HU Yong,et al.Applied cryptography[M].Beijing Tsinghua University Press,2008:41-130(in Chinese).[刘嘉勇,任德斌,胡勇,等.应用密码学[M].北京.清华大学出版社,2008:41-130.]
[6]FIPS PUB 180-1:Secure hash standard[S].
[7]PKCS#1V2.1:RSA cryptography standard[S].
[8]NIST Special Publication 800-38A:Recommendation for Balock cipher nodes of operation[S].
[9]audrey_guowei,the features of I-frame,P-frame,B-frame[EB/OL].http://www.360doc.com/content/10/0121/10/150654_14066509.shtml,2010(in Chinese).[audrey_guowei,I帧、P帧、B帧的特点[EB/OL/].http://www.360doc.com/content/10/0121/10/150654_14066509.shtml,2010.]
[10]BI Houjie.A new generation of video compression coding standard[M].Beijing:People’s Posts and Telecom Press,2005(in Chinese).[毕厚杰.新一代视频压缩编码标准[M].北京:人民邮电出版社,2005.]