一種AES密碼算法的硬件實現(xiàn)
0 引言
密碼模塊是安全保密系統(tǒng)的重要組成部分,其核心任務(wù)就是加/解密數(shù)據(jù)。目前,分組密碼算法AES以其高效率、低開銷、實現(xiàn)簡單等特點被廣泛應(yīng)用于密碼模塊的研制。隨著計算機信息技術(shù)和超大規(guī)模集成電路技術(shù)的成熟與發(fā)展,通過硬件來實現(xiàn)密鑰模塊的內(nèi)部運作,可保證在外界無密鑰的明文流動,能夠?qū)崿F(xiàn)真正意義上的保密。此外,硬件實現(xiàn)還具有高速、高可靠性等特點。目前許多AES算法的硬件實現(xiàn)采用基于RAM查找表方式來實現(xiàn)算法中最關(guān)鍵的SubBytes部分。本文采用復(fù)合域來實現(xiàn)SubBytes部分的求逆運算,以便于采用組合邏輯減小面積。同時采用加/解密運算中列變換的部分電路進行復(fù)用,從而進一步節(jié)省實現(xiàn)面積。這樣可以使AES密碼應(yīng)用于RFID系統(tǒng),IC卡等面積要求較小的場合。
1 AES算法簡介
AES算法是一種迭代型分組密碼,其分組長度和密鑰長度均可變,各自可以獨立指定為128 b,192 b,256 b。本文主要討論分組長度和密鑰長度為128 b的情況。AES算法是將輸入的明文(或密文)分成16個字節(jié),在第一個Add Round Keys變換后進入10輪迭代。迭代過程的前9輪完全相同,依次經(jīng)過字節(jié)代替(substitute bytes)、行移位(shift rows)、列混合(mixcolumns)、輪密鑰加(add round keys),最后一輪則跳過了列混合(mix columns)。解密過程與加密過程類似,但執(zhí)行順序與描述內(nèi)容有所不同,因此AES算法的加解密運算需要分別實現(xiàn)。
2 AES算法的硬件設(shè)計
根據(jù)AES算法的原理和基本結(jié)構(gòu),將整個AES算法模塊分成4個相對獨立的子模塊:接口模塊、控制單元模塊、加解密運算模塊、密鑰擴展模塊。本文所設(shè)計的密碼算法不包括密鑰發(fā)生器,所用的密鑰通過接口模塊由外部輸入,加解密運算后的數(shù)據(jù)經(jīng)輸出接口輸出。AES算法模塊的總體結(jié)構(gòu)如圖1所示。
2.1 接口模塊的設(shè)計
輸入接口模塊的主要任務(wù)是:將數(shù)據(jù)傳送到加解密運算模塊,將外部輸入的密鑰傳送到密鑰擴展模塊。由于明文和密鑰輸入都是128位,將導(dǎo)致整個模塊的輸入/輸出過多,占用太多資源,考慮到本文的設(shè)計主要應(yīng)用于對面積要求較小的場合使用,如RFID系統(tǒng)中數(shù)據(jù)的傳輸,即每次傳輸?shù)臄?shù)據(jù)是64位,故采用4個32位寄存器,在時鐘的控制下每次輸入1組32位,通過4個時鐘周期可得到128位的數(shù)據(jù),可以有效減少資源的占用。輸出接口模塊的作用是將128位的解密運算結(jié)果輸出,同樣也采取32位分4組輸出的方法。
評論