吳曉慶,鄭 駿
(中科芯集成電路有限公司南京分公司,南京 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 加密算法確保了視頻數據的安全性。