随着3G网络与IP网络的不断发展,以3G网络为基础的各种终端服务系统的设计与研究已经成为当前的热点。为此我们在基于3G视频传输的嵌入式硬件平台上,设计一种H.264视频编码的RTP承载方法,并且对H.264视频编码采用一种改进的轻量级加密。此加密方法可广泛运用于巡逻、安防等场合,具有非常大的市场价值。
一、嵌入式系统平台的整体设计
1、嵌入式硬件平台的介绍
本嵌入式硬件平台主要采用三星ARM11 s3c6410主芯片,并搭配IG byte,中兴MC8630 CDMA2000 EDV0 3G模块、摄像头模块、LCD显示屏、三星k998908uOa NAND Flash芯片等。
三星s3c6410芯片采用ARM11 76JZF-S的核心,在内核电压为1.2V时,运行频率为667MHz。支持MPEC-4、H.263、H.264、VC-1硬件编解码功能,目前广泛运用在手机、可视电话等设备上。
2、嵌入式视频编码的选择
就目前情况来看,在国内视频监控领域主要流行的三种压缩视频编码标准为:MPEG-4、H.264与AVS。而该嵌入式硬件平台又支持MPE C-4、H.264硬件编解码,故压缩视频编码仅在MPEG-4与H.264中行进选择。
MPEC-4于1999年由运动图像专家组(MPEG)公布,H.264是由ISO/IEC与ITU-T组成的联合视频组制定的新一代视频压缩编解码标准,于2003年通过9相对于MPEG-4,H.264具有更好的压缩性能,它能够在较低的网络带宽的情况下提供高质量的图像传输。在相同的画质下,H.264能够比MPEG-4平均节约39%的传输码率。
由于该嵌入式视频传输平台采用3G网络,相对于有线网络,3G网络稳定性相对差,带宽相对较少,故采用H.264压缩视频编码。
3、嵌入式软件平台的设计
本系统以嵌入式Linux操作系统为平台,包括视频编解码模块、加解密模块、SIP模块、RIP模块、3G驱动模块。
SIP模块,实现SIP协议(会话初始协议),实现在网络中建立、修改或者终止终端与终端或者终端与服务器端的会话。
RTP模块,实现RTP协议(实时传输协议),用于传输经加密后的H.264视频数据。
加密解密模块,实现对H.264数据包的加密与解密。
二、3G视频传输的数据包如何加密
1、常见的压缩视频编码加密算法及其选择
目前针对H.264压缩视频常见的加密算法分为:完全加密算法与选择加密算法。完全加密算法,它不考虑视频编码的格式,将整个视频流看作二进制数据进行标准加密。最常见的有DES、VEA等,这种加密算法的算法安全性非常高,但没有考虑视频流的特殊格式,使其算法加密的数据量非常大,算法的复杂度也非常大,不具有数据的可操作性。选择加密算法,它考虑视频的特殊格式,仅对压缩视频编码的较敏感部分进行加密。这种加密算法,在网络多媒体传输系统中,能够用较小的算法复杂度,获得较高的安全性,目前是研究的热点。综上所述,在本嵌入式视频传输系统中采用选择加密算法。
2、H.264压缩视频编码分析及加密
H.264压缩视频编码标准分为两层:视频编码层(VCL:Video Coding Layer)和网络抽象层(NAL:NetworkAbstraction Layer)。VCL负责对视频数据传输中的视频内容进行描述和定义。包含Codec的信令处理功能以及例如转换、量化、运动补偿预测机制等。NAL通过存取层接口从VCL获得已编码的视频数据,负责针对不同网络应用进行数据封装,完成帧格式、逻辑信道控制信令、同步信息及序列终止位的定义等工作。
NAL中主要由NAL单元(NALU)组成,一个NAL单元由一个字节的头信息与一系列来自VCL的称为原始字节序列载荷(RBSP)的字节流。
NALU头由一个字节组成:
F:1位。在H.264规范中规定这一位必须为0。
NRI:2位。只取00或者II,00表示该NALU可丢弃。11表示该NALU不可丢弃。
Type:5位。描述这个NALU的单元类型,表示如下:
0:未规定
1:非IDR图像中不采用数据划分的片段
2:非IDR图像中A类数据划分片段
3:非IDR图像中B类数据划分片段
4:非IDR图像中C类数据划分片段
5:IDR图像的片段
6:补充增强信息(SEI)
7:序列参数集
8:图像参数集
9:分割符
1O:序列结束符
11:流结束符
12:填充数据
13~23:保留
24~31:未规定
NAL的T作模式分为SSM (Single Slice Mode)和DPM (Data Partition Mode)。针对DPM.Slice分为三个区,Partition A,Partition B.PaJtiLon C,分别对应NAL单元type类型为:2、3、4。A、B、C三个分区:
只要对Partition A部分进行加密。Partition B、Partition C部分也无法正确解码。同时,由于序列参数集包括一个图像序列的所有信息(两个IDR图像间的所有图像信息)。
图像参数集包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等。补充增强信息禽有定时信息和其他可以增强解码视频的补充数据。它们对于图像的正确传输也有着十分重要的意义。
在这里采用对type值为2、6、7、8的NAL单元的RBSP部分采用一种改进的异或加强算法,使得一个密钥key,可以得到多组不同的密文。
switch (NaIUniUype)
{
case 2:
case 6:
case 7:
case 8:NaIUnit_RBSP= encrypt(NuIUnit_RBSP, key);
break;
default:
}
加密函数,采用一种改进的异或加密方法。
a、根据系统时间产生一个0~64000的随机数,再将该随机数进行MD5加密,得到临时密钥encrypLkey;
b、将encrypt_key与NaIUnit RBSP的对应位进行异或加密得到en_RBSP。
假设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相应位的前面得到新的tmp_RBSP。
Lrnp_RBSP的各位依次为a1、a3、b1、b3、c1、c3、d1、d3、a1、e3、b1、f3;
d、将tmp_RBSP与密钥key异或加密,得到待发送的数据包。
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可以生成不同的密文数据,比直接异或加密算法更难破解,能够更好地反窃听。
解密函数,在解密时,首先将收到type值为2、6、7、8的NAL单元的RBSP与密钥key进行异或,得到带有南发送方的系统时问产生的临时密钥encrypt_key的加密数据tmp_RBSP,再将tmp_RBSP进行再次解密,分离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显示屏是属于平面显示器的一种。用于电视机及计算机的屏幕显示。