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