吴晓庆,郑 骏
(中科芯集成电路有限公司南京分公司,南京 210000)
现代信息技术快速发展,数据通讯技术和多媒体技术在人们的生活中已被广泛应用。当前处于信息大爆炸的时代,各类信息的传输已经可以突破时间和空间的界限,实时进行有效传输。随着移动通信技术的发展和网络直播的兴起,4G 移动网络[1-3]为视频数据的传输提供了更好的传输条件,设备通过4G 无线网络实现现场与远程服务器之间的实时连线,无距离限制,全高清传输。视频类应用[4-5]在国家的一些重要部门和企事业单位,以及对商业秘密和个人隐私有严格保护的特殊领域应用广泛,保证视频数据安全性成其关键。本文设计的传输设备不仅具备视频数据采集编码[6-7]传输功能,而且支持对视频数据、设备指令等所有通信数据进行软件加解密,防护设备及数据安全,最终通过4G 移动网络将加密数据实时发送至服务器。
本方案基于海思3516A 平台进行设计,主要功能是利用HDMI、USB 接口,接收外部视频流输入,系统对视频流数据进行编码,再经过加密处理后,由设备通过4G 移动网络将加密压缩的视频流数据传送到指定服务端平台,系统框图如图1 所示。
视频采集支持2 种方式:一是HDMI 接口外接摄像机或DV 机;二是USB 接口外接USB 摄像头。
(1) HDMI 接口外接摄像机或DV 机,通过SIL9135A 模块检测到视频输入设备的分辨率,随后进行相应的VPSS 配置。通过SIL9135A 模块接收HDMI数据,再由HI3516A 进行硬编码,通过海思提供的HI_MPI_VENC_GetStream 接口获取已编码数据。采集编码流程见图2。
图1 基于4G 网络的视频加密传输设备系统框图
图2 通过HDMI 接口采集视频数据流程
(2)USB 接口外接USB 摄像头,通过V4L2 框架获取视频数据,数据格式为YUV422 或者YUV420,再进行H264 算法压缩编码。此时,视频设备是设备文件,一般在/dev/video0 下,可以对其进行打开、关闭以及读写操作。打开视频设备后,可以设置该视频设备的裁剪、缩放等属性,使用ioctl 函数来对设备的I/O通道进行管理。采集流程见图3。
图3 USB 摄像头采集流程
4G 模块选用华为ME909s-821 Mini PCIe 模块,支持中国联通4G、3G、2G,中国移动4G、3G、2G,中国电信4G,不支持中国电信3G、2G。此模块通过Mini PCI Express 接口规范与外部相连接,支持USB2.0 高速接口和ISO7816-3 标准的USIM 卡接口,模块上电后识别为USB 设备,驱动成功后会将USB 设备转为串口设备。插入SIM 卡,通过对串口设备进行写操作发送AT 指令,实现网络连接和信号质量查询等功能,网络连接成功后,通过TCP/IP 协议实现数据收发。4G 模块上电后,初始化以及连接网络的相关打印如图4 所示。
图4 4G 模块初始化打印
加密模块采用国家密码管理局发布的SM4 分组密码算法,此算法是一种对称密码算法,主要用于实现对数据信息的加解密。SM4 算法[8]的明文、密钥和密文都是128 bit,加密算法和密钥扩展算法迭代轮数均为32 轮。SM4 加解密过程的算法相同,并且使用相同密钥,但是轮密钥的使用顺序相反。
SM4 算法使用128 位的加密密钥,首先将128 bit密钥按照32 bit 一组分为4 组,然后使用密钥扩展算法生成32 组32 bit 轮密钥,再把输入的128 bit 数据按照32 bit 一组分成4 组进行32 轮迭代加密运算,每一轮加密使用一个32 位的轮密钥。加密算法和密钥扩展算法均通过32 次循环的非线性迭代轮函数来实现。数据加密部分的核心是轮函数,将线性和非线性相结合。SM4 加密流程如图5 所示。
图5 SM4 加密流程
明文X和密文Y均为128 bit,RK0~RK32为32 组轮密钥,轮密钥RK 由密钥扩展算法产生。密钥扩展算法流程如图6 所示。
图6 密钥扩展算法流程
图6 中,MK 为加密密钥(128 bit),MK=(MK0,MK1,MK2,MK3);FK 为系统参数(128 bit),FK=(FK0,FK1,FK2,FK3);CK 为固定参数(128 bit), CK=(CK0,CK1,...,CK31);轮密钥生成如下:
制定与服务端进行通讯的TCP/IP 传输协议[9],具体协议内容如下。
客户端发送请求发送数据指令,报文内容如表1所示。
表1 客户端发送请求发送直播数据指令
长度单位为字节;报文头内容为0x43455443(CETC);时间戳单位为毫秒;指令编号为0 时表示请求发送数据;密钥明文是由客户端生成的16 Byte 随机数;校验和为以上32 Byte 全部相加的和。
服务端应答是否允许发送数据,报文内容如表2所示。
表2 服务端应答是否允许发送直播数据
长度单位为字节;报文头内容为0x43455443(CETC);时间戳单位为毫秒;指令编号为0 时表示回应发送数据请求;报文长度为4 Byte;报文内容为0 表示允许发送数据,为1 表示不允许发送数据;校验和为以上24 Byte 全部相加的和。
客户端发送加密数据,报文内容如表3 所示。
表3 客户端发送加密数据
长度单位为字节;报文头内容为0x43455443(CETC);时间戳单位为毫秒;指令编号为1 表示发送视频数据;数据长度为加密数据长度。
将设备配置为客户端模式,通过socket 连接远端服务器。建立连接后,采集到数据时,通过TCP/IP 协议发起传输数据申请,待收到服务器允许发送回复后,开始发送加密视频数据。
软件运行环境为海思3516A 平台。基于4G 网络的视频加密传输板卡如图7 所示,板卡CPU 为海思3516A 芯片,集成了4G 模块、USB 和HDMI 接口等。
图7 基于4G 网络的视频加密传输板卡
视频输入格式支持720P 和1080P,支持将视频数据编码为H264 格式。将DV 机通过HDMI 线连接到设备上,启动设备,连接4G 网络成功后,通过socket连接远端服务器,检测到HDMI 接入后,开始采集编码,将编码后的数据利用SM4 算法进行加密处理,同时向服务器发送请求发送数据指令,收到服务器允许发送数据的回应后,开始发送经过编码加密的视频数据。设备启动运行流程如图8 所示。
4G 模块插入联通卡,连接并获取到IP 后,通过输入ping www.baidu.com 命令验证网络是否连通,验证结果如图9 所示。
图9 中:①表示USB0(即4G 模块)IP 地址为10.158.101.137;②表示通过USB0 向www.baidu.com(IP 地址为112.80.248.76) 发送数据包,收到来自112.80.248.76 的6 个数据包,丢包率为0%,表示能访问www.baidu.com,即网络已通。
采集加密以及发送数据,采用单进程多线程的处理方式,图10 为发送数据线程中的打印。
图8 设备启动运行流程
图9 ping www.baidu.com 结果
图10 发送数据线程打印
图10 中:③表示视频源分辨率为1920×1080;④表示每帧数据处理所耗时间包含采集加密及发送,单位为毫秒,第1~30 帧总耗时为1044 ms,第31~60 帧总耗时为995 ms,帧率达到30 frame/s;⑤表示帧号,从1 开始,依次加1;⑥表示第1 帧为I 帧;⑦表示第2~30 帧为P 帧。
未加密数据与加密数据对比结果如图11 所示,左侧为采集到的已编码为H264 格式但未加密的数据,右侧为已加密数据,⑧表示未加密数据前16 Byte,⑨表示加密数据前16 Byte。
经比较,可以看出未加密数据与加密数据完全不一样,用相同的密钥可将加密数据进行解密。
图11 未加密数据与加密数据
本文设计了一种基于4G 网络的视频加密传输软件,通过HDMI 或USB 接口外接设备采集视频数据,将数据通过SM4 加密算法进行加密保护,再通过4G网络发送至服务器。本设计方案中采集加密以及发送数据采用单进程多线程的处理方式,支持分辨率最大为1920×1080,采集传输帧率为30 frame/s,私有TCP/IP 协议以及SM4 加密算法确保了视频数据的安全性。