文獻標識碼: A
文章編號: 0258-7998(2010)07-0157-03
當前,IP網(wǎng)絡百兆甚至千兆的速率已經(jīng)成為可能,,帶寬的提升為,、在IP網(wǎng)絡上傳輸語音、視頻提供了有力的前提條件,。IP視頻電話越來越多地得到廣泛應用并將引領現(xiàn)代通信的潮流。但由于IP網(wǎng)絡的開放性,,敏感信息可能被輕易地竊取,、篡改、非法復制和傳播,,因此對IP視頻通信的保密性和可靠性提出了更高的要求,。為了確保IP視頻電話端到端的通信安全,必須對SIP信令和RTP音視頻數(shù)據(jù)進行加密處理,。
全球最大IP電話提供商Skype在其軟件中內(nèi)嵌了加密系統(tǒng),,安全專家Phil Zimmermann提出了ZRTP密鑰協(xié)商協(xié)議并開發(fā)了IP電話安全軟件Zfone,這些均采用軟件方式實現(xiàn)加密,,當處理器性能較低時,,這種方式必然會影響到通話質(zhì)量。為此本文設計了一種適合于IP視頻電話的高速硬件加密引擎,。
IP視頻電話通信具有以下特點:
(1) 占用帶寬大,。目前常用音頻算法編碼速率約為10 Kb/s,視頻算法編碼速率約為1 Mb/s(視不同圖像質(zhì)量和算法而有不同),。
(2)實時性要求高,。人的聽覺對時延超過400 ms的語音信號比較敏感。
(3) SIP信令和RTP音視頻數(shù)據(jù)采用UDP方式傳輸,UDP協(xié)議是面向非連接的協(xié)議,,數(shù)據(jù)包在網(wǎng)絡繁忙的情況下可能被丟棄,。
針對這些特點,設計加密引擎協(xié)助IP視頻電話終端完成各類數(shù)據(jù)加密功能,密鑰協(xié)商和密鑰管理由IP視頻電話終端處理,,兩者之間通過SPI總線通信,。
1 硬件設計
1.1 處理器選擇
針對IP視頻電話通信的特點處理器可以選擇專用密碼算法芯片,但在使用上缺乏靈活性,,如果需要更改密碼算法或者相關參數(shù),,需重新設計,因此本系統(tǒng)選用TI公司的DSP處理器TMS320C6416T,。TMS320C6416T是基于VelociTI.2TM構架的32位定點高性能DSP處理器,主頻高達1GHz,,處理能力可達8 000 MIPS[1]。它采用超長指令字結構(VLIW),每個時鐘周期可以執(zhí)行8條指令,。TMS320C6416T內(nèi)部集成大容量存儲器,,采用兩級緩存結構,即一級緩存(L1)和二級緩存(L2),。
TMS320C6416T強大的計算,、數(shù)據(jù)存儲能力大大縮短了實現(xiàn)各種算法的時間,迎合了IP視頻電話通信的實時性要求,。它既可用于IP視頻電話終端加密,,也可擴展用于其他大流量數(shù)據(jù)加密(如流媒體服務器)。在處理更改加密算法,、系統(tǒng)參數(shù)和通信接口方面,,相對于專用處理器,DSP更具靈活性和可擴展性,。
1.2 硬件結構及注意事項
加密引擎以TMS320C6416T為核心,,包括SDRAM、Flash,、電源,、JTAG接口、看門狗等,。加密引擎和IP視頻電話終端通過SPI總線通信,,硬件總體結構如圖1所示。
DSP作為系統(tǒng)的核心,,在完成數(shù)據(jù)加解密運算的同時,,還要與IP視頻電話終端實時通信,交互SIP信令,、音視頻數(shù)據(jù),、種子密鑰及控制命令等。
SDRAM采用HY57V283220T(4 M×32 bit),工作時鐘為133 MHz,,用于數(shù)據(jù)存儲,。Flash采用39VF800A(8 M×16 bit),存取速度為70 ns,,100 000次可擦寫,,用于程序存儲和DSP上電自舉。電源為整個系統(tǒng)供電,,看門狗用于監(jiān)視系統(tǒng)的正常運行,,JTAG接口用于DSP仿真調(diào)試。
IP視頻電話終端除了向加密引擎發(fā)送待處理數(shù)據(jù)和命令外,,還需具備密鑰協(xié)商和管理,、用戶權限控制、網(wǎng)絡傳輸?shù)榷喾N功能,。在設計過程中,,應重點注意以下問題:
(1) DSP、SDRAM等芯片的功耗較大,,需根據(jù)具體功耗參數(shù)設置合理的電源和地線的布線寬度,,注意電路板在物理空間的散熱問題;考慮DSP為BGA封裝,,PCB應采用多層板設計(8層或更多層),,設置單獨的電源層和地層,以提高系統(tǒng)的可靠性,。
(2) DSP工作在1 GHz主頻下,、SDRAM工作在133 MHz時鐘頻率下,布局布線時要充分考慮信號的完整性,。在實際設計中采用合適的總線拓撲結構、合理的疊層結構,,對高速數(shù)字信號線在仿真的基礎上加入適當?shù)亩私酉盘柗瓷?,以解決高速信號完整性問題。
2 軟件設計
2.1 算法選擇及加密方式
2.1.1 AES算法和工作模式
IP視頻電話數(shù)據(jù)流量大,,SIP信令和音視頻數(shù)據(jù)采用UDP方式傳輸,,不可避免地存在數(shù)據(jù)丟包問題,因而使用分組密碼算法較為合適,??紤]密碼算法的速度和安全性等因素,本系統(tǒng)采用AES分組密碼算法實現(xiàn)各種數(shù)據(jù)端到端加密,。
AES算法作為迭代分組密碼算法其分組長度和密鑰長度均可改變,,在使用上更加靈活安全。論證表明,它能夠抵抗所有目前技術水平下的已知和潛在的密碼攻擊,,是更加安全可靠的加密算法,。AES使用長為32×Nk(Nk=4、6,、8)的比特流作為密鑰,,每次對長為32×Nb(Nb=4、6,、8)比特的明文組進行加密,,得到的密文組長為32×Nb比特,迭代輪數(shù)Nr=Max(Nb,Nk)+6,。
AES算法有5種基本工作模式:ECB,、CBC、OFB,、CFB,、CTR??紤]到IP數(shù)據(jù)包丟失問題,,如采用反饋模式需考慮數(shù)據(jù)同步問題,因而降低了數(shù)據(jù)處理效率,。而ECB模式簡單易操作,,不存在數(shù)據(jù)丟失產(chǎn)生的通信同步問題SIP信令中的會話描述符SDP和音視頻數(shù)據(jù)都沒有固定的格式,攻擊者也難以通過統(tǒng)計特性分析密文,,因而采用ECB模式是安全易行的,。
2.1.2 數(shù)據(jù)加密方式
在IP網(wǎng)絡中,視頻和音頻數(shù)據(jù)是分類打包,、分段傳輸?shù)?,因而對它們的加密處理也需單獨進行。目前針對視頻數(shù)據(jù)主要有選擇性加密和完全加密2種方式[4],。選擇性加密利用視頻數(shù)據(jù)的數(shù)據(jù)結構,,對視頻流中的部分數(shù)據(jù)(如I幀)加密,這有利于減小系統(tǒng)開銷,,但安全性較差,。而完全加密不考慮視頻數(shù)據(jù)結構,加密所有視頻碼流,,雖然系統(tǒng)開銷較大,,但安全性較高。本系統(tǒng)對視頻,、音頻數(shù)據(jù),、SIP信令均采用完全加密方式,。
2.2 通信機制和數(shù)據(jù)格式
2.2.1 通信機制
DSP和IP視頻電話終端通過SPI總線通信,SPI作為一種串行同步通信方式,,通信速率可達到4 Mb/s或者更高,,適合音視頻數(shù)據(jù)傳輸。在本系統(tǒng)中,,將DSP的多通道緩沖串行口McBSP[2]配置為SPI模式,,IP視頻電話終端配置為主設備,DSP配置為從設備,。
采用中斷方式接收或發(fā)送數(shù)據(jù)會增加CPU的負擔,。將增強型存儲器直接訪問EDMA[3]與McBSP結合使用,使得CPU加解密數(shù)據(jù)與EDMA數(shù)據(jù)接收或發(fā)送并行進行,,將大大提高DSP的運行效率,。具體流程為:(1)DSP通過McBSP接收待處理數(shù)據(jù),將數(shù)據(jù)保存在指定映射的存儲器中,,隨后EDMA通道搬運數(shù)據(jù)至片內(nèi)L2緩存以供CPU提取并處理,;(2)CPU加解密處理完成后,通過相反的路徑發(fā)送給IP視頻電話終端,。為確保CPU數(shù)據(jù)處理和EDMA數(shù)據(jù)傳輸同步,在L2緩存開辟一對乒乓緩存(Ping-Pong Buffer),,分別用于接收和發(fā)送數(shù)據(jù)。
2.2.2 數(shù)據(jù)格式
為了便于處理器之間的數(shù)據(jù)交互,,定義通信數(shù)據(jù)格式如下:
數(shù)據(jù)頭標志:長度為2 B,,表示一個數(shù)據(jù)包的起始。
數(shù)據(jù)類型:長度為2 B,,定義0x0001為IP視頻電話終端發(fā)送的待加密數(shù)據(jù),,0x0010表示IP視頻電話終端發(fā)送的待解密數(shù)據(jù),0x0100表示DSP回送給IP視頻電話終端的已加密數(shù)據(jù),,0x1000表示DSP回送給IP視頻電話終端的已解密數(shù)據(jù),,0x0101表示IP視頻電話終端發(fā)送的種子密鑰,0x1010表示其他控制數(shù)據(jù),。
數(shù)據(jù)長度:長度為2 B,,表示待處理數(shù)據(jù)的有效字節(jié)數(shù)。以太網(wǎng)幀的最大長度是1 500 B,,因此不能超過這個長度。
數(shù)據(jù)頭校驗和:長度為2 B,,防止頭部因傳輸錯誤而執(zhí)行誤操作,。
RTP數(shù)據(jù)載荷:小于1 500 B,表示加/解密數(shù)據(jù),、種子密鑰,、控制數(shù)據(jù)等,。
2.3 軟件設計要點
根據(jù)DSP系統(tǒng)架構,考慮AES算法和通信數(shù)據(jù)的特點,充分發(fā)揮DSP的數(shù)據(jù)處理能力是軟件設計的重點,。
2.3.1 AES算法優(yōu)化設計
AES的輪函數(shù)由字節(jié)變換,、行位移、列混合,、密鑰加4個部件組成[5],。(1)字節(jié)變換是非線性變換,獨立地對狀態(tài)的每個字節(jié)進行變換,,可用代換表(S盒)的方式實現(xiàn),;(2)行移位是將狀態(tài)陣列的各行進行循環(huán)移位;(3)列混合使用有限域上的矩陣乘法,,可以用查表操作實現(xiàn);(4)密鑰加可以通過執(zhí)行一個32位“異或”運算來實現(xiàn),。通過算法優(yōu)化,可將有限域矩陣乘法和S盒簡化為查表和“異或”兩種基本運算,,并充分利用DSP處理器32位總線結構特點,,大大降低了算法復雜度。
2.3.2 使用軟件流水技術
AES是迭代分組密碼,,共Nr輪迭代,,一般采用C循環(huán)程序實現(xiàn),循環(huán)是影響系統(tǒng)實時性的一個重要因素,。軟件流水技術用于設置循環(huán)內(nèi)指令的運行方式,,使循環(huán)的多次迭代能夠并行執(zhí)行。程序應該考慮合理的循環(huán)迭代次數(shù),,以保證軟件流水能夠順利進行,。將循環(huán)展開可以增加及并行執(zhí)行指令數(shù),從而改進流水編排,,提升循環(huán)性能,。同時應該正確使用pragma指示和-ms、-mh等編譯選項,。
2.3.3 合理設置CCS編譯器選項
使用const關鍵字定義變量可提高代碼性能和穩(wěn)定性,;聯(lián)合使用-pm與-o3選項可進行程序級優(yōu)化并有效地消除相關性;-mt選項有利于消除存儲器相關性,;這些選項都能大大提升代碼的執(zhí)行速度[6],。測試表明,選擇C代碼優(yōu)化選項,可使AES算法的執(zhí)行速度提高近一倍,。
系統(tǒng)關鍵代碼如下:
void main()
{ //初始化CSL
CSL_init();
//SPI配置
McBSP_config(&McBSPConfig);
//乒乓方式EDMA配置
EDMA_config(hEDMAPing, &EDMAConfigRcv);
EDMA_config(hEDMAPong, &EDMAConfigSnd);
//密鑰擴展
KeyExpansion(CipherKey,ExpandedKey);
while(1)
{ //EDMA傳輸完成后對數(shù)據(jù)加解密密處理
if(EDMAFlag)
DataProcessing();
}
}
3 測試結果
3.1 加密速率
表1是CCS軟件Profile對各函數(shù)指令開銷的評估結果,。
在該測試中,取Nb=Nk=4,Nr=10,。經(jīng)過DataProcessing運算加密1 536字節(jié)數(shù)據(jù),,總指令開銷128600,。取DSP速率8 000 MIPS,則運行時間為128 600/8 000=16.075 μs,加密運算速率為1 536×8/16.075=765.41 Mb/s,。該數(shù)據(jù)吞吐量完全滿足了IP視頻電話的實時性要求,。
3.2 效率對比
參考文獻[5]在TMS320C54x DSP上實現(xiàn)了AES算法,表2給出兩種實現(xiàn)方式的對比,。
兩種處理器的架構和處理速度是不同的,,在軟件設計上會有不同的處理方法,若僅考慮DSP速率對算法速率的影響,,本系統(tǒng)加密效率更高,。另外,本測試僅考慮了AES加密算法代碼的指令開銷,,實際中還要考慮DSP存取數(shù)據(jù),、中斷處理等其他任務。
系統(tǒng)首次采用DSP TMS320C6416T處理器,,合理的硬件設計確保了系統(tǒng)的可靠性,,EDMA與McBSP相結合的通信機制提高了通信效率,優(yōu)化的軟件設計提升了加解密速率,。本系統(tǒng)已成功應用于IP視頻電話保密通信,,經(jīng)擴展設計,也可以應用于多媒體服務器,,實現(xiàn)多通道數(shù)據(jù)加密,。本方案對VOIP、視頻監(jiān)控,、視頻會議等領域具有很高的參考價值,。
參考文獻
[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] 陳道敏,王正華,,彭宇行,等. 流媒體安全技術研究與實現(xiàn)[J]. 計算機工程,,2005,31(6):137-139.
[5] 章登義,毛從武,,李永忠. AES算法及其在DSP中優(yōu)化實現(xiàn)[J]. 計算機工程與科學, 2005,27(9):7-9.
[6] 任麗香, 馬淑芬, 李方慧. TMS320C6000系列DSPs的原理與應用[M]. 北京:電子工業(yè)出版社,,2000.