陳敏超,李麗斯,何 虎,麻軍平,許 杰
(清華大學 微電子學研究所,北京100084)
多媒體監(jiān)控系統(tǒng)涉及了商業(yè)秘密或者私人信息等,因此監(jiān)控系統(tǒng)中音視頻數(shù)據(jù)在傳輸中的保密性非常重要,需要對音視頻碼流進行加解密。
本文基于LILY DSP[2]處理器,添加了安全認證的專用指令,并對各類算法進行了軟件編碼加速,實現(xiàn)了AES128/192/256和 DES/3DES的加解密,SHA1和 MD5的認證以及RSA數(shù)字簽名算法。該款數(shù)字信號處理器采用了超長指令字(VLIW)結構,每個時鐘周期可以并行處理6條指令,指令集采用了單指令多數(shù)據(jù)(SIMD)技術,具有矢量操作等特性,適用于各類安全認證算法。
該密碼處理芯片(EDSP)首次實現(xiàn)符合安全防范監(jiān)控數(shù)字音視頻編碼技術標準的可伸縮音視頻編碼(SVAC)碼流的安全認證處理,具有高吞吐率,算法靈活等特點。
圖1所示為系統(tǒng)的整體結構圖。本系統(tǒng)中主處理器ARM負責系統(tǒng)的總體控制,音頻處理器(ADSP)/視頻處理器(VDSP)負責音視頻編解碼,密碼處理器(EDSP)負責音視頻碼流的加解密、認證和數(shù)字簽名。
密碼處理器(EDSP)是一款6發(fā)射超長指令字數(shù)字信號處理器,圖2為EDSP的結構圖。EDSP分為六部分:指令獲取模塊,指令分發(fā)模塊,指令執(zhí)行模塊,通用寄存器堆,控制寄存器堆和中斷模塊。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寄存器為全局寄存器,可以由所有單元訪問。該處理器主要應用于多媒體監(jiān)控系統(tǒng)中,實現(xiàn)對音視頻數(shù)據(jù)流的加解密與認證,從而確保數(shù)據(jù)的安全性、完整性和可鑒別性。
1.2.1 DMA控制器的設計介紹
DMA控制器接口遵循AMBA2.0總線規(guī)范[3],能同時配置8個參數(shù)集(兩個通道參數(shù)集和6個鏈接參數(shù)集);支持雙通道傳輸,每個通道支持多個方向的數(shù)據(jù)傳輸;單個參數(shù)集能支持二維的參數(shù)配置和不連續(xù)地址的數(shù)據(jù)傳輸;支持連接操作,連接是一個通道參數(shù)集可以連接到其它的6個鏈接參數(shù)集,實現(xiàn)不連續(xù)區(qū)域的數(shù)據(jù)傳輸;連接操作也可以應用于PING-PONG傳輸中不規(guī)則區(qū)域的數(shù)據(jù)傳輸;支持傳輸完成中斷、傳輸錯誤中斷以及參數(shù)集配置錯誤中斷。
1.2.2 DMA在系統(tǒng)中實現(xiàn)的功能
DMA控制器的工作主要受主處理器ARM和EDSP的控制。DMA受主處理器ARM控制時,完成EDSP程序的搬運;DMA受EDSP控制時,完成音視頻碼流搬運、AES算法表格載入、RSA密鑰的載入。
DMMU是數(shù)據(jù)存儲管理單元,主要管理EDSP與各個模塊之間的接口,如圖3所示。EDSP與APB之間的接口主要是配置碼流的通道信息,SVAC參數(shù)集,加解密算法選擇,加解密分組模式,加解密分組長度r,認證算法選擇等;EDSP與DMA之間的接口信號主要是EDSP配置DMA參數(shù)集;EDSP與bitstuff模塊(偽包頭處理)之間的接口寄存器主要是配置bitstuff開關,bitstuff的原始數(shù)據(jù)長度,bitstuff完成后的數(shù)據(jù)長度等。
圖3 DMMU地址映射
PMMU是程序存儲器管理單元,主要管理程序存儲器與EDSP、DMA等之間的接口。
系統(tǒng)總體結構如圖1所示,系統(tǒng)包含64個通道(8個用于音頻加解密,56個用于視頻加解密)。每個通道有兩個BUFFER(PING BUFFER和PONG BUFFER),ADSP/VDSP對音視頻數(shù)據(jù)進行編碼,并且傳輸?shù)酵ǖ繠UFFER中。ARM負責總體控制,EDSP根據(jù)ARM配置信號完成相應通道的數(shù)據(jù)處理。如果有多個通道數(shù)據(jù)同時準備好時,EDSP通過查詢方式逐一對各個準備好的通道進行處理。每個通道中兩個BUFFER的數(shù)據(jù),采用PING-PONG的方式進行處理。工作流程如下:
(1)系統(tǒng)初始化,ARM查詢EDSP,ADSP/VDSP是否準備好;
(2)ADSP/VDSP將音頻/視頻編碼數(shù)據(jù)寫入相應通道的PING BUFFER;
(3)EDSP配置DMA,DMA將需要EDSP處理的數(shù)據(jù)流從PING BUFFER傳入DRAM;
(4)DMA傳輸完成后,EDSP根據(jù)ARM配置信息選擇工作模式,處理傳入的碼流;
(5)EDSP處理完成后,配置DMA,將處理后的數(shù)據(jù)從DRAM傳到目的BUFFER,EDSP配置另一個DMA通道,將下一步要處理的碼流從PONG BUFFER傳入DRAM;
(6)等待PONG BUFFER碼流傳輸完成信號,然后繼續(xù)處理碼流,周而復始,直到所有的碼流處理完成。
2.2.1 密碼處理器EDSP實現(xiàn)的主要加解密認證算法介紹
(1)加解密算法介紹以及硬件指令設計
1)DES/3DES[4],DES是一種明文分組為64位、有效密鑰長度56位、輸出密文64位的,具有16輪迭代的分組對稱密碼算法。DES由初始置換、16輪迭代和逆置換組成。3DES是DES的多重加密算法。多重加密算法使用同一算法,在多重密鑰的作用下,多次加密同一個明文分組。該算法具有較高的安全性,算法的安全性依賴于密鑰,不依賴于算法,算法完全確定,易于理解。
2)AES(128/192/256)[5],AES是一個迭代型密碼算法,加密輪數(shù)Nr依賴于密鑰的長度,密鑰長度為128位,則Nr=10;密鑰長度為192位,則Nr=12;密鑰長度為256位,則Nr=14;
以上加解密算法主要是保證數(shù)據(jù)的保密性。對于上述算法,為了取得更好的性能,EDSP針對算法主要采取的方法是:①內部設計了8個64位寄存器,DES/3DES每次的處理單元為64位,AES每次的處理單元為128位。設計的64位寄存器能存放一個DES/3DES的處理單元,寄存器對能存放一個AES的處理單元。②設計了針對算法的專用指令。針對DES,設計了專用指令DESIP實現(xiàn)初始置換,DESROUND實現(xiàn)輪變換,DESIIP實現(xiàn)逆置換;針對AES設計的專用指令有,查表指令AES_SubByes、AES_ISubByes、AES_SubMix、AES_ISubMix,分別實現(xiàn)字節(jié)代換,字節(jié)代換反演,字節(jié)代換加列混合,字節(jié)代換反演加列混合反演,用專用指令AES_SHF、AES_ISHF實現(xiàn)行移位和行移位反演。
通過設計專用指令,EDSP實現(xiàn)加解密的性能得到了提升,達到了項目中要求的指標。
(2)認證算法:EDSP實現(xiàn)的認證算法主要有 MD5/SHA-1[6],MD5以512位的分組來處理輸入文本,輸出為128位的散列函數(shù)值;SHA-1是數(shù)字簽名中經(jīng)常使用的散列算法,能夠處理的最大數(shù)據(jù)長度為264位,輸出為160位散列函數(shù)值。認證算法SHA-1/MD5的輸出作為數(shù)字簽名算法的輸入,保證數(shù)據(jù)在傳輸中的完整性和可鑒別性。
(3)公鑰加密算法RSA[7]:EDSP實現(xiàn)了公鑰加密算法RSA,用于數(shù)字簽名。系統(tǒng)中實現(xiàn)的RSA算法密鑰長度支持1024位與2048位。該算法保證數(shù)據(jù)傳輸后的可鑒別性和不可偽造性。
2.2.2 EDSP主要的工作模式
EDSP在系統(tǒng)中主要完成數(shù)據(jù)的加解密、認證以及認證摘要的數(shù)字簽名,工作模式主要有:
(1)僅加密:加密的基本功能是實現(xiàn)音視頻的保密通信,保密通信模型如圖4(a)所示。EDSP實現(xiàn)的加解密主要有 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模式是最簡單的模式,直接利用加密算法對明文分組進行加密,安全性較差,優(yōu)點是對于大量數(shù)據(jù)的加解密可以并行處理。CBC模式中,加密算法的輸入是當前的明文分組和上一次產(chǎn)生的密文分組的異或,輸出為密文分組。此模式引入了反饋,較ECB模式安全。CFB模式實現(xiàn)有較大的靈活性,引入分組長度參數(shù)r,可以用r指定分組長度。OFB模式中,產(chǎn)生一個密鑰流,可加密任意長度的數(shù)據(jù),不需要數(shù)據(jù)填充。CTR模式具有隨機訪問性和高效性,適合用于對實時性和速度要求很高的場合。在僅加密的工作模式下,用戶之間只傳輸密文,不帶有摘要、簽名等數(shù)據(jù),接收方接收到之后只需要將數(shù)據(jù)解密即可。該方法只實現(xiàn)了對消息明文加密保護,可以提供傳輸中的保密性,不能保證傳輸中數(shù)據(jù)的完整性和可鑒別性。
(2)僅認證:EDSP實現(xiàn)的認證和數(shù)字簽名算法主要有MD5,SHA-1,RSA。此種工作模式中不進行加密,因此,認證對象為明文。根據(jù)是否做數(shù)字簽名,認證方式分為兩種。第一,只有摘要,如圖4(b)所示。如果只驗證摘要信息,則摘要隨明文一起傳送到接收端。接收端將明文經(jīng)過SHA-1/MD5處理后生成新摘要,然后新摘要與隨明文一起發(fā)送的摘要對比,驗證數(shù)據(jù)的完整性。第二,摘要加簽名,如圖4(c)所示。如果數(shù)據(jù)既要做認證也要做簽名,則明文通過SHA-1/MD5生成摘要,摘要再用RSA(私鑰)生成簽名,然后將摘要去掉,將簽名數(shù)據(jù)隨明文一起發(fā)送。接收端收到數(shù)據(jù)包后,將明文經(jīng)過SHA-1/MD5處理后生成摘要,與簽名數(shù)據(jù)經(jīng)過RSA(公鑰)生成的摘要進行對比,驗證明文的完整性和簽名的有效性。此種方法不能提供保密性,適合于對消息提供完整性保護,而不要求保密性的場合。
(3)既加密又認證,明文經(jīng)過加解密,認證,數(shù)字簽名的流程如圖4(d)所示,此種方式中,認證的對象可以是明文,也可以是密文,其余的流程跟以上兩種流程相同。此流程保證了數(shù)據(jù)在傳輸過程中的保密性,完整性和有效性,適合于對機密性,完整性均有要求的場合。
圖4是EDSP對碼流做加密,認證,數(shù)字簽名的流程,在實際的工作中可以選擇以上3種工作模式中的任意一種。
該系統(tǒng)中編碼后的數(shù)據(jù)格式主要分為兩種:第一種為NONSVAC格式的數(shù)據(jù)碼流,如果需要加密,則所有編碼的輸出都是需要加密的數(shù)據(jù)。第二種為SVAC格式的數(shù)據(jù)碼流,此種格式的碼流由一個或者多個NAL UNIT組成。NAL UNIT的數(shù)據(jù)格式如圖5所示。SVAC格式的碼流中,會對分散的單個或者多個NAL UNIT進行加解密,因此需要包頭信息作為標志。一個NAL UNIT包括五部分信息,第一部分是NAL UNIT的起始碼;第二部分,指定了NAL UNIT中有效數(shù)據(jù)負載的長度,數(shù)據(jù)負載距離起始碼的偏移;第三部分,指定了NAL UNIT的類型,比如音頻編碼,視頻P[9-10]幀編碼,視頻B幀編碼,視頻I幀編碼等;第四部分為標志信息,有加密標識位,認證標志位,是否做過簽名,使用哪種加密算法,哪種認證算法等;第五部分為NAL UNIT的數(shù)據(jù)負載,即要加解密,認證的編碼數(shù)據(jù)。SVAC格式碼流由一個或多個具有NAL UNIT結構的數(shù)據(jù)流構成,每個NAL UNIT均帶有包頭,標志一個NAL UNIT的開始。但是EDSP將負載數(shù)據(jù)加密后可能會產(chǎn)生偽包頭。對于此問題,EDSP系統(tǒng)中加入了處理偽包頭的bitstuff模塊,需要把加密后碼流中的偽包頭進行破壞,保證每個NAL UNIT只有一個包頭。同時,在解密之前需要將處理過的偽包頭數(shù)據(jù)恢復,保證解密后數(shù)據(jù)的正確性。偽包頭的處理流程如圖6所示。
圖5 SVAC碼流數(shù)據(jù)格式
圖6 加解密中處理偽包頭流程
待加密的數(shù)據(jù)均是由音頻或者視頻解碼器提供。由于提供數(shù)據(jù)的格式不同,EDSP加密的流程也有不同。以下分別介紹兩種格式碼流的處理流程與方法:
(1)EDSP處理NONSVAC碼流:圖7右半部分為EDSP處理NONSVAC碼流的流程圖。NONSVAC碼流是不帶數(shù)據(jù)包頭的碼流,處理流程比較簡單。ARM通過APB接口配置加解密認證選擇的參數(shù)信息以及通道的選擇,EDSP讀取ARM的配置信息,選擇通道以及通道內的BUFFER,選擇EDSP工作模式(僅加解密,僅認證,既加解密又認證),選擇加解密算法(DES,3DES,AES),分組模式以及分組參數(shù)r,認證算法(MD5/SHA-1)等。EDSP會讀取通道BUFFER上的所有碼流,并且處理所有讀入的數(shù)據(jù),然后存儲到目的BUFFER中。此過程中碼流沒有包頭信息,因此EDSP不需要分析包頭信息,也不需要打開bitstuff模塊。
如果NONSVAC格式碼流不需要進行加解密,則數(shù)據(jù)直接被傳輸?shù)捷敵鯞UFFER中。
圖7 EDSP對兩種格式碼流的處理流程
(2)EDSP處理SVAC碼流:圖7左部分為EDSP處理SVAC碼流的流程圖。SVAC碼流包括包頭信息。EDSP在處理SVAC碼流時較復雜。EDSP的加解密方式類似于NONSVAC,不同的是EDSP在完成加解密時,需要根據(jù)情況打開bitstuff模塊,并且能修改bitstuff前后的數(shù)據(jù)長度。在完成加解密,認證操作后,應將對應的標志位(加密標志位,認證標志位等)置1或者清0。如果整個SVAC碼流均無需加密與認證,則不需要打開bitstuff模塊。
對于SVAC音頻/視頻編碼進行認證和簽名分為兩步,如圖8所示:首先是對每個NAL UNIT進行認證,把生成的摘要數(shù)據(jù)進行緩存;第二步把連續(xù)的多個摘要再進行一次認證,生成二次摘要。對二次摘要進行數(shù)字簽名,生成簽名數(shù)據(jù)。
表1是DSP做加密/解密的性能數(shù)據(jù)。分組模式為ECB/CBC/CTR時,周期數(shù)指AES處理128bits數(shù)據(jù),或者DES/3DES處理64bits數(shù)據(jù)需要的周期數(shù)。分組模式采用CFB/OFB時的加密性能數(shù)據(jù),周期數(shù)是指算法每次處理r bits數(shù)據(jù)需要的時鐘周期。DES/3DES時r≤64;AES時r≤128。
圖8 SVAC格式音視頻數(shù)據(jù)認證方式
表1 EDSP 做加解密的性能
EDSP做認證時的性能見表2。
表2 EDSP做認證時的性能
DSP通過調度流程做加解密與認證,當處理NAL UNIT大于10K的碼流時,性能最大損失5%。假設有一幀10Mbit的高清圖像,采用3DES的CBC模式加密,并且采用MD5進行認證。處理結果發(fā)送到接收端,再進行解密,延時一共為83ms,滿足實時監(jiān)控系統(tǒng)的需求。采用其它加密算法和認證算法組合,延時均小于83ms。CFB/OFB分組模式除外,這兩種分組模式不符合實時性要求,在大吞吐量加解密時,不采用這兩種分組模式。
EDSP系統(tǒng)的硬件設計在TSMC 55nm工藝下綜合,EDSP的面積為305.1Kgates,DMA面積為9.98Kgates,DMMU面積為95.5Kgates,PMMU面積為1.92Kgates。
該款密碼芯片處理器(EDSP)首次實現(xiàn)了可伸縮音視頻編碼(SVAC)碼流的安全認證處理,包含AES128/192/256和DES/3DES的加解密,SHA1和 MD5的認證以及RSA數(shù)字簽名等算法,并通過軟件和FPGA對數(shù)據(jù)安全認證進行了大量的評估驗證,實際測試結果表明,該DSP滿足了監(jiān)控系統(tǒng)安全認證的實時性、正確性、安全性等要求。在這基礎上,希望可以進一步優(yōu)化各種安全算法,提高性能,降低功耗,減小面積。
[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,《安全防范監(jiān)控數(shù)字視音頻編解碼技術標準》(簡稱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.密碼學與網(wǎng)絡安全[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.]