一種用於高速加密的新型對稱型密鑰算法的製作方法
2024-02-12 02:58:15
本發明涉及信息加密技術領域,具體地說,是一種用於高速加密的新型對稱性密鑰算法。
背景技術:
隨著計算機性能的提升和大數據的興起,我們對於數據的處理計算能力要求成幾何倍數的提高。同時隨著旁路攻擊的出現,許多安全性極高的密碼算法遭到破壞,原來安全度極高的AES(Advanced Encryption Standard)算法在128位制被破解。人們開始設計尋找加密效率更快、安全性更高的算法。
目前主流的對稱密鑰算法或者流密碼算法比較典型的有RC4算法、RC6算法、AES加密中的Rijndael算法、國密標準SM4算法。
(1)RC4算法:RC4加密算法是RSA三人組中的頭號人物Ronald Rivest在1987年設計的密鑰長度可變的流加密算法簇。RC4算法的本質就是查找表,該表包含所有可能的256個字節的值的排列。核心部分S-box長度任意,算法速度可以達到DES加密的十倍左右,具有很高級別的非線性。其原理是初始化和偽隨機子密碼生成算法。每次生成密鑰流字節後,查找表就被修改,而查找表總會包含{0,1,2,···,255}的一個排列。因為這種持續更新,該算法的查找表以及相應的加密算法自身都為密碼分析者提供了移動靶。而且由於存在弱密鑰,使得其子密鑰序列在不到100萬字節內就出現了完全的重複,在10萬字節內出現部分重複。
(2)RC6算法:RC6是作為AES的候選算法提交給NIST(美國國家標準局)的一種新的分組密碼,是在RC5算法的基礎上設計的。RC5本身因為使用了大量的數據依賴循環,所以算法本身非常簡潔。只是在AES候選中,為了滿足徵集要求,使用4個寄存器並加進了32比特的整數乘法,用於加強擴散的特性。但是正因為使用了32比特的整數乘法,使得RC6的運算速度受到了一定的影響[6]。此外RC6的精準表示為RC6-w/r/b(字長為w位,r為加密輪數,b為加密密鑰用字節表示的長度)。RC6是一種安全、架構完整而且簡單的區塊加密法。它提供了較好的測試結果和參數方面相當大的彈性。RC6可以抵抗所有已知的攻擊,能夠提供AES所要求的安全性,可以說是近幾年來相當優秀的一種加密法。
(3)AES算法:RC6算法儘管是相當優秀的一款算法,但仍然只是AES候選算法之一。目前使用的AES加密使用的是Rijndael算法,AES目前成為對稱加密中最重要的國際標準之一。AES加密速度較快,且分組長度靈活,密鑰長度比DES大且可以靈活選擇,可以有效抵抗差分分析和線性分析,目前僅有旁道攻擊是唯一可以成功的攻擊方式(上海交通大學鬱昱教授使用的便是旁路攻擊成功破解AES-128加密)。在加密過程中,AES有十輪,且前九輪都要進行字節代換、行位移、列混淆和輪密鑰加四個算法,第十輪只要進行字節代換、行移位、輪密鑰加三個算法。對於每個分組明文段的加密步驟相比流密碼仍然複雜的多。
(4)國密SM4算法:國家密碼管理局於2012年3月21日公布了「GM/T0002-2012《SM4分組密碼算法》」,SM4算法分組長度和密鑰長度都是128bit,加密算法和密鑰擴展算法都採用32輪非線性迭代結構,加解密算法結構相同,只是輪密鑰的使用順序相反。國密SM4的安全性毋庸置疑,但是仍然具備功耗攻擊的可能性[12]。同時因為加密和密鑰擴展時都採用了32輪,因此理論上加密速度上仍然不如流密碼。
目前被密碼學界公認的不可攻破的密碼算法為「一次一密體制」,Shannon在《保密系統的信息理論》提出了完善保密的概念,並證明了「一次一密體制」具備完善保密性。其算法方案的基準原則是:密鑰是隨機選取的,並且僅使用一次,使用之後便立即銷毀。但是經過論證一次密碼本也有兩點不足之處:
(1)明文長度暴露:「一次一密制」密鑰隨機選擇生成,該密鑰字符串與明文消息具有相同的長度,密鑰與明文消息異或運算產生密文。但是對於敵手而言,截獲密文的同時便獲知了明文的長度,假設發送的明文消息長度為N,則密文長度也為N,那麼當N的值小於敵手計算能力時,便毫無保密性可言。此外,因為一次密密鑰是隨機分布的,而假設明文具有一定的先驗概率分布,那麼根據密文的後驗概率分布也可以對明文產生一定的威脅。
(2)實際使用不便:假設對長消息進行加密,則需要與消息樣本本身等長的密碼本,因為密碼本正是密鑰自身,所以必須安全的將密鑰發送給接收方。
基於以上兩點,一次性密碼本並沒有大規模的投入使用。但「一次性密碼本」的思想卻產生設計出一些新型算法,如流密碼算法RC4和RC6等算法。但是流密碼算法並不是可證明為安全的,只是犧牲了可證明安全性以向實用性妥協。
中國發明專利CN201610467088.7,公開日為2016.09.21,公開了一種基於FPGA的在線生成密鑰的AES數據加密方法,但是該加密方法加密輪數過多,加密方式單一,密鑰會重複出現,無法保證數據安全。
因此,亟需一種一次一密、加密速度快、密鑰不重複出現的高效密鑰算法,而目前關於這種算法還未見報導。
技術實現要素:
本發明的目的是針對現有技術中的不足,提供一種用於高速加密的新型對稱型密鑰算法。
為實現上述目的,本發明採取的技術方案是:
一種用於高速加密的新型對稱密鑰算法,所述對稱密鑰算法包括加密算法和解密算法,所述的加密算法的步驟包括:
S11:對明文M進行分組,得到Mi,Mi∈{M0,M1,···,Mn-1};
S12:利用隨機數生成器生成n位基礎密鑰R1和R2;
S13:統計明文長度L,並對Mn-1進行明文填充,在明文後首先填充二進位密鑰生成器識別碼,計算剩餘位數,並用隨機二進位碼填充;
S14:獲得密鑰偏移生成器G;
S15:對Mn-1明文組進行加密;
S16:獲得加密密鑰Keyi;
S17:對所有明文組進行加密;
S18:對基礎密鑰R1和R2進行加密,得到密文密鑰CR;
S19:完成加密,並將密文密鑰CR與密文進行傳輸;
所述的解密算法的步驟包括:
S21:對密文密鑰CR進行解密,得到基礎密鑰R1和R2;
S22:解密得到Mn-1;
S23:得到密鑰偏移生成器G;
S24:對所有密文進行解密,得到明文M。
所述的加密算法的S12步驟中,R1和R2為1024位的二進位序列隨機數,R1∈{0,1}1024,R2∈{0,1}1024。
所述的加密算法的S13步驟中,如果Mn-1∈(0,1000)時,在明文後首先填充二進位密鑰生成器識別碼,剩餘的位數使用隨機二進位碼填充,使得Mn-1最終滿足1024位;如果Mn-1∈[1000,1024]之間,那麼填充需要擴展,即在Mn-1之後首先進行密鑰生成器識別碼的填充,並在之後的位數填充二進位序列隨機數,這樣便組成了兩段1024位的明文組Mn-1和Mn。
所述的二進位密鑰生成器識別碼位數為24位,該識別碼為(0000-1111-1111-1111-1111-0000)。
所述的加密算法的S14步驟中,當Mn-1∈(0,1000)時,模運算的計算公式為G=1024-L mod1024,當Mn-1∈[1000,1024]時,模運算的計算公式為G=2048-L mod1024,所述的密鑰偏移生成器G∈[25,1048]。
所述的加密算法的S15步驟中,對Mn-1明文組進行加密時,將基礎密鑰R1和R2分別根據n的值進行左偏移和右偏移,異或加密得到密文;當Mn-1∈(0,1000)時,計算公式為當Mn-1∈[1000,1024]時,計算公式為
所述的加密算法的S16步驟中,將子明文組i代入密鑰偏移生成器G中,計算出偏轉量Xj,計算公式為Xj=(G mod512×(i+G)+19)mod512,並將偏移量代入基礎密鑰R2中進行左循環或右循環產生偏移密鑰R2(j),計算公式為R2(j)=R2<<Xj Xj mod2=0或R2(j)=R2>>XjXj mod2≠0;基礎密鑰R1則每次右偏移i位得到R1(i),計算公式為R1(i)=R1>>(imod1024);將R1(i)和R2(j)進行異或運算得到加密密鑰Keyi,計算公式為
所述的加密算法的S17步驟中,從M0開始到Mn-2,將加密密鑰Keyi與相對應明文進行異或加密,得到密文Ci,計算公式為
所述的加密算法的S18步驟中,對基礎密鑰R1和R2進行RSA加密,採用最有非對稱加密(RSA-OAEP)方案得到密文密鑰CR。
所述的對稱密鑰算法每加密n個明文組時需要更換基礎密鑰,其步驟如下:
S31:一組基礎密鑰R1和R2,其加密的明文空間為n×n位,這個加密後的等量空間為密文塊(C-Block);
S32:當需要對基礎密鑰進行重新構造時,新的基礎密鑰從前一個密文塊中選擇;
S33:新的基礎密鑰為R1』和R2』;
在S33步驟中,基礎密鑰R1』的計算公式為基礎密鑰R2』的計算公式為或其中,Cx和Cy中的x和y,分別代表加密後的前一密文塊內從第一段開始的密文段數(與明文代表的段數相同),其計算公式分別為x=(17×i+G)mod512和y=(13×(i+G)+i)mod512+512,R1』中的R1>>x與Cx中的R1(i)完全相同,R2』中的Xj(y)就是明文段數為y的情況下的R2偏移量,偏移後與R2(j)完全相同;將R1』和R2』進行異或運算得到加密密鑰Key,計算公式為
所述的對稱密鑰算法還包括摘要算法,其步驟如下:
S41:加密前,首先使用摘要算法對明文進行摘要得到哈希值,即Hash(Mess);
S42:將哈希值存儲在密文的末尾,並一通進行傳輸保存;
S43:解密前,將哈希值單獨取出;
S44:使用摘要算法對解密後的明文進行摘要得到新的哈希值,即Hash(Mess』);
S45:將Hash(Mess)與Hash(Mess』)進行對比,若Hash(Mess)=Hash(Mess』),則密文未被篡改,證明信息完整性或通信線路安全性與可靠性;;若Hash(Mess)≠Hash(Mess』),則密文篡改,存儲環境或通信線路存在隱患,需要及時保護。
本發明優點在於:
1、通過密文塊(C-Block)的設計,降低密鑰重複的概率至0;
2、每個明文段加密的子密鑰為唯一且隨機的,提高了安全性;
3、加密速度快,僅需要進行兩次偏移、兩次模運算、一次乘法、兩次加法、一次判斷、兩次異或共10步基本運算操作。
附圖說明
附圖1是本發明的一種用於高速加密的新型對稱密鑰算法的加密算法的明文分組填充的示意圖。
附圖2是本發明的一種用於高速加密的新型對稱密鑰算法的加密算法的明文加密的示意圖。
附圖3是本發明的一種用於高速加密的新型對稱密鑰算法的加密算法的生成新基礎密鑰的示意圖。
具體實施方式
下面結合附圖對本發明提供的具體實施方式作詳細說明。
實施例1
本發明的一種用於高速加密的新型對稱密鑰算法的加密算法具體流程如下:
A1:設明文總體為M,對明文總體M進行分組得到Mi,Mi分組長度為1024bit(或者是1024bit的整數倍),因此有Mi∈{M0,M1,···,Mn-1};
A2:利用隨機數生成器生成兩串1024位的二進位序列隨機數R1和R2,R1和R2為基礎密鑰,R1∈{0,1}1024,R2∈{0,1}1024;
A3:如圖1所示,將明文M轉化為二進位序列Mess,統計明文長度L,計算公式為(1);最後一組Mn-1可能不滿1024位,所以需要對Mn-1進行填充;如果Mn-1∈(0,1000)時,在明文後首先填充二進位密鑰生成器識別碼,該識別碼為24位,識別碼為(0000-1111-1111-1111-1111-0000),剩餘的位數使用隨機二進位碼填充,使得Mn-1最終滿足1024位,並通過模運算獲得密鑰偏移生成器G,計算公式為(2);如果Mn-1∈[1000,1024]之間,那麼填充需要擴展,即在Mn-1之後首先進行密鑰生成器識別碼的填充,並在之後的位數填充二進位序列隨機數,這樣便組成了兩段1024位的明文組Mn-1和Mn,並通過模運算獲得密鑰偏移生成器G,計算公式為(3);密鑰偏移生成器G的取值範圍為(4);
L=strlen(Mess) (1)
G=1024-L mod1024Mn-1∈(0,1000) (2)
G=2048-L mod1024Mn-1∈[1000,1024] (3)
G∈[25,1048] (4)
A4:如圖2所示,對Mn-1明文組進行加密,將基礎密鑰R1和R2分別根據n的值進行左偏移和右偏移,異或加密得到密文;當Mn-1∈(0,1000)時,計算公式為(5);當Mn-1∈[1000,1024]時,計算公式為(6);
A5:將子明文組i代入密鑰偏移生成器G中,計算出偏轉量Xj,計算公式為(7),並將偏移量代入基礎密鑰R2中進行左循環或右循環產生偏移密鑰R2(j),計算公式為(8)或(9);基礎密鑰R1則每次右偏移i位得到R1(i),計算公式為(10);將R1(i)和R2(j)進行異或運算得到加密密鑰Keyi,計算公式為(11);
Xj=(G mod512×(i+G)+19)mod512 (7)
R2(j)=R2<<Xj Xjmod2=0 (8)
R2(j)=R2>>Xj Xjmod2≠0 (9)
R1(i)=R1>>(i mod1024) (10)
A6:從M0開始到Mn-2,將加密密鑰Keyi與相對應明文進行異或加密,得到密文Ci,計算公式為(12);
A7:對基礎密鑰R1和R2進行RSA加密,採用最有非對稱加密(RSA-OAEP)方案得到密文密鑰CR,並將信息傳輸給信息接收方;
A8:完成加密,設任意一段密文為Ci,則Ci∈{C0,C1,···,Cn-1,(Cn)}。
實施例2
本發明的一種用於高速加密的新型對稱密鑰算法的解密算法具體流程如下:
B1:接收到密文密鑰CR,對其進行RSA-OAEP方案解密,分別得到基礎密鑰R1和R2;
B2:首先截取密文的最後2048位二進位序列,使用解密得到的基礎密鑰R1和R2進行與加密同向的偏移n位後再進行異或運算,得到2048位包含Mn-1的二進位序列;
B3:對2048位包含Mn-1的二進位序列進行搜索並識別填充時產生的24位密鑰生成器識別碼,並得到密鑰偏移生成器G,之後拋棄隨機數序列得到Mn-1明文組,計算公式為(13);
B4:從C0正向開始,根據密文組數量i一次進行運算得到R1(i)和每組密文基礎密鑰R2的偏移量Xj,並進行密鑰偏移後得到R2(j),兩者異或運算得到加密密鑰Keyi,將加密密鑰Keyi與密文結合得到明文,計算公式為(14);依次解密並得到全部明文M,M=M0+M1+…+Mn-1。
實施例3
為了更加安全的進行加密,本發明的一種用於高速加密的新型對稱密鑰算法的基礎密鑰會進行重新構造。
初始加密產生的一組兩串隨機數序列R1和R2,首先在對Mn-1進行加密後,再依次從M0開始進行相對應的偏移加密,對於基礎密鑰R1,每個明文組加密中都相當於向右移一位,因此當加密到M1023時,R1會出現重複,因此,當Mi中i mod 1024-1=0時,需要對基礎密鑰進行重新構造。
如圖3所示,基礎密鑰重新構造的流程如下:
C1:一組基礎密鑰R1和R2,其加密的明文空間為1024×1024位,這個加密後的等量空間為密文塊(C-Block);
C2:當需要對基礎密鑰進行重新構造時,新的基礎密鑰從前一個密文塊中選擇;
C3:新的基礎密鑰為R1』和R2』,R1』的計算公式為(15),R2』的計算公式為(16)或(17),
其中,Cx和Cy中的x和y,分別代表加密後的前一密文塊內從第一段開始的密文段數(與明文代表的段數相同),其計算公式分別為(18)和(19),
x=(17×i+G)mod512 (18)
y=(13×(i+G)+i)mod512+512 (19)
R1』中的R1>>x與Cx中的R1(i)完全相同,R2』中的Xj(y)就是明文段數為y的情況下的R2偏移量,偏移後與R2(j)完全相同;將R1』和R2』按照A5的步驟進行異或運算得到加密密鑰Key,計算公式為(20)。
實施例4
為了保持密文的完整性,本發明的一種用於高速加密的新型對稱密鑰算法還包括摘要算法,其流程如下:
D1:加密前,首先使用摘要算法對明文進行摘要得到哈希值,即Hash(Mess);
D2:將哈希值存儲在密文的末尾,並一通進行傳輸保存;
D3:解密前,將哈希值單獨取出;
D4:使用摘要算法對解密後的明文進行摘要得到新的哈希值,即Hash(Mess』);
D5:將Hash(Mess)與Hash(Mess』)進行對比,若Hash(Mess)=Hash(Mess』),則密文未被篡改,證明信息完整性或通信線路安全性與可靠性;;若Hash(Mess)≠Hash(Mess』),則密文篡改,存儲環境或通信線路存在隱患,需要及時保護。
本發明的一種用於高速加密的新型對稱密鑰算法的優點在於,通過密文塊(C-Block)的設計,將密鑰重複的概率降低為0;並且密文塊內產生的密鑰基於前一密文塊的明文內容,即要破解加密密鑰必須先知道前一密文塊內隨機明文段的內容,因此保證了每個明文段加密的子密鑰是獨一無二且隨機的,達到了一次性密碼本的加密要求,由此保證了算法的絕對安全性,可以有效抵禦各種類型的攻擊;單明文段加密操作僅有兩次偏移、兩次模運算、一次乘法、兩次加法、一次判斷、兩次異或共10步基本運算操作,沒有AES和SM4的多輪數和其他複雜步驟,對於RC6不存在大整數模乘運算,因此算法加密速度可以更快;
以上所述僅是本發明的優選實施方式,應當指出,對於本技術領域的普通技術人員,在不脫離本發明方法的前提下,還可以做出若干改進和補充,這些改進和補充也應視為本發明的保護範圍。