基于TMS320C6416T的IP視頻電話加密引擎
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)絡(luò)中,視頻和音頻數(shù)據(jù)是分類打包、分段傳輸?shù)模蚨鴮λ鼈兊?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/加密">加密處理也需單獨(dú)進(jìn)行。目前針對視頻數(shù)據(jù)主要有選擇性加密和完全加密2種方式[4]。選擇性加密利用視頻數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),對視頻流中的部分?jǐn)?shù)據(jù)(如I幀)加密,這有利于減小系統(tǒng)開銷,但安全性較差。而完全加密不考慮視頻數(shù)據(jù)結(jié)構(gòu),加密所有視頻碼流,雖然系統(tǒng)開銷較大,但安全性較高。本系統(tǒng)對視頻、音頻數(shù)據(jù)、SIP信令均采用完全加密方式。
2.2 通信機(jī)制和數(shù)據(jù)格式
2.2.1 通信機(jī)制
DSP和IP視頻電話終端通過SPI總線通信,SPI作為一種串行同步通信方式,通信速率可達(dá)到4 Mb/s或者更高,適合音視頻數(shù)據(jù)傳輸。在本系統(tǒng)中,將DSP的多通道緩沖串行口McBSP[2]配置為SPI模式,IP視頻電話終端配置為主設(shè)備,DSP配置為從設(shè)備。
采用中斷方式接收或發(fā)送數(shù)據(jù)會增加CPU的負(fù)擔(dān)。將增強(qiáng)型存儲器直接訪問EDMA[3]與McBSP結(jié)合使用,使得CPU加解密數(shù)據(jù)與EDMA數(shù)據(jù)接收或發(fā)送并行進(jìn)行,將大大提高DSP的運(yùn)行效率。具體流程為:(1)DSP通過McBSP接收待處理數(shù)據(jù),將數(shù)據(jù)保存在指定映射的存儲器中,隨后EDMA通道搬運(yùn)數(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ù)頭標(biāo)志:長度為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ù)頭校驗(yàn)和:長度為2 B,防止頭部因傳輸錯誤而執(zhí)行誤操作。
RTP數(shù)據(jù)載荷:小于1 500 B,表示加/解密數(shù)據(jù)、種子密鑰、控制數(shù)據(jù)等。
2.3 軟件設(shè)計要點(diǎn)
根據(jù)DSP系統(tǒng)架構(gòu),考慮AES算法和通信數(shù)據(jù)的特點(diǎn),充分發(fā)揮DSP的數(shù)據(jù)處理能力是軟件設(shè)計的重點(diǎn)。
2.3.1 AES算法優(yōu)化設(shè)計
AES的輪函數(shù)由字節(jié)變換、行位移、列混合、密鑰加4個部件組成[5]。(1)字節(jié)變換是非線性變換,獨(dú)立地對狀態(tài)的每個字節(jié)進(jìn)行變換,可用代換表(S盒)的方式實(shí)現(xiàn);(2)行移位是將狀態(tài)陣列的各行進(jìn)行循環(huán)移位;(3)列混合使用有限域上的矩陣乘法,可以用查表操作實(shí)現(xiàn);(4)密鑰加可以通過執(zhí)行一個32位“異或”運(yùn)算來實(shí)現(xiàn)。通過算法優(yōu)化,可將有限域矩陣乘法和S盒簡化為查表和“異或”兩種基本運(yùn)算,并充分利用DSP處理器32位總線結(jié)構(gòu)特點(diǎn),大大降低了算法復(fù)雜度。
2.3.2 使用軟件流水技術(shù)
AES是迭代分組密碼,共Nr輪迭代,一般采用C循環(huán)程序?qū)崿F(xiàn),循環(huán)是影響系統(tǒng)實(shí)時性的一個重要因素。軟件流水技術(shù)用于設(shè)置循環(huán)內(nèi)指令的運(yùn)行方式,使循環(huán)的多次迭代能夠并行執(zhí)行。程序應(yīng)該考慮合理的循環(huán)迭代次數(shù),以保證軟件流水能夠順利進(jìn)行。將循環(huán)展開可以增加及并行執(zhí)行指令數(shù),從而改進(jìn)流水編排,提升循環(huán)性能。同時應(yīng)該正確使用pragma指示和-ms、-mh等編譯選項(xiàng)。
2.3.3 合理設(shè)置CCS編譯器選項(xiàng)
使用const關(guān)鍵字定義變量可提高代碼性能和穩(wěn)定性;聯(lián)合使用-pm與-o3選項(xiàng)可進(jìn)行程序級優(yōu)化并有效地消除相關(guān)性;-mt選項(xiàng)有利于消除存儲器相關(guān)性;這些選項(xiàng)都能大大提升代碼的執(zhí)行速度[6]。測試表明,選擇C代碼優(yōu)化選項(xiàng),可使AES算法的執(zhí)行速度提高近一倍。
系統(tǒng)關(guān)鍵代碼如下:
void main()
{ //初始化CSL
CSL_init();
//SPI配置
McBSP_config(McBSPConfig);
//乒乓方式EDMA配置
EDMA_config(hEDMAPing, EDMAConfigRcv);
EDMA_config(hEDMAPong, EDMAConfigSnd);
//密鑰擴(kuò)展
評論