本發(fā)明涉及信息安全技術(shù),尤指一種明文數(shù)據(jù)加密方法及設(shè)備。
背景技術(shù):
隨著計算機(jī)和通信技術(shù)的發(fā)展,用戶對信息的安全存儲、安全處理和安全傳輸?shù)男枨笤絹碓狡惹?。特別地,隨著internet的廣泛應(yīng)用,以及個人通信、多媒體通信、辦公自動化、電子郵件、電子自動轉(zhuǎn)賬支付系統(tǒng)和自動零售業(yè)務(wù)網(wǎng)的建立和實現(xiàn),信息的安全保護(hù)問題就顯得更加重要,解決這一問題的有效手段之一是使用現(xiàn)代密碼技術(shù)。
美國數(shù)據(jù)加密標(biāo)準(zhǔn)(des,dataencryptionstandard)的頒布實施標(biāo)志著現(xiàn)代密碼學(xué)的誕生,從此揭開了商用密碼研究的序幕。此后實用密碼的研究基本上在沿著兩個方向進(jìn)行,即以公鑰加密算法rsa為代表的公開密鑰密碼和以des為代表的秘密密鑰分組密碼。其中,分組密碼具有速度快,易于標(biāo)準(zhǔn)化和便于軟硬件實現(xiàn)等特點,通常是信息與網(wǎng)絡(luò)安全中實現(xiàn)數(shù)據(jù)加密、消息鑒別、認(rèn)證及密鑰管理的核心密碼算法,它在計算機(jī)通信和信息系統(tǒng)安全領(lǐng)域有著廣泛的應(yīng)用。美國國家標(biāo)準(zhǔn)技術(shù)研究所在2001年發(fā)布了高級加密標(biāo)準(zhǔn)(aes)。aes是一個對稱分組密碼算法,旨在取代des成為廣泛使用的標(biāo)準(zhǔn)。韓國分組密碼標(biāo)準(zhǔn)(aria算法)是目前廣泛應(yīng)用的分組加密算法之一,但其與aes算法相似的設(shè)計結(jié)構(gòu)使得很多攻擊aes算法的方法對aria產(chǎn)生威脅,如何優(yōu)化aria算法,提升信息安全性是目前需要解決的問題之一。
技術(shù)實現(xiàn)要素:
針對上述技術(shù)問題,本發(fā)明提供了一種明文數(shù)據(jù)加密方法及設(shè)備,對aria算法進(jìn)行了改進(jìn),能夠抵抗滑動攻擊,提升信息安全性。
為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種明文數(shù)據(jù)加密方法,應(yīng)用于包括有處理器的設(shè)備,該方法包括:
將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算得到運算結(jié)果x0,x0表示第一個中間態(tài),
對運算結(jié)果x0進(jìn)行r-1輪迭代變換得到運算結(jié)果xi,其中每輪迭代變換包括混淆層sl變換、擴(kuò)散層dl變換和密鑰加變換rka,其中
將運算結(jié)果x(r-1)通過第r輪變換,獲得密文數(shù)據(jù)c,其中
進(jìn)一步地,混淆層sl包括第一類混淆層和第二類混淆層,所述混淆層變換為非線性變換,采用4個s盒:s1、s2、s3和s4,其中
進(jìn)一步地,所述擴(kuò)散層dl變換為線性變換,是將16字節(jié)狀態(tài)(x0,x1,...,x15)映射為(y0,y1,...,y15),具體定義如下:
(x0,x1,...,x15)→(y0,y1,...,y15)
進(jìn)一步地,所述密鑰加rka變換是將輪密鑰ki與中間狀態(tài)xi-1進(jìn)行逐字節(jié)異或運算,記為:
進(jìn)一步地,該方法還包括:對輪密鑰ki進(jìn)行編排;所述對輪密鑰ki進(jìn)行編排具體包括:
主密鑰k表示為:
對于i=1,2,……32,循環(huán)執(zhí)行以下變換:
1)循環(huán)移位(θ):即第j行循環(huán)左移j字節(jié),(j=1,2,3,4);
2)s變換(γ):即第j行前四個字節(jié)進(jìn)行sj變換;
3)前四列異或以下矩陣(π):
4)輸出ki=πογοθ(k),取最左邊128比特作為輪密鑰ki。
進(jìn)一步地,該方法還包括:
對所述密文數(shù)據(jù)c進(jìn)行解密操作,所述解密操作為加密操作的逆操作,所述解密操作過程包括:
步驟一:將密文數(shù)據(jù)c與輪密鑰k32按位異或操作;
步驟二:將步驟一異或結(jié)果進(jìn)行第一類混淆層非線性變換;
步驟三:將步驟二非線性變換結(jié)果與輪密鑰ki按位異或(i=31,30...,1);
步驟四:將步驟三的異或結(jié)果進(jìn)行擴(kuò)散層線性變化;
步驟五:將步驟四線性變換結(jié)果進(jìn)行混淆層非線性變換,其中混淆層第一類變換在偶數(shù)輪中使用,混淆層第二類變換在奇數(shù)輪中使用;
步驟六:將步驟五的非線性變換結(jié)果作為下一輪迭代的輸入變元,依次重復(fù)步驟三、四、五的操作,直至第1輪;
步驟七:將步驟六的結(jié)果與白化密鑰k0的前128比特按位異或,從而得到明文數(shù)據(jù)p。
為了達(dá)到本發(fā)明目的,本發(fā)明還提供了一種設(shè)備,包括處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)上述明文數(shù)據(jù)加密方法的步驟。
進(jìn)一步地,所述處理器包括圖形處理器gpu;
所述gpu,用于將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算得到運算結(jié)果x0,x0表示第一個中間態(tài),
進(jìn)一步地,所述處理器包括中央處理器cpu;所述cpu,用于對輪密鑰ki進(jìn)行編排;所述對輪密鑰ki進(jìn)行編排具體包括:
輸出主密鑰k的最左邊128比特作為白化密鑰k0。其中主密鑰k表示為:
對于i=1,2,……32,循環(huán)執(zhí)行以下變換:
1)循環(huán)移位(θ):即第j行循環(huán)左移j字節(jié),(j=1,2,3,4);
2)s變換(γ):即第j行前四個字節(jié)進(jìn)行sj變換;
3)前四列異或以下矩陣(π):
4)輸出ki=πογοθ(k),取最左邊128比特作為輪密鑰ki。
為了達(dá)到本發(fā)明目的,本發(fā)明還提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)上述明文數(shù)據(jù)加密方法的步驟。
本發(fā)明技術(shù)方案提供了一種明文數(shù)據(jù)加密方法及設(shè)備,該方法應(yīng)用于包括有處理器的設(shè)備,包括:將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算得到運算結(jié)果x0,x0表示第一個中間態(tài),
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1為本發(fā)明實施例提供的明文數(shù)據(jù)加密方法流程示意圖;
圖2為本發(fā)明實施例一提供的明文數(shù)據(jù)加解密方法流程示意圖;
圖3為本實施例二提供的加解密設(shè)備架構(gòu)示意圖;
圖4為本發(fā)明實施例二提供的加解密方法流程示意圖。
具體實施方式
下面將結(jié)合附圖及實施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。
應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身沒有特定的意義。因此,“模塊”、“部件”或“單元”可以混合地使用。
根據(jù)本發(fā)明的一個實施例,提供了一種明文數(shù)據(jù)加密方法。圖1為本發(fā)明實施例提供的明文數(shù)據(jù)加密方法流程示意圖,如圖1所示,該明文數(shù)據(jù)加密方法,應(yīng)用于包括有處理器的設(shè)備,包括:
步驟101,將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算得到運算結(jié)果x0,x0表示第一個中間態(tài),
步驟102,對運算結(jié)果x0進(jìn)行r-1輪迭代變換得到運算結(jié)果xi,其中每輪迭代變換包括混淆層(sl)變換、擴(kuò)散層(dl)變換和密鑰加變換(rka),其中
步驟103,將運算結(jié)果x(r-1)通過第r輪變換,獲得密文數(shù)據(jù)c,其中
運算符ο是表示兩個函數(shù)的復(fù)合運算。
白化密鑰k0、輪密鑰ki以及kr都可以通過對預(yù)先配置的主密鑰k的編排而獲得,主密鑰k、輪密鑰ki以及kr可以為256比特。主密鑰k可以表示如下:
進(jìn)一步地,混淆層(sl)包括第一類混淆層和第二類混淆層,所述混淆層變換為非線性變換,采用4個s盒:s1、s2、s3和s4,其中
進(jìn)一步地,所述擴(kuò)散層(dl)變換為線性變換,是將16字節(jié)狀態(tài)(x0,x1,...,x15)映射為(y0,y1,...,y15),具體定義如下:
(x0,x1,...,x15)→(y0,y1,...,y15)
進(jìn)一步地,密鑰加變換(rka)是將輪密鑰ki與中間狀態(tài)xi-1進(jìn)行逐字節(jié)異或運算,記為:
進(jìn)一步地,經(jīng)如下步驟獲得所述輪密鑰ki:
主密鑰k表示為:(均為字節(jié))
輸出k的最左邊128比特作為白化密鑰k0
對于i=1,2,……32,循環(huán)執(zhí)行以下變換:
1)循環(huán)移位(θ):即第j行循環(huán)左移j字節(jié),(j=1,2,3,4);
2)s變換(γ):即第j行前四個字節(jié)進(jìn)行sj變換;
3)前四列異或以下矩陣(π):
4)輸出ki=πογοθ(k)(即取最左邊128比特):即取第3)步結(jié)果的前四列作為輪密鑰ki。
進(jìn)一步地,該方法還包括:對所述密文數(shù)據(jù)c進(jìn)行解密操作,解密過程包括:
步驟一:將密文數(shù)據(jù)c與輪密鑰k32按位異或操作;
步驟二:將步驟一異或結(jié)果進(jìn)行第一類混淆層非線性變換;
步驟三:將步驟二非線性變換結(jié)果與輪密鑰ki按位異或(i=31,30...,1);
步驟四:將步驟三的異或結(jié)果進(jìn)行擴(kuò)散層線性變化;
步驟五:將步驟四線性變換結(jié)果進(jìn)行混淆層非線性變換,其中混淆層第一類變換在偶數(shù)輪中使用,混淆層第二類變換在奇數(shù)輪中使用;
步驟六:將步驟五的非線性變換結(jié)果作為下一輪迭代的輸入變元,依次重復(fù)步驟三、四、五的操作,直至第1輪;
步驟七:將步驟六的結(jié)果與主密鑰k0的前128比特按位異或,從而得到明文數(shù)據(jù)p。
而本發(fā)明技術(shù)方案提供的新算法不僅結(jié)合了原aria算法的優(yōu)勢,并且在混淆層和秘鑰編排上做了創(chuàng)新,具有良好的抗滑動攻擊的能力。滑動攻擊是指使用相同的輪函數(shù),或幾輪輪函數(shù)形成一個周期等弱點,尋找滿足一定條件的明密對,從中可以獲得密鑰的部分信息。原有aria算法容易受到滑動攻擊,本發(fā)明新算法與aria算法的不同點在于:
第一,秘鑰長度上新算法采用256bit,區(qū)別與aria算法的秘鑰長度。
第二,混淆層進(jìn)行了變換。新算法的第一類替代變換sl采用s1、s2、
第三,秘鑰編排上也不相同,新算法經(jīng)過循環(huán)移位(θ)和s變換(χ)、異或運算后只取前128bit作為輪秘鑰,而aria算法是需要2個128bit的初始kl和kr,由種子秘鑰mk生成,規(guī)則如下:
kl||kr=mk||0...0
經(jīng)過兩輪的feistel變換后生成4個128bit的秘鑰字w0,w1,w2,w3,通過對它們進(jìn)行移位和異或運算后來獲取所需輪秘鑰。
實施例一
本發(fā)明實施例一提供了一種明文數(shù)據(jù)加解密方法,本實施例一中明文數(shù)據(jù)分組長度為128比特,輪密鑰ki長度為256比特,對應(yīng)的輪數(shù)r為32輪。
圖2為本發(fā)明實施例一提供的明文數(shù)據(jù)加解密方法流程示意圖,如圖2所示,一種明文數(shù)據(jù)加解密方法,應(yīng)用于包括有處理器的設(shè)備,對明文數(shù)據(jù)進(jìn)行加解密處理的方法步驟包括:
流程如圖2所示,加密流程:
對明文數(shù)據(jù)進(jìn)行初始白化過程,即將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算:
對x0進(jìn)行如下r-1輪迭代變換,每輪迭代變換包括混淆層sl變換、擴(kuò)散層dl變換和密鑰加變換rka,其中
將r-1輪的輸出結(jié)果xr-1通過r輪變換,獲得密文數(shù)據(jù)c,其中
r表示輪數(shù),本實施例中r為32,rka表示密鑰加變換,x0表示第一個中間態(tài)。
上述加密處理流程的整體結(jié)構(gòu)為sp(subspacepursuit)結(jié)構(gòu),每一輪由以下3個操作構(gòu)成。
1、混淆層sl
混淆層變換為非線性變換,本算法采用兩類混淆層,即第一類混淆層和第二類混淆層,可參照圖2和圖3,兩類替代變換共采用4個s盒:s1、s2、s3和s4,其中,
s1:
s2:
s3:
s4:
2、擴(kuò)散層dl:
擴(kuò)散層變換為線性變換,它將16字節(jié)狀態(tài)(x0,x1,...,x15)映射為(y0,y1,...,y15),具體定義如下:
(x0,x1,...,x15)→(y0,y1,...,y15)
3、密鑰加變換rka
密鑰加變換是將輪密鑰ki與中間狀態(tài)xi-1進(jìn)行逐字節(jié)異或運算,記為:
進(jìn)一步地,該方法還包括,在對明文數(shù)據(jù)進(jìn)行初始白化過程之前,對輪密鑰進(jìn)行編排,其中密鑰編排的具體過程如下:
密鑰擴(kuò)展算法步驟如下:
步驟一:輸出k的最左邊128比特作為輪子密鑰(白化密鑰)k0;
主密鑰k可以表示為:(均為字節(jié))
步驟二:對于i=1,2,……32,循環(huán)執(zhí)行以下變換:
1)循環(huán)移位(θ):即第j行循環(huán)左移j字節(jié),(j=1,2,3,4);
2)s變換(γ):即第j行前四個字節(jié)進(jìn)行sj變換;
3)前四列異或以下矩陣(π):
4)輸出ki=πογοθ(k)(即取最左邊128比特):即取第3)步結(jié)果的前四列作為輪密鑰ki。
進(jìn)一步地,該方法還包括:對密文數(shù)據(jù)c進(jìn)行解密,流程如圖2所示,解密流程如下:
解密過程包括:
步驟一:將密文與輪密鑰k32按位異或操作;
步驟二:將步驟一異或結(jié)果進(jìn)行第一類混淆層非線性變換;
步驟三:將步驟二非線性變換結(jié)果與輪密鑰ki按位異或(i=31,30...,1);
步驟四:將步驟三的異或結(jié)果進(jìn)行擴(kuò)散層線性變化;
步驟五:將步驟四線性變換結(jié)果進(jìn)行混淆層非線性變換,其中混淆層第一類變換在偶數(shù)輪中使用,混淆層第二類變換在奇數(shù)輪中使用;
步驟六:將步驟五的非線性變換結(jié)果作為下一輪迭代的輸入變元,依次重復(fù)步驟三、四、五的操作,直至第1輪;
步驟七:將步驟六的結(jié)果與白化密鑰k0的前128比特按位異或,從而得到明文數(shù)據(jù)輸出。
其中,解密過程仍為32輪,每一輪的操作是加密操作的逆操作,其中采用的是s盒的逆運算查表,做逆變換時,密鑰是從k32開始,而線性層也就是擴(kuò)散層的逆就是線性層本身。
根據(jù)本發(fā)明的另一實施例,提供了一種設(shè)備,包括處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的計算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)上述的明文數(shù)據(jù)加密方法的步驟。
進(jìn)一步地,所述處理器包括圖形處理器gpu;
所述處理器包括圖形處理器gpu;
所述gpu,用于將白化密鑰k0與明文數(shù)據(jù)p按字節(jié)做異或運算得到運算結(jié)果x0,x0表示第一個中間態(tài),
其中,明文數(shù)據(jù)p分組長度可以為128比特,輪密鑰ki長度可以為256比特,r可以為32。
進(jìn)一步地,所述處理器包括中央處理器cpu;所述cpu,用于對輪密鑰ki進(jìn)行編排;所述對輪密鑰ki進(jìn)行編排具體包括:
輸出主密鑰k的最左邊128比特作為白化密鑰k0。其中主密鑰k表示為:
對于i=1,2,……32,循環(huán)執(zhí)行以下變換:
1)循環(huán)移位(θ):即第j行循環(huán)左移j字節(jié),(j=1,2,3,4);
2)s變換(γ):即第j行前四個字節(jié)進(jìn)行sj變換;
3)前四列異或以下矩陣(π):
4)輸出ki=πογοθ(k),取最左邊128比特作為輪密鑰ki。
實施例二
本實施例二提供了一種明文數(shù)據(jù)加解密設(shè)備,圖3為本實施例二提供的加解密設(shè)備架構(gòu)示意圖,圖4為本發(fā)明實施例二提供的加解密方法流程示意圖,如圖3和圖4所示,
本發(fā)明實施例提供了一種明文數(shù)據(jù)加解密設(shè)備,包括:中央處理器cpu和圖形處理器gpu,其中g(shù)pu進(jìn)行負(fù)責(zé)明文數(shù)據(jù)的加解密計算,cpu負(fù)責(zé)秘鑰擴(kuò)展算法,即密鑰編排,存儲器主要涉及到明文、密文、輪秘鑰、s盒的存儲。共享存儲區(qū)可以被多個線程共享訪問。
在上述加解密設(shè)備中進(jìn)行加解密操作的流程如圖4所示,輪秘鑰的產(chǎn)生在cpu中,處理結(jié)果傳遞到gpu相對應(yīng)存儲區(qū)域中后調(diào)用線程進(jìn)行混淆、擴(kuò)展等處理進(jìn)行加解密。
加密過程包括:
步驟一:在計算開始前,將明文、密文、輪秘鑰、s盒存儲到gpu的全局存儲區(qū),在gpu中開辟32個線程,每個線程實現(xiàn)一個輪函數(shù)。
步驟二:線程并行將分組密碼算法的128比特明文與輪密鑰ki從全局存儲區(qū)復(fù)制到共享存儲區(qū),將輪秘鑰的前128比特按位異或操作;
步驟三:對上一步運算結(jié)果再經(jīng)過混淆層的非線性變換,其中混淆層第一類變換在奇數(shù)輪中使用,混淆層第二類變換在偶數(shù)輪中使用;
步驟四:將步驟三非線性變換的結(jié)果再做擴(kuò)散層線性變換;
步驟五:將步驟四的線性變換結(jié)果與輪密鑰ki按位異或(i=1,2...,31);
步驟六:將步驟五的異或結(jié)果作為下一輪迭代的輸入變元,依次重復(fù)步驟三、四、五的操作,直至第31輪;
步驟六:到第32輪時,將第31輪輸出結(jié)果做第二類混淆層非線性變換,從而得到密文輸出。
解密過程包括:
步驟一:將密文與輪密鑰k32按位異或操作;
步驟二:將步驟一異或結(jié)果進(jìn)行第一類混淆層非線性變換;
步驟三:將步驟二非線性變換結(jié)果與輪密鑰ki按位異或(i=31,30...,1);
步驟四:將步驟三的異或結(jié)果進(jìn)行擴(kuò)散層線性變化;
步驟五:將步驟四線性變換結(jié)果進(jìn)行混淆層非線性變換,其中混淆層第一類變換在偶數(shù)輪中使用,混淆層第二類變換在奇數(shù)輪中使用;
步驟六:將步驟五的非線性變換結(jié)果作為下一輪迭代的輸入變元,依次重復(fù)步驟三、四、五的操作,直至第1輪;
步驟七:將步驟六的結(jié)果與主密鑰k0的前128比特按位異或,從而得到明文輸出。
本發(fā)明提供的分組密碼加解密算法,其設(shè)計基于完善的數(shù)學(xué)理論,結(jié)合了aria密碼算法的優(yōu)點,設(shè)計安全合理,從而具有良好的抵抗滑動攻擊性能,提升了信息的安全性。
根據(jù)本發(fā)明的又一實施例,提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,其特征在于,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)上述明文數(shù)據(jù)加密方法的步驟。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。