變長密鑰的IDEA加密算法的研究與實現(xiàn)

加密算法的目的是為了保護信息的保密性、完整性和安全性,簡單地說就是信息的防偽造與防竊取,這一點在網(wǎng)上付費系統(tǒng)中特別有意義。那么我今天就給大家介紹一下變長密鑰的IDEA加密算法是如何實現(xiàn)的。

變長密鑰的IDEA加密算法的研究與實現(xiàn)

一、數(shù)據(jù)加密標準DES的衰落

DES加密算法是由美國國家標準局于1977年公布的由IBM公司研制的一種加密算法,規(guī)定作為非機要部門使用的數(shù)據(jù)加密標準。自公布以來,它一直超越國界成為國際上商用保密通信和計算機通信的最常用的加密算法。多年來,它活躍在國際保密通信舞臺上。進入20世紀90年代以來,密碼學家Shamir等人提出了“差分分析法”、 “線性逼近法等攻擊法”。DES加密算法,其密鑰實際長度是56比特,作256次窮舉,就肯定能找剄加密使用的密鑰。1993年國外有人建造的窮舉DES破譯了平均只用3.5個小時成功破解一個DES加密算法的密鑰。因為密碼學在不斷發(fā)展變化之中,人類的計算能力也像摩爾定律提到的一樣飛速發(fā)展,所以,DES正逐步淡出保密通信的舞臺。

二、國際數(shù)據(jù)加密算法IDEA的提出

IDEA加密算法最早于1991年歐洲密碼學會議上由中國學者來學嘉博士與著名的密碼學家James Massey聯(lián)合提出的。這是一個塊加密算法,加密的數(shù)據(jù)塊為64比特,密鑰長度是128比特。該加密算法在硬件和軟件上均可高速進行加解密。

該加密算法加密過程與解密過程相同,僅加密密鑰與解密密鑰不同(解密密鑰可由加密密鑰得到,它們不是相互獨立的,因此,它仍然是對稱密鑰。

三、IDEA加密算法簡介

IDEA是一個分組長度為64位的分組加密算法,密鑰長度為128位,同一個算法既可用于加密又可用于解密。IDEA既用混亂又用擴散。該加密算法的設計原則是一種來自于不同代致群的混合運算,且這3個代敦群進行的運算,無論用硬件還是軟件都易于實現(xiàn)。算法輸入的64位數(shù)據(jù)被分成4個16位子分組作為第一輪的輸入,總共有8輪迭代。在每一輪中,相互間進行運算同時也與6個16位的子密鑰進行運算(每輪
均不同),最后還與4個16位的子密鑰進行輸出變換,產(chǎn)生輸出,其中共52個16位的子密鑰參與運算。

(1)子密鑰的產(chǎn)生

輸入:128比特密鑰;輸出:52個16比特的子密鑰。

(2)加密過程

輸入:52個子密鑰和64比特數(shù)據(jù);輸出:64比特數(shù)據(jù)。

(3)解密過程

IDEA加密算法的加密過程與解密過程是相同的,僅加密子密鑰與解密予密鑰不相同,且加密子密鑰與解密子密鑰一一對應。

四、 IDEA加密算法的弱密鑰

盡管IDEA加密算法有很強的抗攻擊能力,但其中也存在大量的弱密鑰。在標準IDEA算法產(chǎn)生的密鑰中,其中的一類(2的23次方個)密鑰存在一個線性因子;另一類(2的35次方個)具有一個概率為1的環(huán)形階;還有一類(2的51次方個),可以解一組含有12個變量的16個非線性布爾等式測試出所使用的密鑰是否屬于這一類,若使用的密鑰屬于這一類,那么就有高效破譯這一密鑰的方法,見表1。

變長密鑰的IDEA加密算法的研究與實現(xiàn)

通過這些特別選定的密文可以測試和觀察出密鑰所含的線性因子,而且在這8輪的迭代中,線性因子不斷地擴展進入密鑰,最后可得出其中的55位密鑰的值,具體為第26-40,72-83和99-122,這也就是說原來設想的密鑰空間為2的128次方,但現(xiàn)在有2的51次方個為弱密鑰,最后密鑰空間為2的77次方。

五、變長密鑰的IDEA加密算法

縱觀IDEA加密解密的整個過程,可以發(fā)現(xiàn)在整個加解密過程中并沒有直接使用這個128比特的密鑰,而是使用由它產(chǎn)生的那52個子密鑰(共52*16=832比特),并且在整個迭代過程中沒有兩個子密鑰直接進行運算,也就是說這52個子密鑰是相對獨立的(筆者已在機器上實現(xiàn)了整個算法,并且任意改變其中的一個或多個子密鑰均不影響加密,只要解密子密鑰由對應的加密子密鑰生成就可以進行解密)。那
么,就可以在保證安全的前提下改進IDEA算法,使密鑰的長度成為可變的,以滿足不同用戶的需求,并且在算法中除去了標準IDE加密短發(fā)A中的弱密鑰。

這52個子密鑰的生成將是變長密鑰的突破口。那么要怎樣生成這52個子密鑰呢?

為了提高密鑰的安全性,我們提出了新的方法。

算法VLK://Variable Lcngth of Keys

輸入:可變長的密鑰password

輸出:52個16比特的子密鑰sub_key

Step1、接收用戶輸入的變長密鑰password,t:=O(計數(shù)器)。

Stcp2、計算密鑰的長度,即r:=length(password)。

Step3、考察r是否與Max(值為832)互素,即gcd( r,Max)=1?是則轉(zhuǎn)Step4,否則處理password的長度(如:可在串尾加入一位原申最后一位相反。例:若原串為100110,處理后為1001101),轉(zhuǎn)Step2。

Step4、計算k,使k滿足 k⊙r=1mod Max。//k為r的逆。

SLep5、考察password的首位,若為1則將password循環(huán)左移k比特,否則將password循環(huán)右移k比特。

Step6、將password逐位賦值給tmp_kcy[t],t:=t+1,t>832?是則轉(zhuǎn)Step7,否則轉(zhuǎn)Slep2。

Stcp7、輸出:將rmp_key(共832比特,52個16比特)存入二維數(shù)組sub_key中,前8組每組6個,第9組4個。

六、算法VLK的討論與分析

(1)在第四部分中介紹了IDEA的弱密鑰,它的主要依據(jù)就是表1,根據(jù)這些不斷重復出現(xiàn)的位,用特別選擇的密文進行加密可以分析得出其中的51位的值。在算法VLK中,由于對初始密鑰password的不斷改變,而且密鑰移動的長度與password的長度是密切相關的,并且左移或是右移還由具體的值來決定,也就是說,類似表1是由password的長度和具體的值來決定的,只有知道了具體的password,才能得出表1,而且還要注意在這個表巾并不是所有的位都來自下初始的password(算法有補位處理)。

前面我們已經(jīng)給定了密鑰的固定長度(128)就可以得出表1;而在算法VLK中,即使給定了password的長度,仍無法得出表1(密鑰的左移、右移以及補位操作都與具體的password的值有關),無法進行分析。由此可見,算法VLK產(chǎn)生的52個子密鑰沒有固定的位置生成表1(即使給定password的長度),因此也就沒有一套固定的分析方法(即使是對固定長度的password的也沒有固定的分析方法),所以算法VLK消除了分析弱密鑰的基礎,故解決了標準的IDEA加密算法中存在的弱密鑰問題。

(2)該加密算法的復雜性沒有改變,循環(huán)次數(shù)為832/r(標準IDEA算法是F128, k=25的一個特例)。只是在循環(huán)內(nèi)部的運算量有所增加,因而對系數(shù)有影響,但數(shù)量級沒有發(fā)生改變,均為O(n)級。

(3)該算法通過巧妙地引入k(每次循環(huán)k均在變),盡可能地避免了子密鑰相同的情況,從而加大了密鑰的強度。

(4)該算法對于length( password)< 832 0r length(passWDrd)> 832均有效。對于小于等于832位的password是顯然的;而對于大干832位的password剛由Step4保證并不是簡單地取出前832位來作為子密鑰,也就是說對于前832位相同的兩個不同的password經(jīng)此算法生成的子密鑰仍是不同的。

(5)該算法沒有改變標準IDEA算法的加密過程,而是在用戶密鑰與子密鑰的生成上給予了加強。用戶可以隨意輸入密鑰,通過該算法可以生成較強的子密鑰;同時也可以滿足對密鑰強度要求較高的用戶,做到密鑰窀間為832位(而不是128位),因而安全性不會低于標準的IDEA算法。

七、變長IDEA加密算法的抗攻擊能力

主要的攻擊方式可以分為以下3種:

(1)唯密文攻擊

在這種攻擊中,主要采用強攻擊(窮舉式攻擊)方式:對于長度為l的密鑰的攻擊次數(shù)為21,長度為2的攻擊次數(shù)為22.…,長度為n的攻擊次數(shù)為2n,對于變長IDEA算法的攻擊次數(shù)為:21+22+23+…+2i(i=1.2.3,..)(注意這里的i理論上可以取到無窮)。熟悉IDEA加密算法的攻擊者可采用攻擊子密鑰的方法進行攻擊,那么它的攻擊次數(shù)為2的832次方,遠遠大于標準IDEA算法的2的128次方。

(2)已知明文攻擊

(3)選擇明文攻擊

面對以上攻擊法,IDEA設計者盡最大努力使該算法不受差分密碼分析的影響。有學者己證明IDEA加密算法在其8圈迭代的第4圈之后便不再受差分密碼分析的影響,這也就是至今尚未有對IDEA算法行之有效的分析方法的原因。那么,對IDEA的攻擊到目前為止仍只能采用強攻擊方式,攻擊強度見唯密文攻擊方法。

本文提出了變長密鑰的IDEA加密算法,該算法解決了變長密鑰帶來的不便,為用戶提供了一個方便、靈活的加密方法,增進了與用戶的友好性,特另IJ是方便靈活地解決了在混合密鑰系統(tǒng)中對稱密鑰與非對稱密鑰的接口問題(因為非對稱密鑰的密鑰長度沒有固定值,不同的密碼系統(tǒng)有不同的密鑰長度如:RSA和ECC的長度相差較大,即使是同樣的密碼系統(tǒng)也視用戶需要提供了不同的長度密鑰如:ECC提供的155,163,283等,這就造成了在混合密鑰系統(tǒng)中的接口問題);同時該加密算法也解決了標準IDEA算法存在的弱密鑰問題,最后還對該加密算法的抗攻擊能力做出了分析。

小知識之摩爾定律

摩爾定律是由英特爾(Intel)創(chuàng)始人之一戈登·摩爾(Gordon Moore)提出來的。其內(nèi)容為:當價格不變時,集成電路上可容納的晶體管數(shù)目,約每隔18個月便會增加一倍,性能也將提升一倍。換言之,每一美元所能買到的電腦性能,將每隔18個月翻兩倍以上。這一定律揭示了信息技術進步的速度。