杜宸罡,李 博,畫芊昊
(中北大學 儀器科學與動態測試教育部重點實驗室,太原 030051)
隨著互聯網技術的發展,視頻加密技術[1]如同一把鎖,保護好自己的貴重物品顯得格外重要,廣泛應用于軍工、航天、生物醫療、互聯網、體育比賽等諸多領域。AES加密是目前H5時代廣泛使用的技術,該加密是建立在HTTP之上,設計簡單,只需要很少的存儲器,因此使用簡單,接入代價小,可以抵抗所有一致的攻擊,在多個平臺上速度快,編碼緊湊,有利于CDN加速技術[2]的實施,其最大的優點便是幾乎主流的軟件都支持,包括微信、qq等,打開就能播放,兼容性很好,但AES加密算法本身最大的缺點便是由于算法是公開的,如果不能保護好密鑰的文件,ffmpeg等命令行,很多工具軟件均可拿到密鑰對視頻基本還原。對于該問題,Ajish等人[3]提出了一種基于小波的AES算法,加快了加密過程,降低了移動設備的CPU利用率,從而增加了加密的安全性能;Yiding等人[4]提出了一種內存處理架構AESPIM將AES加密計算卸載到內存端,通過顯著減少數據移動和增加內存帶寬,從而提高了加密的安全性能;Ke L等人[5]提出了一種新的32位可重構、緊湊的AES加解密結構,并在非bramFPG中實現,還提出了一種新的復合域GF((24)2)上的子流水線動態密鑰調度方法,可以同時生成圓密鑰,進而提高了安全性能。然而,本實驗在原有AES算法的基礎上,先是利用RANSAC算法將誤匹配消除,然后引入2DLogistic映射與2D-DCT的數字圖像隱藏技術[6],經實驗對比分析,密鑰敏感性、視頻質量、運行效率均得到了明顯更加良好的數據體現,從而使得本文改進后的AES算法更具有安全性,從而使得實驗更有意義。
AES是一種SPN結構[7]的高級加密標準的視頻加密技術,其過程是由多個輪次進行,每個輪次均經過SubByles、ShiftRows、MixColumns、AddRound Key這4個步驟,即字節代替、行移位、列混淆和輪密鑰加。
輪密鑰加可以看成S0 S1 S2 S3組成的32位字與W[4i]的異或運算,由于是異或運算進行語法元素加密,但方法簡單,容易被破解,安全性不高,所以二值化是處理比較好的一種方法。二值化的方法有很多,比如:定長二進制(FL)、截斷萊斯二元化(TR)、截斷一元二元化(TU)、K階指數哥倫布二元化(EGK)、一元二元化(U)等等,一元碼只有在非負整數時才可以使用,截斷萊斯二元化加密時必須知道CMax和R的值,K階哥倫布指數對語法元素具有可塑性,但過程相對復雜,需要完成前綴碼和后綴碼的加密,定長二進制只需要滿足選取的語法元素分布均勻即可,因此,此處選取定長二進制方法將輪密鑰加步奏進行二值化較為合適。
字節代替是字節求一次乘法逆再完成一次仿射變換[8]而完成,使得共同點變為共線點的雙射,平行直線變為平行直線,保持共線三點的簡單化,從而保持倆平行線段的比值不變。在求乘法逆方法中,歐拉定理求逆元需要任意互質的q,p恒成立,且該方法需要多算一個歐拉函數;費馬小定理具有局限性,需要p為質數;擴展歐幾里得該方法需要先求出xx、yy方程的一組整數解,計算量較大。根據平時計算經驗,線性求逆方法(遞推法)最好,適用范圍較廣。線性求逆元方法如下:
設p=k*i+r,(r
(1)
則K*i+r=0(modp)
(2)
兩邊同乘r-1+i-1,得
K*r-1+i-1=0(modp)
(3)
移項,得
i-1=-k*r-1(modp)
(4)
即
(5)
我們可以利用該公式進行遞推,邊界條件為1-1恒等于1(modp),時間復雜度為O(n)。
行移位是一個簡單的左循環移位操作。當密鑰長度為128比特時狀態矩陣的第0行左移0個字節,第一行左移1字節,第二行左移2字節,第3行左移3字節,如圖1所示。

圖1 12行移位操作圖
列混淆是在有限域下將狀態的每列(a0a1a2a3)T的轉置乘以一個固定多項式C(x)模乘4加1,多項式
C(x)=03*3+01*2+01*02
(6)
該變換以矩陣形式表示為:
(7)
明顯可知,列混淆中矩陣乘法較多,計算量較大,這里我們可以利用數學中矩陣乘法次數進行優化:對于矩陣的乘法運算是相乘再相加,所以執行的乘法次數就是Ai*Ak*Aj,第i個到第j個矩陣的乘法次數為:
matrix[i][j]=matrix[k+1][j]+
d[i-1]*d[k]*d[j]
(8)
根據運動矢量特性可以選取語法元素abs-mvd-minus2和mvd-sign-flag進行二值化,這兩種元素分別是運動矢量殘差幅值和運動矢量殘差符號,殘差數據可以體現相鄰像素的相關性,對這兩種元素采用不同的二值化方法。語法元素前者abs-mvd-minus2采用OTSU方法,該方法較大的一個優點便是不用考慮分塊后的圖像直方圖是否具有明顯的雙峰;語法元素后者mvd-sign-flag采用截斷萊斯二元化方法TR,其前綴是一元碼,后綴是定長碼,后綴長度為cRiceParam,但是注意最后有截斷的情況輸入參數為cRiceParm cMax以及要二值化的val。通過對AES編碼標準[9]的語法元素進行篩選,可以得到如圖2所示的適合本文加密的語法元素。

表1 適合加密的算法篩選

圖2 運動矢量符號位加密
本文最大的創新即是在運動矢量加密以及DCT[10]變化系數加密時,在DCT變化系數二值化后,對運動矢量的殘差數據進行二維序列處理時采用改進后的二維序列圖像拼接融合技術,再結合2DLogistic映射與2D-DCT的數字圖像隱藏技術,生成新的二值化編碼。
二維序列圖像拼接融合技術[11-13]包含數字圖像拼接融合的基本流程、圖像配準常用的算法、消除誤匹配的算法、圖像融合中常用的算法等,當然,采用SIFT特征初匹配算法很好地解決了畸形圖像的拼接問題,通過改變校正算法和對圖像進行SIFT特征提取、特征初匹配,利用RANSAN算法實現了誤匹配的消除。
2DLogistic映射與2D-DCT的數字圖像隱藏技術即是利用二維Logistic映射產生的混沌序列對秘密圖像的像素進行擴散和置亂[14-15],達到了秘密圖像的加密效果,然后分塊對載體圖像進行二維離散余弦變換,對擴散和置亂后的圖像信息分存在變換后的每塊右下角,最后進行二維離散余弦反變換,從而得到了隱藏圖像。
運動矢量加密分析主要靠運動矢量的局部最優性和相鄰相關性來構造特征。前者借助運動矢量殘差來提取特征,后者借助運動矢量本身的相關性提取特征。運動矢量是可以用坐標系表示的,設運動矢量坐標系為MV(x,y),所作直角坐標系可以用肉眼進行直接分析,當改變運動矢量的橫縱坐標的符號位,運動矢量的語法元素也隨之發生了改變,運動矢量符號位加密如圖3所示。

圖3 運動矢量的加密流程圖
Cosff-abs-level-remaining和Coeff-sign-flag語法元素是DCT變化系數加密所需要的語法元素。對DCT變化系數進行的二值化[16]最好的方法是采用對角線的處理模式,下圖為改進算法的DCT視頻加密流程如圖4所示。

圖4 DCT的視頻加密流程圖
對于視頻加密技術而言,驗證該加密技術效果是否良好最重要的幾個參考角度便是視頻質量、運算效率、密鑰敏感性。因此,本文在Microsoft Vissual Studio 2017上搭建實驗所需的集成開發環境,硬件平臺為臺式電腦,型號為i7-6700,主頻為3,40 GHZ電腦運行內存為4 GB,系統為Windows7環境,對本文改進后的AES算法與AES算法兩者的密鑰敏感性作對比,判斷本文改進后的AES算法的密鑰敏感性是否比AES算法的密鑰敏感性更加良好,從視頻質量角度上對本文中改進后的AES算法加密前后的RGB直方圖對比分析判斷本文中改進后的AES算法加密質量和還原性能是否良好,從而判斷本文中改進后的AES算法加密效果是否良好,從視頻質量中的SSIM值以及PSNR值、加密算法運行效率兩個方面分別對比原AES視頻加密、文獻[3]中改進算法、文獻[4]中改進算法、文獻[5]中改進算法、本文改進后的AES算法進行實驗分析本文中改進后的AES算法加密是否具有優越性。下圖為stefan、forman、gice、bus的原始幀及加密幀:
圖5(a)為stefan原始幀,圖5(b)為stefan加密幀,圖5(c)為gice原始幀,圖5(d)為gice加密幀,圖5(e)為forman原始幀,圖5(f)為forman加密幀,圖5(g)為bus原始幀,圖5(h)為bus加密幀。

圖5 圖像對比
密鑰敏感性是指在加解密過程中,初始密鑰發生微小的變化,經密鑰序列發生器或迭代函數作用后所產生的密鑰發生巨大變化,從而加解密圖像發生巨大變化。密鑰敏感性是密碼系統是否安全的主要因素,如果在加解密過程中將圖像的像素值設置為控制參數并作為初始密鑰,那么該算法不僅僅具有密鑰敏感性,而且可以抵抗已知明文攻擊。分析密鑰敏感度方法為:使用兩個不同的密鑰加密同一語法元素序列,然后比較加密結果。

表2 密鑰敏感性對比
若密鑰改變一位,則解密圖像中像素值的像素個數占總像素個數的比例發生了變化,將理想結果0.996 1的定量計算數值進行引入來衡量密鑰敏感性。算法中,初始密鑰為[0,0,0,1e-5],在測試中,改變密鑰的十萬分之一,即1e-5,變為[0,0,1e-5,1e-10]對密文進行解密。為了更具普遍性,繼續改變1e-7、1e-8、1e-9不同的初始密碼,并與AES加密原本算法進行對比分析,實驗多次改變初始密鑰的結果都在0.996 1附近,相比單純AES加密算法密鑰敏感性,本文改進后的密鑰敏感性更好,從而可以抵抗已知明文攻擊。
RGB直方圖[17]是圖像檢測系統中廣泛采用的顏色特征,可以通過比較phthon語言輸出的原始幀和解密幀的RGB直方圖是否一致以及加密幀的RGB直方圖來判斷視頻加密質量,下圖分別為gice、bus、stefan、forman的原始幀、加密幀、解密幀的RGB直方圖:
圖6的圖(a)為gice原始幀的RGB直方圖,圖6的圖(b)為gice加密幀的RGB直方圖,圖6的圖(c)為gice解密幀的RGB直方圖,圖6的圖(d)為bus原始幀的RGB直方圖,圖6的圖(e)為bus加密幀的RGB直方圖,圖6的圖(f)為bus解密幀的RGB直方圖,圖6的圖(g)為stefan原始幀的RGB直方圖,圖6的圖(h)為stefan加密幀的RGB直方圖,圖6的圖(i)為stefan解密幀的RGB直方圖,圖6的圖(j)為forman原始幀的RGB直方圖,圖6的圖(k)為forman加密幀的RGB直方圖,圖6的圖(l)為forman解密幀的RGB直方圖。

圖6 直方圖
顯然,改進后算法的原始幀與解密幀基本一致,說明視頻加密解密性能良好,加密幀圖像的像元灰度值分布不具有概率統計分布的基本特征,即視頻加密質量良好。
SSIM指數[18-20]通常用來評價視頻相似度,如果SSIM值<0.6,則視為具有良好的保密性。計算公式如下所示:
(9)

C1=(k1L)2
(10)
C2=(k2L)2(k=0.03)
(11)
本文針對不同視頻的100個I幀執行SSIM評估,AES算法、文獻[3]、文獻[4]、文獻[5]、改進后的算法進行了分析對比,結果如圖7所示。

圖7 不同視頻序列的SSIM測試結果圖
圖7中,五條曲線由上至下分別為AES加密序列幀、文獻[3]序列特定幀、文獻[4]序列特定幀、文獻[5]序列特定幀、本文改進算法加密序列特定幀,經SSIM曲線圖對比分析可知,相較而言,本文改進后的AES算法加密的SSIM值最小,其密文與明文之間的相似程度更小,即加密效果更好。
PSNR峰值信噪比[21-23]是評價視頻加密前后對比的一項重要指標,PSNR指數越高,越不容易失真,PSNR值≥20為可接受范圍內,如果大于30,則視頻加密前后質量非常好。計算公式如下:
(12)
(13)
其中:MSE[24-25]為均方差,代表相鄰像素點之間的相關性,V是原始像素點的行個數或者列個數,C是視頻幀圖像的加密圖像,均方差值越小,峰值信噪比越好,則加密會有更好的效果體現。
圖8中,五條曲線由上至下分別為AES加密序列幀、文獻[3]序列特定幀、文獻[4]序列特定幀、文獻[5]序列特定幀、本文改進算法加密序列特定幀,由圖明顯可知,本文改進后加密序列特定幀PSNR值PSNR值相對更低,與AES加密序列特定幀PSNR值差距更大,即加密效果明顯更好。

圖8 不同序列的PSNR測試結果圖
評價加密技術的一個關鍵特征就是處理時間[26-27]。計算機在每個測試時間所給出的執行不同,表3是計算了100個I幀對于AES加密與改進后加密由于加密過程而增加計算時間的速率對比。

表3 加密時間運算效率
表3中,從左到右分別為stefan、forman、ice、bus的AES加密編碼、文獻[3]編碼、文獻[4]編碼、文獻[5]編碼、本文改進后的AES加密編碼、普通視頻編碼的加密編碼時間(ms)。
表4中,從左到右分別為stefan、forman、ice、bus的AES加密編碼、文獻[3]編碼、文獻[4]編碼、文獻[5]編碼、本文改進后的AES加密編碼、普通視頻編碼的解密編碼時間(ms)。

表4 解密時間運算效率
表3中,將AES加密編碼、文獻[3]編碼、文獻[4]編碼、文獻[5]編碼、本文改進后的AES加密編碼分別與普通視頻編碼的作比較,經計算,AES視頻編碼加密時間增幅為0.65%,文獻[3]視頻編碼加密時間增幅為0.46%,文獻[4]視頻編碼加密時間增幅為0.456%,文獻[5]視頻編碼加密時間增幅為0.44%,本文改進后的AES視頻加密編碼加密時間增幅為0.23%,從而可知本文改進后的AES視頻加密的加密時間最少,即本文改進后的AES視頻加密運算效率最好。
表4中,將AES加密編碼、文獻[3]編碼、文獻[4]編碼、文獻[5]編碼、本文改進后的AES加密編碼分別與普時間增幅為通視頻編碼的作比較,經計算,AES視頻編碼解密17.54%,文獻[3]視頻編碼解密時間增幅為17.39%,文獻[4]視頻編碼解密時間增幅為17.14%,文獻[5]視頻編碼加密時間增幅為17.01%,本文改進后的AES視頻加密編碼解密時間增幅為8.56%,從而可知本文改進后的AES視頻加密的解密時間最少,即本文改進后的AES視頻加密運算效率最好。
3.4.1 密鑰空間分析
密鑰空間包含了運動矢量和DCT變化系數在加密過程中所有加密元素的全部可能性,密鑰空間的大小與加密元素的種類和語法元素可能性的多少有直接關系,并且密鑰空間與它們分別均為正相關的關系。密鑰空間的計算公式如下:
Sframe=(242l+12k+1)n=22WH/1024*2(l+4)m+(k+l)n
(14)
其中:m和n為加密編碼的編碼塊個數,視頻分辨率為W*H,k為加密語法元素的后綴碼長度,l為DCT變化系數的語法長度,預估計的密鑰空間為24,在改進算法運動矢量的密鑰空間為2k+1,改進算法DCT變化系數的密鑰空間為2l+1,假定視頻序列分辨率為496*448,則改進算法幀圖像的密鑰空間Sframe≥2256。一般地,密鑰空間大于2100則認為足夠抵抗窮舉攻擊,本文改進算法的密鑰空間遠大于2100,因此本文改進后算法視頻加密抗攻擊性十分良好。
3.4.2 抗差分攻擊分析
加密中,像素改變率NPCR和統一平均變化強度UACI可以充分反映原始視頻幀圖像和加密后視頻幀圖像的關系,當攻擊方對加密的原始視頻幀圖像進行細微的改變時,若視頻幀圖像發生了巨大的改變,則所受到的這種明文攻擊將會失效。
(15)
(16)
其中:CR,G,B為所加密的圖像,M、N分別是該所加密圖像像素的行數和列數。
表5和表6是某像素點改變時,AES加密、文獻[3]、文獻[4]、文獻[5]、改進加密的視頻幀分別受到的影響。經表中測試結果可知,改進加密視頻幀所受影響后改變最為明顯。因此,本文改進加密的抗差分攻擊能力較強。

表5 NPCR測試表

表6 UACI測試表
3.4.3 抗統計攻擊分析
加密后,視頻幀圖像都具有水平和垂直的相關性。相關性越大,代表視頻加密效果越差;相關性越小,代表視頻加密效果越好。
(17)
(18)
(19)
(20)
其中:x、y為視頻幀相鄰像素灰度值,E(x)和D(x)為其數學期望和方差,rxy為其相關系數。
對AES加密、文獻[3]加密、文獻[4]加密、文獻[5]加密、改進后加密下在水平和垂直方向加密前后像素對的相關系數分別進行測試。
由表7測試結果可知,改進后加密無論是在水平方向還是垂直方向加密前后像素對相關性明顯最小,抗統計攻擊性最強,即改進后視頻加密效果最好。

表7 加密前后像素對的相關系數
本文在加密過程實現了算法創新,在加密元素的選取板塊,由于二值化是處理異或運算比較好的一種方法,文中引入了相對更為合適的定長二進制的二值化方法,使得需要進行異或運算的輪密鑰加得到了方法上的進一步優化;為了計算更加簡便,通過比較求乘法逆的各種方法,在擁有大量乘法逆計算的字節代替環節進行了更優乘法逆方法的找尋;為了處理大量的矩陣乘法運算,利用數學中的矩陣乘法次數的優化使得處理列混淆上更加簡便。通過對AES編碼標準的語法元素進行篩選,得到了合適的加密語法元素,在DCT變換的圖像壓縮編碼方法中,采用大津法和截斷萊斯二元化分別對運動矢量和DCT的元素進行二值化。且在DCT的二維序列處理上引入了二維序列圖像拼接融合技術,再結合2DLogistic映射與2D-DCT的數字圖像隱藏技術。在后續仿真驗證中,相比原本AES算法,密鑰敏感性得到了很好的提升;視頻質量方面,相比原本AES算法和文獻[3-5],本文改進后的AES算法的RGB直方圖可知其加密效果和解密還原效果良好,改進后的AES算法加密的SSIM值最小、PSNR值更低,即加密效果相對更好;運行效率經過計算可知,編碼時間百分比增加了0.23%,解碼時間百分比增加了8.56%,經過對比原本AES算法和文獻[3-5],本文改進后的AES算法所需處理時間更短,抗統計攻擊和抗差分攻擊性能均最好,因此改進后視頻加密效果相對更好。
在當今互聯網高速發展的時代,視頻加密技術有著非常大的發展潛力,非常值得進一步深入探索,尤其是對于國家網絡安全、國家核心科技安全來說,視頻加密技術顯得極其重要,下一步將本文中改進后的AES算法嘗試應用到工程應用中并與最新其他加密技術對比分析分別應用到工程后對工程所產生的價值。