本發(fā)明涉及一種用于分組加解密算法的子密鑰的生成方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,信息安全性的問題卻愈來愈顯得突出,保證信息安全的一個(gè)重要技術(shù)就是密碼學(xué)。密碼學(xué)在信息安全技術(shù)中扮演著基礎(chǔ)的角色,是攻擊者最難攻破的模塊。而分組密碼又是密碼學(xué)中最常用的算法,是信息安全中的主力,通常稱為信息安全中的驛馬。目前學(xué)術(shù)界對(duì)分組密碼的設(shè)計(jì)和研究已經(jīng)相當(dāng)成熟,每年都有很多新的加密算法推出。由于硬件速度的提高以及計(jì)算機(jī)內(nèi)存的逐步增大,人們發(fā)現(xiàn)傳統(tǒng)的加密算法會(huì)帶來越來越多的問題,因此,對(duì)高安全性的分組密碼算法的設(shè)計(jì)已經(jīng)成了學(xué)術(shù)界關(guān)注的熱點(diǎn)。
分組密碼是密碼學(xué)中的基礎(chǔ)算法,它是很多上層信息安全協(xié)議的基礎(chǔ)。分組密碼的設(shè)計(jì)包括兩個(gè)方面,一個(gè)組件是設(shè)計(jì)基本的輪函數(shù),另一個(gè)組件是設(shè)計(jì)基本的密鑰調(diào)度算法。所謂的密鑰調(diào)度算法是基于一個(gè)主密鑰生成很多輪的子密鑰,而每輪子密鑰都被使用在輪函數(shù)中。對(duì)于一個(gè)分組密碼的安全性而言,子密鑰生成算法的安全性尤為重要。目前出現(xiàn)的多種對(duì)流行分組密碼最好的攻擊,諸如對(duì)AES和IDEA算法的攻擊都是利用其密鑰生成算法弱點(diǎn)而進(jìn)行的攻擊的。
現(xiàn)有的分組加密算法由于密鑰生成都是比較簡(jiǎn)單,普通的高級(jí)加密算法AES的密鑰生成算法只使用簡(jiǎn)單的移位寄存器加上簡(jiǎn)單的S盒置換,并不能達(dá)到流密碼的安全性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:提高分組加密算法的安全性。
為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是提供了一種基于流密碼算法的子密鑰生成方法,其特征在于,包括以下步驟:
根據(jù)具體的分組加密算法,確認(rèn)加密輪數(shù)r,并生成主密鑰K及初始化向量IV,初始化向量IV與主密鑰K的比特?cái)?shù)相同,將主密鑰K及初始化向量IV裝載入流密碼算法的內(nèi)部寄存器,運(yùn)行流密碼算法r次,從而得到r個(gè)子密鑰,r個(gè)子密鑰分別參與到分組加密算法的r輪輪函數(shù)的計(jì)算過程中。
目前對(duì)于流密碼算法的安全性分析主要集中在其密鑰流生成器上,而當(dāng)前設(shè)計(jì)良好的流密碼都可以被看作為一個(gè)偽隨機(jī)數(shù)生成器,例如Salsa20流密碼算法,當(dāng)前還沒有找到低于窮舉攻擊的方法,所以可以假設(shè)安全的流密碼算法的密鑰流生成器是單向且偽隨機(jī)的。這樣,使用主密鑰生成的各輪子密鑰就可以看作是彼此獨(dú)立且隨機(jī)的,這比當(dāng)前的任何分組加密算法的子密鑰調(diào)度方法都更加安全,因?yàn)楸景l(fā)明的方法的子密鑰的安全性是建立在流密碼生成器的單向可靠性上,而其他的分組密碼則無此安全特性。
綜上分析,采用本發(fā)明提供的方法生成的子密碼進(jìn)行分組加密的安全性非常高,本發(fā)明對(duì)于安全性要求很高,而對(duì)于效率不是很重要的應(yīng)用場(chǎng)景很適用。
附圖說明
圖1為本發(fā)明提供的一種基于流密碼算法的子密鑰生成方法的流程圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明作各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請(qǐng)所附權(quán)利要求書所限定的范圍。
結(jié)合圖1,設(shè)分組加密算法采用AES-128,則針對(duì)該分組加密算法,本發(fā)明提供的一種基于流密碼算法的子密鑰生成方法包括以下步驟:
AES-128需要11輪的子密碼。則生成一個(gè)128比特的初始化向量IV及128比特的AES-128的主密鑰K。將128比特的初始化向量IV及128比特的AES-128的主密鑰K裝載入流密碼算法的內(nèi)部寄存器中(流密碼算法可以使用流行的流密碼算法,如RC4、Salsa20等)。然后運(yùn)行該流密碼算法11次,得到11個(gè)子密碼,每個(gè)子密碼為128比特。子密碼的具體生成步驟為:先生成11*128=1408比特的密鑰流,再將該密鑰流分成11個(gè)子密鑰,每個(gè)子密鑰為128比特。然后每個(gè)子密碼參與到分組加密算法相應(yīng)輪數(shù)的輪函數(shù)的計(jì)算過程中。分組加密算法使用11個(gè)子密鑰與相應(yīng)的輪函數(shù)進(jìn)行一系列運(yùn)算,其過程為:
給定128比特的明文分組,使用AES-128加密算法的輪函數(shù)和相對(duì)應(yīng)的子密鑰進(jìn)行變換。第1輪使用第1個(gè)子密鑰和輪函數(shù)對(duì)分組密碼的輸入值,也稱為狀態(tài)進(jìn)行變換,第2輪使用第2個(gè)子密鑰和輪函數(shù)對(duì)內(nèi)部狀態(tài)進(jìn)行變換,以此類推,直到第11輪使用第11個(gè)子密鑰和輪函數(shù)對(duì)狀態(tài)進(jìn)行更新變換,最終得到密文。
本發(fā)明重新設(shè)計(jì)了一種分組加密算法的子密鑰生成方法,此子密鑰的生成是基于流密碼來生成的。該子密鑰生成方法的安全性取決于流密碼的單向安全性。若流密碼生成算法是單向安全的,則此子密鑰生成算法也是安全的。