本發(fā)明涉及信息安全領(lǐng)域,具體地,涉及一種數(shù)據(jù)加密的方法和裝置。
背景技術(shù):
近年來(lái),密碼學(xué)理論研究及實(shí)際應(yīng)用得到大力的發(fā)展,設(shè)計(jì)出大量具有高安全可靠性且性能較好的分組密碼同時(shí)應(yīng)用于密碼領(lǐng)域,新的密碼算法的研究設(shè)計(jì)工作極大的促進(jìn)了密碼學(xué)及密碼應(yīng)用在各個(gè)領(lǐng)域的應(yīng)用,對(duì)國(guó)家安全、企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)以及個(gè)人隱私等信息安全工作起到積極的保障作用。然而,隨著大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)以及移動(dòng)互聯(lián)網(wǎng)的發(fā)展以及無(wú)線網(wǎng)絡(luò)在生活的普及應(yīng)用,新的應(yīng)用場(chǎng)景對(duì)移動(dòng)終端的安全提出了更高的要求,針對(duì)移動(dòng)終端的靈活便捷、攜帶方便的特點(diǎn)來(lái)看,普適性的分組密碼如des、3des、sm4等算法由于其計(jì)算復(fù)雜性較高,而移動(dòng)終端屬于資源受限類(lèi)型的設(shè)備,在速率方面有一定的影響。因此,需要提供一種能夠滿(mǎn)足移動(dòng)終端需求的加密算法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種數(shù)據(jù)加密的方法和裝置,以解決或者至少部分的解決上述技術(shù)問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種數(shù)據(jù)加密的方法,該方法包括:
將待加密的數(shù)據(jù)進(jìn)行分組;
對(duì)于每組數(shù)據(jù)分別使用初始密鑰進(jìn)行初始加密,將初始加密后數(shù)據(jù)作為初始輸入以進(jìn)行多輪加密;
在每輪加密中,將輸入的數(shù)據(jù)進(jìn)行加密置換,使用與本次加密輪數(shù)對(duì)應(yīng)的密鑰對(duì)加密置換后數(shù)據(jù)進(jìn)行加密,將加密后數(shù)據(jù)作為下一輪加密的輸入數(shù)據(jù)。
優(yōu)選地,所述方法還包括:將待解密的數(shù)據(jù)進(jìn)行分組;對(duì)于每組數(shù)據(jù)分別使用與最后一輪加密對(duì)應(yīng)的密鑰進(jìn)行初始解密,將初始解密后數(shù)據(jù)作為初始輸入以進(jìn)行多輪解密;在每輪解密中,將輸入的數(shù)據(jù)進(jìn)行解密置換,使用與本次解密輪數(shù)對(duì)應(yīng)的密鑰對(duì)解密置換后數(shù)據(jù)進(jìn)行解密,將解密后數(shù)據(jù)作為下一輪解密輸入數(shù)據(jù)。
優(yōu)選地,所述方法還包括:對(duì)配置的密鑰進(jìn)行擴(kuò)展,按加密所需密鑰個(gè)數(shù)將擴(kuò)展后密鑰進(jìn)行分段,各段密鑰分別與初始加密和各輪加密中所用密鑰對(duì)應(yīng)。
優(yōu)選地,所述將輸入的數(shù)據(jù)進(jìn)行加密置換,包括:使用加密置換表對(duì)輸入的數(shù)據(jù)進(jìn)行s盒加密置換;使用加密置換表對(duì)s盒加密置換后數(shù)據(jù)進(jìn)行p置換。
優(yōu)選地,所述方法還包括:產(chǎn)生預(yù)設(shè)數(shù)量字節(jié)的隨機(jī)數(shù),利用隨機(jī)數(shù)產(chǎn)生初始加密置換表和/或初始解密置換表,將初始加密置換表和/或初始解密置換表進(jìn)行多次交替置換,生成用于加密置換的加密置換表和/或用于解密置換的解密置換表。
根據(jù)本發(fā)明的另一方面,還公開(kāi)了一種數(shù)據(jù)加密的裝置,該裝置包括:分組模塊,用于將待加密的數(shù)據(jù)進(jìn)行分組;初始加密模塊,用于對(duì)于每組數(shù)據(jù)分別使用初始密鑰進(jìn)行初始加密,將初始加密后數(shù)據(jù)作為初始輸入數(shù)據(jù)輸入加密模塊;所述加密模塊用于在每輪加密中,將輸入的數(shù)據(jù)進(jìn)行加密置換,使用與本次加密輪數(shù)對(duì)應(yīng)的密鑰對(duì)加密置換后數(shù)據(jù)進(jìn)行加密,將加密后數(shù)據(jù)作為下一輪加密的輸入數(shù)據(jù)。
優(yōu)選地,所述裝置還包括:初始解密模塊和解密模塊;所述分組模塊還用于將待解密的數(shù)據(jù)進(jìn)行分組;所述初始解密模塊用于對(duì)于每組數(shù)據(jù)分別使用與最后一輪加密對(duì)應(yīng)的密鑰進(jìn)行初始解密,將初始解密后數(shù)據(jù)作為初始輸入數(shù)據(jù)輸入所述解密模塊;所述解密模塊用于在每輪解密中,將輸入的數(shù)據(jù)進(jìn)行解密置換,使用與本次解密輪數(shù)對(duì)應(yīng)的密鑰對(duì)解密置換后數(shù)據(jù)進(jìn)行解密,將解密后數(shù)據(jù)作為下一輪解密輸入數(shù)據(jù)。
優(yōu)選地,所述分組模塊還用于對(duì)配置的密鑰進(jìn)行擴(kuò)展,按加密所需密鑰個(gè)數(shù)將擴(kuò)展后密鑰進(jìn)行分段,各段密鑰分別與初始加密和各輪加密中所用密鑰對(duì)應(yīng)。
優(yōu)選地,所述加密模塊用于使用加密置換表對(duì)輸入的數(shù)據(jù)進(jìn)行s盒加密置換;使用加密置換表對(duì)s盒加密置換后數(shù)據(jù)進(jìn)行p置換。
優(yōu)選地,所述裝置還包括:生成模塊,用于產(chǎn)生預(yù)設(shè)數(shù)量字節(jié)的隨機(jī)數(shù),利用隨機(jī)數(shù)產(chǎn)生初始加密置換表和/或初始解密置換表,將初始加密置換表和/或初始解密置換表進(jìn)行多次交替置換,生成用于加密置換的加密置換表和/或用于解密置換的解密置換表。
通過(guò)上述技術(shù)方案,將待加密的數(shù)據(jù)進(jìn)行分組,對(duì)于每組數(shù)據(jù)分別使用初始密鑰進(jìn)行初始加密,將初始加密后數(shù)據(jù)作為初始輸入以進(jìn)行多輪加密;在每輪加密中,將輸入的數(shù)據(jù)進(jìn)行加密置換,使用與本次加密輪數(shù)對(duì)應(yīng)的密鑰對(duì)加密置換后數(shù)據(jù)進(jìn)行加密,將加密后數(shù)據(jù)作為下一輪加密的輸入數(shù)據(jù)。如此,能夠提供一種安全性較高,運(yùn)算量較少的加密技術(shù)方案,進(jìn)而能夠更好的滿(mǎn)足移動(dòng)終端對(duì)于加密技術(shù)的需求。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)加密的方法的流程圖;
圖2是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)解密的方法的流程圖;
圖3是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)加密的裝置的結(jié)構(gòu)圖;
圖4是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)加密的裝置的結(jié)構(gòu)圖;以及
圖5是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)加密的裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本發(fā)明,并不用于限制本發(fā)明。
圖1是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)加密的方法的流程圖。如圖1所示,本發(fā)明可包括如下步驟。
在步驟s110中,將待加密的數(shù)據(jù)進(jìn)行分組。
舉例而言,將明文消息編碼表示成明文序列,劃分成長(zhǎng)度為m的分組,例如劃分為64位的分組。在后續(xù)步驟中,將每分組分別在密鑰的作用下變換成等長(zhǎng)的輸出密文序列。其中,密鑰可通過(guò)擴(kuò)展方式使支持64、80、96、112、128位長(zhǎng)度的密鑰,分組迭代輪數(shù)可選擇10、11、12、13以及14次。
在一實(shí)施例中,所述方法還包括:對(duì)配置的密鑰進(jìn)行擴(kuò)展,按加密所需密鑰個(gè)數(shù)將擴(kuò)展后密鑰進(jìn)行分段,各段密鑰分別與初始加密和各輪加密中所用密鑰對(duì)應(yīng)。
例如,l字節(jié)長(zhǎng)度的密鑰將被擴(kuò)展到8(r+1)字節(jié),擴(kuò)展后的密鑰為k0|k1|...|ki|...|kr=k0|k1|...|ki|...k8r+7,這里每個(gè)ki均為8字節(jié)長(zhǎng)度,0≤i≤r;每個(gè)ki均有一個(gè)字節(jié),0≤i≤8r+7,r為進(jìn)行加密時(shí)的迭代輪數(shù)。因此密鑰k為8、10、12、14和16字節(jié),分組迭代輪數(shù)r可選擇10、11、12、13以及14次。
在一實(shí)施例中,所述方法還可包括:產(chǎn)生預(yù)設(shè)數(shù)量字節(jié)的隨機(jī)數(shù),利用隨機(jī)數(shù)產(chǎn)生初始加密置換表和/或初始解密置換表,將初始加密置換表和/或初始解密置換表進(jìn)行多次交替置換,生成加密置換表和/或解密置換表。
舉例而言,加密置換表和解密置換表通過(guò)偽隨機(jī)置換生成,引入迭代logistic(邏輯)映射,首先產(chǎn)生256字節(jié)的不重復(fù)數(shù),不重復(fù)數(shù)的范圍是0-30000,加密置換表s[256]和解密置換表s-1[256]是通過(guò)多次交替置換得到新的256字節(jié)的偽隨機(jī)置換表,交替置換過(guò)程為:t:s[t(j)]=t(j+1),s[t(255)]=t(0);s-1[t(j+1)]=t(j),s-1[t(0)]=t(255);其中0≤j≤254。
在步驟s120中,對(duì)于每組數(shù)據(jù)分別使用初始密鑰進(jìn)行初始加密,將初始加密后數(shù)據(jù)作為初始輸入以進(jìn)行多輪加密。
在步驟s130中,在每輪加密中,將輸入的數(shù)據(jù)進(jìn)行加密置換,使用與本次加密輪數(shù)對(duì)應(yīng)的密鑰對(duì)加密置換后數(shù)據(jù)進(jìn)行加密,將加密后數(shù)據(jù)作為下一輪加密的輸入數(shù)據(jù)。
在一實(shí)施例中,所述將輸入的數(shù)據(jù)進(jìn)行加密置換包括:使用加密置換表對(duì)輸入的數(shù)據(jù)進(jìn)行s盒加密置換;使用加密置換表對(duì)s盒加密置換后數(shù)據(jù)進(jìn)行p置換。
例如,在初始加密過(guò)程中,使用初始密鑰k0對(duì)數(shù)據(jù)進(jìn)行異或處理,初始密文
在r輪加密過(guò)程中,r為預(yù)設(shè)加密輪數(shù),i屬于[1,r],每一輪的迭代包括:首先進(jìn)行s盒加密置換,使用加密置換表s對(duì)輸入的每一字節(jié)的數(shù)據(jù)執(zhí)行偽隨機(jī)置換,即mi(j)=s[ci-1(j)];然后將64位的數(shù)據(jù)mi置于8行8列的矩陣,使用加密置換表s對(duì)矩陣中每個(gè)對(duì)角線上執(zhí)行偽隨機(jī)置換;最后通過(guò)執(zhí)行異或操作獲得每一輪迭代的密文
在一實(shí)施例中,如圖2所示,所述方法還可包括如下步驟。
在步驟s210中,將待解密的數(shù)據(jù)進(jìn)行分組。在步驟s220中,對(duì)于每組數(shù)據(jù)分別使用與最后一輪加密對(duì)應(yīng)的密鑰進(jìn)行初始解密,將初始解密后數(shù)據(jù)作為初始輸入以進(jìn)行多輪解密。在步驟s230中,在每輪解密中,將輸入的數(shù)據(jù)進(jìn)行解密置換,使用與本次解密輪數(shù)對(duì)應(yīng)的密鑰對(duì)解密置換后數(shù)據(jù)進(jìn)行解密,將解密后數(shù)據(jù)作為下一輪解密輸入數(shù)據(jù)。
舉例而言,按預(yù)設(shè)大小對(duì)密文數(shù)據(jù)進(jìn)行分組。使用密鑰k的最后8個(gè)字節(jié)kr對(duì)密文進(jìn)行解密,
本發(fā)明的有益效果包括:
評(píng)價(jià)一個(gè)分組密碼算法安全性主要就其核心s盒的安全性來(lái)進(jìn)行評(píng)定,主要通過(guò)非線性度和差分均勻度來(lái)度量,本發(fā)明方案仍然采用這兩個(gè)度量值來(lái)衡量s盒的安全性,以下從非線性度和差分均勻度兩個(gè)方面來(lái)詳細(xì)對(duì)其安全性因素進(jìn)行詳細(xì)闡述。
對(duì)于非線性度:
令
在線性密碼分析中,關(guān)鍵的一步是構(gòu)造單輪的有效線性逼近,而單輪線性逼近總是離不開(kāi)s盒(即加密置換表)的線性逼近,因此,s盒的非線性度越大越好。由此,本發(fā)明的技術(shù)方案所構(gòu)造的s盒具有非線性,能夠更好的抗“最佳線性逼近”攻擊,非線性度較好。
對(duì)于差分均勻性:
也可用差分逼近概率
其中,所述x為所有可能輸入的集合,所述2n是該集合的元素個(gè)數(shù)。事實(shí)上,dpf所表示的是給定一個(gè)輸入差分δx,輸出為δy的最大可能性。差分均勻性是針對(duì)差分密碼分析而引入的,它用來(lái)度量一個(gè)密碼函數(shù)抗擊差分分析的能力。s盒的差分均勻性越小越好。根據(jù)對(duì)差分均勻性的計(jì)算,本發(fā)明的技術(shù)方案中差分逼近度較小,由此可以得出其在差分均勻性方面表現(xiàn)較好。
s盒是許多分組密碼算法中唯一的非線性部件,它的密碼強(qiáng)度決定了整個(gè)密碼算法的安全性,其工作速度決定了整個(gè)算法的置亂速度。非線性和差分均勻性?xún)蓚€(gè)指標(biāo)決定了s盒的安全性,由實(shí)驗(yàn)結(jié)果可以證明本發(fā)明的技術(shù)方案在安全性方面表現(xiàn)較為良好,能夠有效適應(yīng)于移動(dòng)終端對(duì)密碼算法的使用要求。
如圖3所示,一種數(shù)據(jù)加密的裝置可包括如下模塊。
分組模塊310,用于將待加密的數(shù)據(jù)進(jìn)行分組。
初始加密模塊320,用于對(duì)于每組數(shù)據(jù)分別使用初始密鑰進(jìn)行初始加密,將初始加密后數(shù)據(jù)作為初始輸入數(shù)據(jù)輸入加密模塊。
加密模塊330,用于在每輪加密中,將輸入的數(shù)據(jù)進(jìn)行加密置換,使用與本次加密輪數(shù)對(duì)應(yīng)的密鑰對(duì)加密置換后數(shù)據(jù)進(jìn)行加密,將加密后數(shù)據(jù)作為下一輪加密的輸入數(shù)據(jù)。
在一實(shí)施例中,如圖4所示,裝置還包括:初始解密模塊410和解密模塊420。分組模塊310還用于將待解密的數(shù)據(jù)進(jìn)行分組;初始解密模塊410用于對(duì)于每組數(shù)據(jù)分別使用與最后一輪加密對(duì)應(yīng)的密鑰進(jìn)行初始解密,將初始解密后數(shù)據(jù)作為初始輸入數(shù)據(jù)輸入所述解密模塊;解密模塊420用于在每輪解密中,將輸入的數(shù)據(jù)進(jìn)行解密置換,使用與本次解密輪數(shù)對(duì)應(yīng)的密鑰對(duì)解密置換后數(shù)據(jù)進(jìn)行解密,將解密后數(shù)據(jù)作為下一輪解密輸入數(shù)據(jù)。
在一實(shí)施例中,分組模塊310還用于對(duì)配置的密鑰進(jìn)行擴(kuò)展,按加密所需密鑰個(gè)數(shù)將擴(kuò)展后密鑰進(jìn)行分段,各段密鑰分別與初始加密和各輪加密中所用密鑰對(duì)應(yīng)。
在一實(shí)施例中,加密模塊330用于使用加密置換表對(duì)輸入的數(shù)據(jù)進(jìn)行s盒加密置換;使用加密置換表對(duì)s盒加密置換后數(shù)據(jù)進(jìn)行p置換。
在一實(shí)施例中,如圖5所示,裝置還可包括生成模塊510,用于產(chǎn)生預(yù)設(shè)數(shù)量字節(jié)的隨機(jī)數(shù),利用隨機(jī)數(shù)產(chǎn)生初始加密置換表和/或初始解密置換表,將初始加密置換表和/或初始解密置換表進(jìn)行多次交替置換,生成用于加密置換的加密置換表和/或用于解密置換的解密置換表。
上述裝置與前述方法對(duì)應(yīng),具體實(shí)施方式和技術(shù)效果可參考方法中對(duì)應(yīng)記載,在此不再贅述。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本發(fā)明的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合,為了避免不必要的重復(fù),本發(fā)明對(duì)各種可能的組合方式不再另行說(shuō)明。
此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開(kāi)的內(nèi)容。