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