專利名稱:一種在智能卡中用串行硬件實現(xiàn)aes算法的方法
技術領域:
本發(fā)明涉及一種在智能卡中實現(xiàn)AES(高級加密標準)算法的方法,具體地說是一種在智能卡中用串行硬件實現(xiàn)AES算法的方法。
背景技術:
智能化的IC卡是當今世界日新月異發(fā)展的信息化社會中的一顆耀眼的新星,它被公認為世界上最小的個人計算機。智能化IC的概念最初由法國的新聞工作者羅蘭.莫雷諾(Roland Moreno)在1972年首先提出,此后法國布爾(Bull)公司率先投入了對這一潛力無窮的高新技術產品的研究與開發(fā)。1976年,布爾公司的高級研究員于貢(Ugon)先生所領導的研究小組首先研制了世界上第一張由雙晶片(微處理器和存儲器)組成的智能卡,接著又于1978年制成了單晶片智能卡,取得了技術專利。在此后的十幾年間,除了法國的布爾公司之外,世界上先后有Motorola,Thomson,Hitachi,OKI,Toshiba,Sharp,Atmel,Gemplus,Schlumberger,Phillips等十幾家公司相繼投入了智能卡芯片和卡片成品的開發(fā)和生產,形成了一個世界性的新興技術產業(yè)。
智能IC卡是把具有存儲、加密及數據處理能力的芯片鑲嵌于塑料基片中,這種既具有智能性,又便于攜帶的卡片,為現(xiàn)代信息的處理和傳遞提供了一種全新的手段,它一出現(xiàn)就倍受重視。1987年起,國際標準化組織ISO專門為IC制訂了國際標準,ISO/IEC7816-1,2,3,4,5,6。這些標準為IC卡在全世界范圍內的推廣和應用,創(chuàng)造了規(guī)范化的前提和條件。
智能化的IC卡具有突出的3S特點,即Standard(國際標準化)、Smart(靈巧智能化)和Security(安全性)。因而發(fā)展迅速,在金融、通信、交通等眾多領域中后來居上,即使在那些磁卡已經普及應用的范圍也將被取而代之。無怪一些企業(yè)家把IC卡稱作開創(chuàng)市場之卡,也就是說,IC卡不僅改進了現(xiàn)有多種卡的使用方法和功能作用,它還不斷開創(chuàng)出新的應用領域。
現(xiàn)在,智能卡在國內已經被越來越廣泛的應用在如金融、社保、通訊等領域。但是,與此同時,對智能卡的安全性也受到極大關注。要想使今卡工程獲得成功,智能化IC卡得以廣泛流行,就必須解決安全性和可靠性的問題。所謂安全性的實質就是如何確保當事人以外的客體不得介入;而可靠性的實質是如何鑒定當事人的真?zhèn)?,以及所傳遞信息的真?zhèn)魏屯暾?。當前,安全性的保障靠加密,以確保他人不得讀取或竄改所傳遞的信息;可靠性靠數字簽名技術。因此在智能卡的硬件中越來越多的集成了各種加密協(xié)處理器以實現(xiàn)當前廣泛采用了的安全技術,如加密、簽名和鑒別、認證等。
目前使用最廣泛的加密方法都基于1977年被美國標準局(National Bureau of Standards,現(xiàn)在的美國標準與技術協(xié)會,NIST)作為第46號聯(lián)邦信息處理標準而采用的數據加密標準DES。在DES中數據以64bit分組進行加密,密鑰長度為56bit。加密算法經過一系列的步驟把64bit的輸入變換成64bit的輸出,解密過程中使用同樣的步驟和同樣的密鑰。
雖然在目前對稱加密體制中較為流行算法是DES算法,但是DES算法也面臨很大的安全威脅。DES加密算法也有不足之處,普遍的看法是1)S盒子的設計雖然是非線性的,但還不是隨機性的2)由于以前尚無有效的破譯DES的方法,Diffie和Hellman提出對密鑰進行窮舉搜索,鑒于DES互補性使得對密鑰的窮舉搜索量減少了一半。DES的密鑰長度為56位,密鑰空間容量為256,現(xiàn)僅需搜索其1/2,這是一弱點3)DES存在著4個弱密鑰和12個半弱密鑰,應當避免使用4)DES的加密算法是在一維空間中進行的5)DES信息包密文不是時間的函數6)密鑰長度太短7)加密后的密鑰和明文之間的痕跡還應減少鑒于以上原因,美國國家標準和技術協(xié)會建議放棄使用單重DES,而3重DES也只將繼續(xù)被保留若干年。緊跟著,2001年11月美國國家標準和技術協(xié)會通過了AES(Advanced EncryptionStandard)高級加密標準。AES采用Rijndael加密算法,一種對稱的塊加密算法,支持128位、192位、256位的密鑰和128位的數據。針對3種密鑰長度,數據和密鑰需要分別迭代10次、12次、14次,得到最后結果,迭代次數用Nr表示。同時每次迭代的密鑰由輸入的初始密鑰經過運算產生。
Rijndael是一個有10、12、14次迭代的線性變換,其迭代次數依賴于密鑰的長度。一個被Rijndael處理的數據塊被分為一個字節(jié)陣列,每次加密操作就是一個字節(jié)的導向。Rijndael的輪函數分為4層。在第一層,每個字節(jié)用一個8×8 S-box。第二和第三層是線性混合層,陣列行被移位,列被混疊。在第四層,子密鑰字節(jié)是執(zhí)行異或操作到陣列中的每一個字節(jié)的。在最后一輪中,不采用列的混疊。
全方位考慮,Rijndael匯聚了安全、性能、效率,易用和靈活等優(yōu)點,使它成為AES最合適的選擇,尤其是Rijndael在無論有無反饋模式的計算環(huán)境下的硬、軟件中都能顯示出其非常好的性能。它的密鑰安裝時間很好,也具有好的靈敏度。Rijndael的非常低的內存需求也使它很適合用于受限環(huán)境中,在這樣的環(huán)境下它仍可以表現(xiàn)出出色的性能。Rijndael的操作簡單,并可抵御強大和實時的攻擊。此外,它還有許多未被特別強調的防御性能。另外,在提供這些保護的同時也沒有影響Rijndael的性能。從分組長度和密鑰長度的觀點來看,Rijndael設計帶有靈活性,同時這種算法也允許一定循環(huán)次數的修正,但這個特點還需進一步研究,在現(xiàn)在還不被認同。最后要說的,Rijndael內部循環(huán)結構使得它表現(xiàn)出有益于并行水平結構的很好的潛能。
Rijndael在數據塊和密鑰長度的設計上也很靈活,算法可提供不同的迭代次數,雖然這些特征還需更深入的研究,短期內不可能被利用,但最終,Rijndael內在的迭代結構會顯示有好的潛能來防御入侵行為。
AES被開發(fā)用于替代DES,但NIST預測3重DES仍將在未來的一段時間內作為一種實用的算法(如用于美國政府),而單DES將退出歷史舞臺。
AES將被設計有三個密鑰長度128,192,256bits,在十進制里,這表示1)3.4×1038約為128-bit密鑰2)6.2×1057約為192-bit密鑰3)1×1077約為256-bit密鑰比較一下,AES的128-bit密鑰就比DES的56-bit密鑰強1021倍。
1990年以來,特制的“DES Cracker”的機器可以在幾個小時內找出一個DES密鑰。換句話說,通過測試所有可能的密鑰值,此硬件可以確定用于加密信息的是哪個密鑰。假設一臺一秒內可找出DES密鑰的機器(如,每秒試255個密鑰),如果用它來找出128-bitAES的密鑰,大約需要149萬億年。
NIST會繼續(xù)檢測此算法的安全性,并將在未來時間內處理可能產生的安全問題。NIST會持續(xù)關注Rijndael的加密分析的發(fā)展,一旦AES成為正式的標準,此標準將會每隔五年重新進行評估,對標準的維護也會持續(xù)下去。
沒人知道AES或其它的加密算法會持續(xù)多久,NIST的數據加密標準(DES)是一個美國政府標準,知道被龐大的并行網絡電腦攻擊和特定的“DES-Cracking”硬件攻克時,它已連續(xù)使用了20年。AES比DES支持更長的密鑰。除非一些對AES的攻擊速度比密鑰耗盡(key exhaustion)還要快,否則AES可保持超過20年之久的安全。
目前在AES算法的實現(xiàn)方法中,大多數是采用軟件方法實現(xiàn),而硬件實現(xiàn)方法存在硬件開銷大,成本過高等缺點如在AES算法中單次迭代包含數據變換、行移位、列混疊、密鑰運算等操作,而目前的硬件實現(xiàn)方法在一個時鐘周期內完成單次迭代,這樣數據變換和列混疊的硬件開銷很大,約為4萬門左右;同時在AES算法中的每次迭代需要的密鑰生成也是在一個時鐘周期完成,硬件開銷很大,約為1萬門左右;另外在解密過程中,由于密鑰是逆序的,因此所有迭代密鑰需要一次生成,再逆序使用,硬件開銷更大。若要支持全部3種密鑰,硬件實現(xiàn)會將近10萬門,如此則無法在智能卡等對芯片面積有一定要求、限制的場合運用。
發(fā)明內容
本發(fā)明的目的在于在加解密過程中實現(xiàn)了密鑰的串行生成,大大簡化了電路,降低了成本,提高了智能卡芯片的競爭能力。
為了實現(xiàn)上述目的,本發(fā)明的技術方案是一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,包括采用通用的微處理器接口,加解密步驟如下1)初始化數據和密鑰寄存器2)設定密鑰長度3)裝載密鑰4)裝載數據5)設定加密或解密6)啟動加解密其特征在于加密過程進行Nr次的加密迭代,同時進行相應的密鑰串行生成;解密過程分為兩個步驟,先進行密鑰預生成(與加密過程的密鑰串行生成一致),隨后進行Nr次解密迭代的解密過程,同時進行密鑰串行生成(逆向);其中,串行處理方法實現(xiàn)單次加密迭代的步驟為1)數據變換2)數據行移位3)數據列混疊4)密鑰運算在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟3。
串行處理方法實現(xiàn)單次解密迭代的步驟為1)數據逆變換2)數據行逆移位3)密鑰運算
4)數據列逆混疊在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟4。
Nr可以是10、12或14,密鑰串行生成使用8字作為迭代密鑰存儲器,即i=0,1,2,3,4,5,6,7。
密鑰串行生成的正向公式如下Nr=10,即密鑰長度為128位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3Temp1=Subword(Rotword(key3))^Rcon;Nr=12,即密鑰長度為192位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3,4,5KeyNi=KeyNi-1,i=6,7其中Temp1=SubWord(RotWord(Key5))^Rcon;Nr=14,即密鑰長度為256位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3KeyNi=Keyi^Keyi-1^…^Key4^Temp2,i=4,5,6,7其中Temp1=SubWord(RotWord(Key7)^Rcon,Temp2=SubWord(Key3^Key2^Key1^Key0^Temp1);密鑰串行生成的逆向公式如下Nr=10,即密鑰長度為128位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3其中Temp1=SubWord(RotWord(Key3^Key2))^Rcon;Nr=12,即密鑰長度為192位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3,4,5其中Temp1=SubWord(RotWord(Key5^Key4)^Rcon;Nr=14,即密鑰長度為256位KeyNi=KeyNi^KeyNi-1,i=1,2,3,5,6,7KeyN4=Key4^Temp1;KeyN0=Key0^Temp2;其中Temp1=SubWord(RotWord(Key7^Key6))^Rcon,Temp2=SubWord^(Key6);密鑰串行生成包含以下步驟1)4個時鐘周期的數據變換,得到Temp1;若密鑰長度不為256位,進入第3步2)4個時鐘周期的數據變換,得到Temp23)1個時鐘周期的密鑰更新,密鑰更新參照密鑰串行生成的公式在Nr=10時,每次迭代前,均需進行密鑰的串行生成并輸出,在Nr=12時,即密鑰長度為192位時,每3次迭代需2次的密鑰串行生成,并應合理選擇輸出,在Nr=14時,即密鑰長度為256位時,每2次迭代需1次的密鑰串行生成,并應合理選擇輸出。
本發(fā)明提供一種在智能卡中用串行硬件實現(xiàn)AES算法的加、解秘方法,大大簡化了電路,降低了成本,提高了智能卡芯片的競爭能力。
具體實施例方式下面結合附圖和實施例對本發(fā)明作進一步的描述,附
圖1為本發(fā)明的AES串行硬件實現(xiàn)的模塊示意圖,附圖2為本發(fā)明的加密過程示意圖,附圖3為本發(fā)明的解密過程示意圖,附圖4為本發(fā)明的加密過程單次迭代串行實現(xiàn)示意圖,附圖5為本發(fā)明的密鑰串行生成示意圖,附圖6為本發(fā)明的密鑰生成算法(128位)流程示意圖,附圖7為本發(fā)明的密鑰串行生成的硬件連接示意圖,附圖8為本發(fā)明的控制模塊的狀態(tài)轉移示意圖,本發(fā)明為一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,包括采用通用的微處理器接口,加解密步驟如下1)初始化數據和密鑰寄存器2)設定密鑰長度3)裝載密鑰4)裝載數據5)設定加密或解密6)啟動加解密其主要特征在于加密過程進行Nr次的加密迭代,同時進行相應的密鑰串行生成,如圖2所示;解密過程分為兩個步驟,先進行密鑰預生成(與加密過程的密鑰串行生成一致),隨后進行Nr次解密迭代的解密過程,同時進行密鑰串行生成(逆向),如圖3所示;其中,串行處理方法實現(xiàn)單次加密迭代的步驟(以128位為例)如圖4所示1)128位的數據經過16個時鐘周期的數據變換2)數據經過1個時鐘周期的行移位3)數據經過4個周期的列混疊4)數據經過1個時鐘周期的密鑰運算在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟3;串行處理方法實現(xiàn)單次解密迭代的步驟為1)128位的數據經過16個時鐘周期的數據逆變換2)數據經過1個時鐘周期的行逆移位
3)數據經過1個時鐘周期的密鑰運算4)數據經過4個周期的列逆混疊在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟4;加密迭代次數Nr可以是10、12或14,密鑰串行生成使用8字作為迭代密鑰存儲器,密鑰串行生成的正向公式如下Nr=10,即密鑰長度為128位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3Temp1=Subword(Rotword(key3))^Rcon;Nr=12,即密鑰長度為192位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3,4,5KeyNi=KeyNi-1,i=6,7其中Temp1=SubWord(RotWord(Key5))^Rcon;Nr=14,即密鑰長度為256位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3KeyNi=Keyi^Keyi-1^…^Key4^Temp2,i=4,5,6,7其中Temp1=SubWord(RotWord(Key7)^Rcon,Temp2=SubWord(Key3^Key2^Key1^Key0^Temp1);密鑰串行生成的逆向公式如下Nr=10,即密鑰長度為128位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3其中Temp1=SubWord(RotWord(Key3^Key2)^Rcon;Nr=12,即密鑰長度為192位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3,4,5其中Temp1=SubWord(RotWord(Key5^Key4))^Rcon;Nr=14,即密鑰長度為256位KeyNi=KeyNi^KeyNi-1,i=1,2,3,5,6,7KeyN4=Key4^Temp1;KeyN0=Key0^Temp2;其中Temp1=SubWord(RotWord(Key7^Key6)^Rcon,Temp2=SubWord^(Key6);密鑰串行生成如圖5所示,包含以下步驟1)4個時鐘周期的數據變換,得到Temp1;若密鑰長度不為256位,進入第3步2)4個時鐘周期的數據變換,得到Temp23)1個時鐘周期的密鑰更新,密鑰更新參照密鑰串行生成的公式AES算法輸入的密鑰長度可為4/6/8字。對應地,需要經過10/12/14次的迭代,每一次迭代需要4字的密鑰,共需產生44/52/60字的密鑰。以密鑰長度為128位為例,其中Nk=4,表示密鑰字長;Nr=10,表示迭代次數;Nb=4,表示迭代過程中的塊大小。AES算法采用加密密鑰K執(zhí)行密鑰生成程序以產生一張密鑰列表。密鑰生成程序共產生Nb(Nr+1)個字算法需要一組由Nb個字組成的初始密鑰,而且在Nr次迭代過程中每一次均需要由Nb個字組成的密鑰數據。由此產生的密鑰列表包含一個長度為4字的線性矩陣,用[wi],其中,0≤i≤Nb(Nr+1)。密鑰生成程序流程如圖6所示,首先擴展密鑰的前Nk個字由加密密鑰K填充。每一個緊接著的字w[i]都等于前一個字w[i-1]和Nk個以前的字w[i-Nk]的異或。對于那些從順序上來說是Nk倍數的字,在異或之前要對w[i-1]進行一次變換,然后才與迭代常數矩陣Rcon[i]進行異或。這個變換包含一個在字中以字節(jié)方式進行的循環(huán)移位RotWord();及一個四字節(jié)查表SubWord()。當迭代次數Nr=10,即密鑰長度為128位時Key0<=Key0^(Temp^Rcon);Key1<=Key1^Key0^(Temp^Rcon);Key2<=Key2^Key1^Key0^(Temp^Rcon);Key3<=Key3^Key2^Key1^Key0^(Temp^Rcon);其中Temp=Subword(Rotword(key3))。
密鑰輸入、輸出形式為KEY={Key0,Key1,Key2,Key3}。
由于迭代運算的密鑰長度僅需128位,因此在Nr=10時,每次迭代前,均需進行密鑰的串行生成并輸出;在Nr=12時,每3次迭代需2次的密鑰串行生成,并應合理選擇輸出;在Nr=14時,每2次迭代需1次的密鑰串行生成,并應合理選擇輸出。
為了便于與微處理器接口,設置了控制寄存器、狀態(tài)寄存器、數據寄存器等通用寄存器,利用通用寄存器實現(xiàn)加解密步驟如下1)初始化數據和密鑰寄存器2)設定密鑰長度3)裝載密鑰4)裝載數據5)設定加密或解密6)啟動加解密讀取狀態(tài)寄存器可以判斷操作是否結束;在操作結束后可以讀取結果。
密鑰串行生成的實現(xiàn)電路如圖7所示,當前的迭代密鑰是由上一次迭代密鑰與控制模塊運算后串行地生成。
圖8為本發(fā)明的控制模塊的狀態(tài)轉移示意圖,左半部分詳細描述了串行實現(xiàn)單次加解密迭代過程的步驟,右半部分則是對應加解密迭代的密鑰串行生成的步驟。
綜上所述,通過設置控制寄存器、狀態(tài)寄存器、數據寄存器等通用寄存器與微處理器接口,完成裝載密鑰、數據并確定加、解密方式;啟動加解密后進入AES算法的加、解密過程,經過Nr次的串行迭代過程,以及對應的密鑰串行生成過程,得到最后的加解密的數據。完成了在智能卡中的以串行硬件的方式實現(xiàn)AES算法。
權利要求
1.一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,包括采用通用的微處理器接口,加解密步驟如下1)初始化數據和密鑰寄存器2)設定密鑰長度3)裝載密鑰4)裝載數據5)設定加密或解密6)啟動加解密其特征在于加密過程進行Nr次的加密迭代,同時進行相應的密鑰串行生成;解密過程分為兩個步驟,先進行密鑰預生成,隨后進行Nr次解密迭代的解密過程,同時進行密鑰串行逆向生成。其中,串行處理方法實現(xiàn)單次加密迭代的步驟為1)數據變換2)數據行移位3)數據列混疊4)密鑰運算在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟3。串行處理方法實現(xiàn)單次解密迭代的步驟為1)數據逆變換2)數據行逆移位3)密鑰運算4)數據列逆混疊在第一次迭代前先進行密鑰運算,在最后一次迭代時省略步驟4。迭代次數Nr可以是10、12或14,密鑰串行生成使用8字作為迭代密鑰存儲器,即i=0,1,2,3,4,5,6,7。密鑰串行生成的正向公式如下Nr=10,即密鑰長度為128位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3Temp1=Subword(Rotword(key3))^Rcon;Nr=12,即密鑰長度為192位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3,4,5KeyNi=KeyNi-1,i=6,7其中Temp1=SubWord(RotWord(Key5))^Rcon;Nr=14,即密鑰長度為256位KeyNi=Keyi^Keyi-1^…^Key0^Temp1,i=0,1,2,3KeyNi=Keyi^Keyi-1^…^Key4^Temp2,i=4,5,6,7其中Temp1=SubWord(RotWord(Key7))^Rcon,Temp2=SubWord(Key3^Key2^Key1^Key0^Temp1);密鑰串行生成的逆向公式如下Nr=10,即密鑰長度為128位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3其中Temp 1=SubWord(RotWord(Key3^Key2))^Rcon;Nr=12,即密鑰長度為192位KeyN0=Key0^Temp1;KeyNi=KeyNi^KeyNi-1,i=1,2,3,4,5其中Temp1=SubWord(RotWord(Key5^Key4))^Rcon;Nr=14,即密鑰長度為256位KeyNi=KeyNi^KeyNi-1,i=1,2,3,5,6,7KeyN4=Key4^Temp1;KeyN0=Key0^Temp2;其中Temp1=SubWord(RotWord(Key7^Key6))^Rcon,Temp2=SubWord^(Key6);
2.根據權利要求1所述的一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,其特征在于密鑰串行生成包含以下步驟1)4個時鐘周期的數據變換,得到Temp1;若密鑰長度不為256位,進入第3步2)4個時鐘周期的數據變換,得到Temp23)1個時鐘周期的密鑰更新,密鑰更新參照密鑰串行生成的公式
3.根據權利要求1、2所述的一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,其特征在于在Nr=10時,每次迭代前,均需進行密鑰的串行生成并輸出,在Nr=12時,即密鑰長度為192位時,每3次迭代需2次的密鑰串行生成,并應合理選擇輸出,在Nr=14時,即密鑰長度為256位時,每2次迭代需1次的密鑰串行生成,并應合理選擇輸出。
全文摘要
本發(fā)明涉及一種在智能卡中用串行硬件實現(xiàn)AES算法的方法,其特征在于設置了控制寄存器、狀態(tài)寄存器、數據寄存器等通用寄存器與微處理器接口,支持全部3種密鑰128位、192位、256位,對單次加解密迭代采用了串行結構,并且在加解密過程中實現(xiàn)了密鑰的串行生成,大大簡化了電路,降低了成本,提高了智能卡芯片的競爭能力。
文檔編號G06K19/07GK1549105SQ03116888
公開日2004年11月24日 申請日期2003年5月13日 優(yōu)先權日2003年5月13日
發(fā)明者郭俊, 全佳, 印義言, 郭 俊 申請人:上海華園微電子技術有限公司