3G視頻傳輸?shù)臄?shù)據(jù)包如何加密

隨著3G網(wǎng)絡(luò)與IP網(wǎng)絡(luò)的不斷發(fā)展,以3G網(wǎng)絡(luò)為基礎(chǔ)的各種終端服務(wù)系統(tǒng)的設(shè)計(jì)與研究已經(jīng)成為當(dāng)前的熱點(diǎn)。為此我們在基于3G視頻傳輸?shù)那度胧接布脚_上,設(shè)計(jì)一種H.264視頻編碼的RTP承載方法,并且對H.264視頻編碼采用一種改進(jìn)的輕量級加密。此加密方法可廣泛運(yùn)用于巡邏、安防等場合,具有非常大的市場價(jià)值。

一、嵌入式系統(tǒng)平臺的整體設(shè)計(jì)

1、嵌入式硬件平臺的介紹

本嵌入式硬件平臺主要采用三星ARM11 s3c6410主芯片,并搭配IG byte,中興MC8630 CDMA2000 EDV0 3G模塊、攝像頭模塊、LCD顯示屏、三星k998908uOa NAND Flash芯片等。

三星s3c6410芯片采用ARM11 76JZF-S的核心,在內(nèi)核電壓為1.2V時(shí),運(yùn)行頻率為667MHz。支持MPEC-4、H.263、H.264、VC-1硬件編解碼功能,目前廣泛運(yùn)用在手機(jī)、可視電話等設(shè)備上。

2、嵌入式視頻編碼的選擇

就目前情況來看,在國內(nèi)視頻監(jiān)控領(lǐng)域主要流行的三種壓縮視頻編碼標(biāo)準(zhǔn)為:MPEG-4、H.264與AVS。而該嵌入式硬件平臺又支持MPE C-4、H.264硬件編解碼,故壓縮視頻編碼僅在MPEG-4與H.264中行進(jìn)選擇。

MPEC-4于1999年由運(yùn)動圖像專家組(MPEG)公布,H.264是由ISO/IEC與ITU-T組成的聯(lián)合視頻組制定的新一代視頻壓縮編解碼標(biāo)準(zhǔn),于2003年通過9相對于MPEG-4,H.264具有更好的壓縮性能,它能夠在較低的網(wǎng)絡(luò)帶寬的情況下提供高質(zhì)量的圖像傳輸。在相同的畫質(zhì)下,H.264能夠比MPEG-4平均節(jié)約39%的傳輸碼率。

由于該嵌入式視頻傳輸平臺采用3G網(wǎng)絡(luò),相對于有線網(wǎng)絡(luò),3G網(wǎng)絡(luò)穩(wěn)定性相對差,帶寬相對較少,故采用H.264壓縮視頻編碼。

3、嵌入式軟件平臺的設(shè)計(jì)

本系統(tǒng)以嵌入式Linux操作系統(tǒng)為平臺,包括視頻編解碼模塊、加解密模塊、SIP模塊、RIP模塊、3G驅(qū)動模塊。

SIP模塊,實(shí)現(xiàn)SIP協(xié)議(會話初始協(xié)議),實(shí)現(xiàn)在網(wǎng)絡(luò)中建立、修改或者終止終端與終端或者終端與服務(wù)器端的會話。

RTP模塊,實(shí)現(xiàn)RTP協(xié)議(實(shí)時(shí)傳輸協(xié)議),用于傳輸經(jīng)加密后的H.264視頻數(shù)據(jù)。

加密解密模塊,實(shí)現(xiàn)對H.264數(shù)據(jù)包的加密與解密。

二、3G視頻傳輸?shù)臄?shù)據(jù)包如何加密

1、常見的壓縮視頻編碼加密算法及其選擇

目前針對H.264壓縮視頻常見的加密算法分為:完全加密算法與選擇加密算法。完全加密算法,它不考慮視頻編碼的格式,將整個視頻流看作二進(jìn)制數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)加密。最常見的有DES、VEA等,這種加密算法的算法安全性非常高,但沒有考慮視頻流的特殊格式,使其算法加密的數(shù)據(jù)量非常大,算法的復(fù)雜度也非常大,不具有數(shù)據(jù)的可操作性。選擇加密算法,它考慮視頻的特殊格式,僅對壓縮視頻編碼的較敏感部分進(jìn)行加密。這種加密算法,在網(wǎng)絡(luò)多媒體傳輸系統(tǒng)中,能夠用較小的算法復(fù)雜度,獲得較高的安全性,目前是研究的熱點(diǎn)。綜上所述,在本嵌入式視頻傳輸系統(tǒng)中采用選擇加密算法。

2、H.264壓縮視頻編碼分析及加密

H.264壓縮視頻編碼標(biāo)準(zhǔn)分為兩層:視頻編碼層(VCL:Video Coding Layer)和網(wǎng)絡(luò)抽象層(NAL:NetworkAbstraction Layer)。VCL負(fù)責(zé)對視頻數(shù)據(jù)傳輸中的視頻內(nèi)容進(jìn)行描述和定義。包含Codec的信令處理功能以及例如轉(zhuǎn)換、量化、運(yùn)動補(bǔ)償預(yù)測機(jī)制等。NAL通過存取層接口從VCL獲得已編碼的視頻數(shù)據(jù),負(fù)責(zé)針對不同網(wǎng)絡(luò)應(yīng)用進(jìn)行數(shù)據(jù)封裝,完成幀格式、邏輯信道控制信令、同步信息及序列終止位的定義等工作。

NAL中主要由NAL單元(NALU)組成,一個NAL單元由一個字節(jié)的頭信息與一系列來自VCL的稱為原始字節(jié)序列載荷(RBSP)的字節(jié)流。

NALU頭由一個字節(jié)組成:

F:1位。在H.264規(guī)范中規(guī)定這一位必須為0。

NRI:2位。只取00或者II,00表示該NALU可丟棄。11表示該NALU不可丟棄。

Type:5位。描述這個NALU的單元類型,表示如下:

0:未規(guī)定

1:非IDR圖像中不采用數(shù)據(jù)劃分的片段

2:非IDR圖像中A類數(shù)據(jù)劃分片段

3:非IDR圖像中B類數(shù)據(jù)劃分片段

4:非IDR圖像中C類數(shù)據(jù)劃分片段

5:IDR圖像的片段

6:補(bǔ)充增強(qiáng)信息(SEI)

7:序列參數(shù)集

8:圖像參數(shù)集

9:分割符

1O:序列結(jié)束符

11:流結(jié)束符

12:填充數(shù)據(jù)

13~23:保留

24~31:未規(guī)定

NAL的T作模式分為SSM (Single Slice Mode)和DPM (Data Partition Mode)。針對DPM.Slice分為三個區(qū),Partition A,Partition B.PaJtiLon C,分別對應(yīng)NAL單元type類型為:2、3、4。A、B、C三個分區(qū):

只要對Partition A部分進(jìn)行加密。Partition B、Partition C部分也無法正確解碼。同時(shí),由于序列參數(shù)集包括一個圖像序列的所有信息(兩個IDR圖像間的所有圖像信息)。

圖像參數(shù)集包括一個圖像的所有分片的所有相關(guān)信息,包括圖像類型、序列號等。補(bǔ)充增強(qiáng)信息禽有定時(shí)信息和其他可以增強(qiáng)解碼視頻的補(bǔ)充數(shù)據(jù)。它們對于圖像的正確傳輸也有著十分重要的意義。

在這里采用對type值為2、6、7、8的NAL單元的RBSP部分采用一種改進(jìn)的異或加強(qiáng)算法,使得一個密鑰key,可以得到多組不同的密文。

switch (NaIUniUype)

{

case 2:

case 6:

case 7:

case 8:NaIUnit_RBSP= encrypt(NuIUnit_RBSP, key);

break;

default:

}

加密函數(shù),采用一種改進(jìn)的異或加密方法。

a、根據(jù)系統(tǒng)時(shí)間產(chǎn)生一個0~64000的隨機(jī)數(shù),再將該隨機(jī)數(shù)進(jìn)行MD5加密,得到臨時(shí)密鑰encrypLkey;

b、將encrypt_key與NaIUnit RBSP的對應(yīng)位進(jìn)行異或加密得到en_RBSP。

假設(shè)encrypt_key每一位依次為a1、bl、cl、dl、NaIUnit_ R BSP每一位依次為a2、b2、c2、d2、e2、f2。將它們異或后,得到en_RBSP每一位依次為a3、b3、c3、d3、e3、f3;

c、再將encrypt_key的每一位依次放在en_RBSP相應(yīng)位的前面得到新的tmp_RBSP。

Lrnp_RBSP的各位依次為a1、a3、b1、b3、c1、c3、d1、d3、a1、e3、b1、f3;

d、將tmp_RBSP與密鑰key異或加密,得到待發(fā)送的數(shù)據(jù)包。

encrypt(NaIUnit_RBSP, key){

//步驟a

srand((unsigned) Lime(NULL));

encrypt_key=md5(rand(0. 64000D));

p=0;//指示encrypt_key中的位置

Lmp_R BSP=”;

//步驟b、c

for(i = 0; i < strlen(NaIUnit_RBSP); i++) {

p=(p)== strlen(encrypt_key))?0:p;

tmp_R BSP=tmp_RBSP+encrypt_key[pl+(NaIUnit_RBSP[i]^

encrypt_keyLp++D;

}

//步驟d

retum XORencrypt(tmp_RBSP, key));

}

這樣,一個密鑰key可以生成不同的密文數(shù)據(jù),比直接異或加密算法更難破解,能夠更好地反竊聽。

解密函數(shù),在解密時(shí),首先將收到type值為2、6、7、8的NAL單元的RBSP與密鑰key進(jìn)行異或,得到帶有南發(fā)送方的系統(tǒng)時(shí)問產(chǎn)生的臨時(shí)密鑰encrypt_key的加密數(shù)據(jù)tmp_RBSP,再將tmp_RBSP進(jìn)行再次解密,分離m真正的RBSP即可。

decrypt(NalUnit_RBSP, key) {

tmp_RBSP = XORencrypt (NaIUnii_RBSP, key);

//變量初始化

for (i = 0; i < strlen(Lmp_RBSP); i++) {

RBSP= trnp_RBSP{i] - tmp_RBSP[++i];

retum RBSP;

}

小知識之LCD顯示

LCD顯示屏是屬于平面顯示器的一種。用于電視機(jī)及計(jì)算機(jī)的屏幕顯示。