通過aes-cbc算法進行并行加密的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及視頻加密領(lǐng)域,特別是涉及一種通過AES-CBC算法進行并行加密的方法及系統(tǒng)。其中,并行加密的方法包括:a,將所述傳輸流視頻文件切割為n個子視頻塊;b,選擇密鑰;c,確定長度188字節(jié)與長度a的最小公倍數(shù)b;d,插入填充部分;e,對各子視頻塊獨立并行加密;f,組成密文塊。本發(fā)明通過填充部分的尾部用作一個子視頻塊的前綴部分來作為初始化向量IV,填充部分的頭部用作前一個子視頻塊的后綴部分,以使得填充后各子視頻塊的長度為kb。因此每個子視頻塊均不依賴前面的子視頻塊來產(chǎn)生初始化向量IV,使得各子視頻塊可以分開獨立的并行加密。加密完成后的各子視頻塊合并為一個完整的加密文件,從而完成對TS視頻文件的加密。
【專利說明】通過AES-CBC算法進行并行加密的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻加密領(lǐng)域,特別是涉及一種通過AES-CBC算法進行并行加密的方法及系統(tǒng)。
【背景技術(shù)】
[0002]傳輸流(Transport Stream), —般稱為TS。TS視頻文件是分包發(fā)送的,每一個包長為188字節(jié)。包的結(jié)構(gòu)為,包頭為4個字節(jié),負載為184個字節(jié)。TS視頻文件主要應用于實時傳送的節(jié)目,比如實時廣播的電視節(jié)目。
[0003]傳輸流(Transport Stream), —般稱為TS。TS視頻文件是分包發(fā)送的,每一個包長為188字節(jié)。包的結(jié)構(gòu)為,包頭為4個字節(jié),負載為184個字節(jié)。TS視頻文件主要應用于實時傳送的節(jié)目,比如實時廣播的電視節(jié)目。
[0004]AES (Advanced Encrypt1n Standard)加密算法,又稱 Rijndael 加密法,是一種區(qū)塊加密標準,AES有不同的工作模式。其中,CBC(Cipher Block Chaining)稱為密碼塊鏈接,如圖1所示,AES-CBC算法中,前一個塊的加密結(jié)果被反饋到當前塊的加密中,換句話說,每一個塊被用來修改下一個塊的加密,這樣使得當同一個明文塊重復出現(xiàn)時產(chǎn)生不同的密文塊。每個加密塊不僅依賴于產(chǎn)生它的明文塊,而且依賴于所有前面的明文塊。以128bit密鑰算法為例。明文塊需要分為128bit,也就是16字節(jié)的明文塊。每一個明文塊加密需要依賴:16字節(jié)密鑰,上一個明文塊加密后的密文塊(用于初始化向量IV),本明文塊的明文。該算法導致所有明文塊上下依賴,無法將TS視頻文件分為幾個部分,用多線程或多臺機器并行加密,導致加密等待時間較長。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是要提供一種能夠?qū)鬏斄饕曨l文件即TS視頻文件并行加密的技術(shù),來縮短TS視頻文件的加密時間。
[0006]特別地,本發(fā)明提供了一種通過AES-CBC算法進行并行加密的方法,用于對傳輸流視頻文件進行并行加密,包括如下步驟:
[0007]a,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2 ;
[0008]b,選擇一長度為a的密鑰;
[0009]c,為避免跨界,確定長度188字節(jié)與長度a的最小公倍數(shù)b ;
[0010]d,在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb, k為整數(shù);
[0011]e,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊;
[0012]f,將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。
[0013]進一步地,在步驟a中,選擇所述子視頻塊的數(shù)量η為并行加密的線程數(shù)。
[0014]進一步地,在解密時,根據(jù)所述各密文塊的4個包頭字節(jié)來判斷該4個包頭字節(jié)是否屬于傳輸流包,若是則拋棄后面的184個字節(jié)。
[0015]進一步地,所述密鑰的長度選擇為128bit、192bit或256bit。
[0016]進一步地,所述各傳輸流包各不相同。
[0017]本發(fā)明還提供一種通過AES-CBC算法進行并行加密的系統(tǒng),用于對傳輸流視頻文件進行并行加密,包括:
[0018]視頻分割模塊,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2;
[0019]密鑰選擇模塊,選擇一長度為a的密鑰;
[0020]填充模塊,用于根據(jù)確定長度188字節(jié)與長度a的最小公倍數(shù)b ;并在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb,k為整數(shù);
[0021]子視頻塊加密模塊,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊;
[0022]合并模塊,用于將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。
[0023]進一步地,所述子視頻塊的數(shù)量η與并行加密的線程數(shù)相同。
[0024]進一步地,所述密鑰的長度選擇為128bit、192bit或256bit。
[0025]進一步地,所述各傳輸流包各不相同。
[0026]進一步地,還包括解密模塊,所述解密模塊在解密時,根據(jù)所述各密文塊的4個包頭字節(jié)來判斷該4個包頭字節(jié)是否屬于傳輸流包,若是則拋棄后面的184個字節(jié)。
[0027]本發(fā)明的方法和系統(tǒng),通過將TS視頻文件分為多個子視頻塊,在相鄰的各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分,填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb。這樣,每個子視頻塊均不依賴前面的子視頻塊來產(chǎn)生自己的初始化向量IV,使得各子視頻塊可以分開獨立的并行加密。加密完成后的各子視頻塊合并為一個完整的加密文件,從而完成對TS視頻文件的加密。
[0028]根據(jù)下文結(jié)合附圖對本發(fā)明具體實施例的詳細描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點和特征。
【專利附圖】
【附圖說明】
[0029]后文將參照附圖以示例性而非限制性的方式詳細描述本發(fā)明的一些具體實施例。附圖中相同的附圖標記標示了相同或類似的部件或部分。本領(lǐng)域技術(shù)人員應該理解,這些附圖未必是按比例繪制的。附圖中:
[0030]圖1是AES-CBC算法的加密示意圖;
[0031]圖2是本發(fā)明一個實施例的使用TS包對子視頻塊進行填充的示意圖;
[0032]圖3是本發(fā)明一個實施例的對TS視頻文件并行加密的方法流程圖。
【具體實施方式】
[0033]本發(fā)明實施例提供了一種通過AES-CBC算法進行并行加密的方法,用于對傳輸流視頻文件進行并行加密,包括如下步驟:
[0034]a,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2。
[0035]b,選擇一長度為a的密鑰。
[0036]c,為避免跨界,確定長度188字節(jié)與長度a的最小公倍數(shù)b。
[0037]d,在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb, k為整數(shù)。
[0038]e,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊。
[0039]f,將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。
[0040]根據(jù)該實施例,本發(fā)明通過將TS視頻文件分為多個子視頻塊,在相鄰的各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分,填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb。這樣,每個子視頻塊均不依賴前面的子視頻塊來產(chǎn)生自己的初始化向量IV,使得各子視頻塊可以分開獨立的并行加密。加密完成后的各子視頻塊合并為一個完整的加密文件,從而完成對TS視頻文件的加密。
[0041]圖2是本發(fā)明一個實施例的使用TS包對子視頻塊進行填充的示意圖。如圖2所示,一個TS視頻文件被切割為子視頻塊1、子視頻塊2和子視頻塊3這三個子視頻塊,在圖2中2個TS包對上述三個子視頻塊進行填充,在其它實施例中,子視頻塊I與子視頻塊2之間、子視頻塊2與子視頻塊3也可以設(shè)置多于兩個的TS包,其原理與子視頻塊I與子視頻塊2之間、子視頻塊2與子視頻塊3設(shè)置一個TS包的原理相同,故下文即以圖2為例進行原理敘述。在圖2中,TS包I由頭部I和尾部I組成,TS包2由頭部2和尾部2組成。頭部I和頭部2分別用作子視頻塊I和子視頻塊2的后綴部分。尾部I和尾部2分別用作子視頻塊2和子視頻塊3的前綴部分。在一個實施例中,上述TS包I和TS包2各不相同。至少地,尾部I與尾部2各部相同,這樣才能使填充后的子視頻塊2和子視頻塊3將產(chǎn)生不同的密文塊來達到AES-CBC算法當同一個明文塊重復出現(xiàn)時產(chǎn)生不同密文塊的目的。
[0042]圖3是本發(fā)明一個實施例的對TS視頻文件并行加密的方法流程圖。如圖所示,TS
視頻文件即明文塊被分割為明文塊O、明文塊1、明文塊2、明文塊3......多個子明文塊。多個明文塊經(jīng)加密器與密鑰分別加密而形成密文塊O、密文塊1、密文塊2、密文塊3......多個子密文塊,多個子密文塊經(jīng)合并而形成一個完整的密文塊。作為一個原則,選擇所述子視頻塊的數(shù)量η應與并行加密的線程數(shù)相同,這樣才能起到快速加密的目的。
[0043]在本發(fā)明的一個實施例中,所述密鑰的長度選擇為128bit、192bit或256bit。下面以密鑰的長度a選擇為128bit即16字節(jié)來做說明。根據(jù)協(xié)議,TS視頻文件有效長度應為188字節(jié)的整數(shù)倍??紤]到188與16的最小公倍數(shù)為188*4 = 752字節(jié)。未避免跨界,各子視頻文件加上填充部分后,長度應為752字節(jié)的整數(shù)倍。
[0044]將TS視頻文件根據(jù)并行的數(shù)量切割,每個子視頻塊的長度L為188* (4k_l),k為整數(shù)。在每個子視頻塊前填充16字節(jié)的初始化向量IV,在每個子視頻塊后填充188-16 =172字節(jié)的填充TS包。根據(jù)TS包的復用協(xié)議,只要精心選擇TS包的參數(shù),該填充TS包不會對解碼產(chǎn)生影響。這樣填充后的子視頻塊長度為188*(4k-l)+188 = 188*4k = 752k,因此解壓時不會產(chǎn)生跨界問題。
[0045]解密時,根據(jù)AES-CBC算法,可以預見到解密后的各子視頻塊與原始的各子視頻塊只有前16個字節(jié)不一樣。由于每個子視頻塊的前16個字節(jié)隸屬于填充的TS包的內(nèi)容部分。在解復用的時候,遇見該188字節(jié)的TS包,根據(jù)前4個包頭字節(jié)就可以判斷是填充的TS包,從而拋棄后面的184個字節(jié)實際內(nèi)容。而子視頻塊的前16個字節(jié)正好在該184字節(jié)。因此,該16個字節(jié)解密后的實際內(nèi)容,并不對解密后的子視頻塊產(chǎn)生任何影響。也就是說,連續(xù)解碼中,如果在解碼一個16字節(jié)塊前,初始化向量IV出現(xiàn)錯誤,這只會導致該16字節(jié)塊解碼出現(xiàn)錯誤。其他后續(xù)數(shù)據(jù)塊不會受影響。由于并行加密,一個子視頻塊的加密實際沒有用前一個子視頻塊加密后的最后16個字節(jié)作為自己的初始化向量IV,而是隨便找了一個初始化向量IV。因此在子視頻塊解碼時,由于拿前一個子視頻塊最后16字節(jié)作為初始化向量IV,相當于解碼時初始化向量IV出錯了,解出的子視頻塊前16字節(jié)是錯的。這樣,只有每個子視頻塊的前16個字節(jié)會解碼錯誤,而解碼錯誤的16個字節(jié)出現(xiàn)在TS包的承載部分。TS包的4個包頭字節(jié)并不會錯誤,從而能判斷該4個包頭字節(jié)是否屬于TS包,若是則拋棄后面的184個字節(jié),就會將該TS包剔除出去,不會影響到實際的TS視頻文件解碼過程。
[0046]本發(fā)明實施例還提供一種通過AES-CBC算法進行并行加密的系統(tǒng),用于對傳輸流視頻文件進行并行加密,該系統(tǒng)包括:
[0047]視頻分割模塊,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2;
[0048]密鑰選擇模塊,選擇一長度為a的密鑰;
[0049]填充模塊,用于根據(jù)確定長度188字節(jié)與長度a的最小公倍數(shù)b ;并在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb,k為整數(shù);
[0050]子視頻塊加密模塊,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊;
[0051]合并模塊,用于將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。將各子密文塊合并成一個完整的密文塊屬于現(xiàn)有技術(shù),在此不做贅述。
[0052]在本發(fā)明并行加密系統(tǒng)的一個實施例中,上述子視頻塊的數(shù)量η與并行加密的線程數(shù)相同。
[0053]在本發(fā)明并行加密系統(tǒng)的一個實施例中,所述密鑰的長度選擇為128bit、192bit或 256bit。
[0054]在本發(fā)明并行加密系統(tǒng)的一個實施例中,多個TS包各不相同。
[0055]在本發(fā)明并行加密系統(tǒng)的一個實施例中,還包括解密模塊,所述解密模塊在解密時,根據(jù)各密文塊的4個包頭字節(jié)來判斷該4個包頭字節(jié)是否屬于傳輸流包,若是則拋棄后面的184個字節(jié)。
[0056]至此,本領(lǐng)域技術(shù)人員應認識到,雖然本文已詳盡示出和描述了本發(fā)明的多個示例性實施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應被理解和認定為覆蓋了所有這些其他變型或修改。
【權(quán)利要求】
1.一種通過AES-CBC算法進行并行加密的方法,用于對傳輸流視頻文件進行并行加密,其特征在于,包括如下步驟: a,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2; b,選擇一長度為a的密鑰; c,為避免跨界,確定長度188字節(jié)與長度a的最小公倍數(shù)b ; d,在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb, k為整數(shù); e,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊; f,將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟a中, 選擇所述子視頻塊的數(shù)量η為并行加密的線程數(shù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于, 在解密時,根據(jù)所述各密文塊的4個包頭字節(jié)來判斷該4個包頭字節(jié)是否屬于傳輸流包,若是則拋棄后面的184個字節(jié)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述密鑰的長度選擇為128bit、192bit或256bit。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述各傳輸流包各不相同。
6.一種通過AES-CBC算法進行并行加密的系統(tǒng),用于對傳輸流視頻文件進行并行加密,其特征在于,包括: 視頻分割模塊,將所述傳輸流視頻文件切割為按播放順序排列的η個長度為L的子視頻塊,η為整數(shù),且η彡2 ; 密鑰選擇模塊,選擇一長度為a的密鑰; 填充模塊,用于根據(jù)確定長度188字節(jié)與長度a的最小公倍數(shù)b ;并在相鄰的所述各子視頻塊首尾之間插入由一個或多個傳輸流包組成的填充部分;其中,所述填充部分由長度為a的頭部和長度為(kb-a-L)的尾部組成,所述尾部用作一個所述子視頻塊的前綴部分來作為初始化向量IV,所述頭部用作前一個所述子視頻塊的后綴部分,并且將首個子視頻塊上填充一長度為(kb-a-L)前綴部分作為該首個子視頻塊的初始化向量IV,在末尾子視頻塊填充一長度為a的后綴部分,以使得填充后各子視頻塊的長度為kb,k為整數(shù); 子視頻塊加密模塊,使用所述密鑰對各所述子視頻塊獨立并行加密,分別形成各所述子視頻塊對應的各密文塊; 合并模塊,用于將各所述密文塊按所述播放順序連接在一起組成所述傳輸流包視頻文件的密文塊。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述子視頻塊的數(shù)量η與并行加密的線程數(shù)相同。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述密鑰的長度選擇為128bit、192bit或256bit。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述各傳輸流包各不相同。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括: 解密模塊,所述解密模塊在解密時,根據(jù)所述各密文塊的4個包頭字節(jié)來判斷該4個包頭字節(jié)是否屬于傳輸流包,若是則拋棄后面的184個字節(jié)。
【文檔編號】H04N21/2389GK104284208SQ201410572913
【公開日】2015年1月14日 申請日期:2014年10月23日 優(yōu)先權(quán)日:2014年10月23日
【發(fā)明者】鄭鑄東 申請人:航天數(shù)字傳媒有限公司