新四季網

一種適用於嵌入式系統的基於高速緩存的aes加速器的製作方法

2023-05-09 16:10:56

專利名稱:一種適用於嵌入式系統的基於高速緩存的aes加速器的製作方法
技術領域:
本發明屬於集成電路設計技術領域,具體涉及到一種適用於嵌入式系統的AES加
速器ο
背景技術:
隨著信息技術的飛速發展,計算機技術的突飛猛進使得越來越多的敏感信息將通過公開的媒介進行傳播。為了保護敏感信息,各種密碼算法被廣泛地應用到網絡和無線通信領域中。雖然目前有些密碼算法通過增加額外的查找表來實現高速運算,但是所需的晶片面積較大,為了解決這個問題,本設計在通用處理器的基礎上添加一些特殊指令與專用單元,並且使用cache (高速緩存)的部分資源來實現並行查找表的功能,從而有效地提高了密碼算法的運算速度。分組密碼一直是密碼學中一種重要的加密技術,在很多的密碼系統中都處於核心地位,也可以作為消息認證技術、數據完整性機制以及數字籤名中的核心部件。於2001年被美國國家標準和技術協會NIST定為美國政府新的加密標準的AES(AdvanCed Encryption Mandard)算法是一種常見的分組密碼算法,其應用場合見於諸多安全領域。AES是以塊為單位對數據進行操作,它所允許的數據塊和密鑰的長度可以是128,192或256位。在AES 標準算法中採用的數據塊長度為1 位,密鑰長度可為1 ,192或256位。

發明內容
本發明的目的在於設計一種能加速AES算法的運算,同時能顯著地降低硬體成本的適用於嵌入式系統的AES加速器。附圖1給出了集成了 AES加速器嵌入式系統的基本框圖,該系統由中央處理器 (1)、指令高速緩存(2)、數據高速緩存(7)、緩存控制器(3)、總線接口部件(4)、總線(5)、外圍存儲器(8)以及AES加密運算單元(6)(即AES加速器)組成。該系統的工作過程如下 中央處理器(1)從指令高速緩存(2)中讀取指令,如果指令不在指令高速緩存中,將通過緩存控制器(3)向總線接口部件(4)發出訪問外圍存儲器(8)的請求,並通過總線(5)取回所需的指令,中央處理器(1)在取到指令後繼續運行。接著,中央處理器(1)中的解碼模塊對指令進行解碼,如果發現這條指令是AES加速器(6)的特殊指令,則根據該指令執行相應的操作。本發明通過將查找表導入到4路組相連的cache中,並將查找表的數據鎖存,這種方式能夠有效地減小晶片的面積,從而降低了硬體成本。因此,本發明使用cache中的部分資源來充當並行查找表。本發明可以從cache中並行地查找數據,並且完成相關數據的運算,因此能夠實現高速的AES加解密運算,從而在有效地降低硬體成本的基礎上實現快速的加解密運算。本發明在中央處理器(1)中引入了 8條特殊指令,它們分別是FETCHLOCK,LD_ CACHELINE, CONFIG, CACHE_AES0, CACHE_AES1, CACHE_AES2, CACHE_AES3 禾口 SW_AES,這 8 條指令都是原系統指令集中所保留而未使用的指令,它們的指令編碼分別為
FETCHL0CK LD_CACHELINE CONFIG: Sff AES
01IOOlxx xxxxxxxx xxxxxxxx xxxxxxxx
01IOlOxx xxxxxxxx xxxxxxxx xxxxxxxx
01IOlOxx xxxxxxxx xxxxxxxx xxxxxxxx
01101Ixx xxxxxxxx xxxxxxxx xxxxxxxx
CACHE_AES0 CACHE_AES1 CACHE_AES2 CACHE AES3
01IlOOxx xxxxxxxx xxxxxxxx xxOOlOOO
01IlOOxx xxxxxxxx xxxxxxxx xxOOlOOl
01IlOOxx xxxxxxxx xxxxxxxx χχΟΟΙΟΙΟ
01IlOOxx xxxxxxxx xxxxxxxx xxOOlOl1
本發明的AES加速器使用12個32位寄存器以及上述特殊指令的解碼邏輯,其中第0 寄存器組(由第0寄存器、第1寄存器、第2寄存器、第3寄存器組成)和第1寄存器組(由第 4寄存器、第5寄存器、第6寄存器、第7寄存器組成)用於交替存儲當前需要進行輪變換的數據,第2寄存器組(由第8寄存器、第9寄存器、第10寄存器、第11寄存器組成)用於存儲 128bit的輪密鑰,根據特殊指令產生控制信號,來控制數據在AES加密運算單元內的運算。本發明中的AES加密運算單元(6)所採用的數據塊長度是實際應用中最常見的1 位,其加密輪數為10。其AES算法是一種迭代的算法,每一次迭代可以稱為一輪 (Round)。 它的加密流程如附圖3所示,其主要運算包括行變換(ShiftRow)、字節替換 (SubByte)、列混合(MixColumn)和密鑰加(AddRoundKey)運算等。第0輪只進行一次密鑰加運算,第1至9輪需要順次經過這四種變換運算,而最後一輪不需要進行列混合變換。AES 解密流程則是加密過程的完全逆過程,即第0輪只進行一次密鑰加運算,第1至第9輪都要依次進行這四種運算的逆運算,最後一輪沒有逆列混合運算,如附圖4所示。附圖5給出了傳統的基於查找表的AES輪函數的實現,查找表操作完成了行變換、字節替換和列混合的運算。對AES,128-bit的輪輸入被分成4個字,分別表示為W3S W21, Wli, WOi,這4個字的 16個字節被標上b0到bl5。每個字節用來索引四個具有256*32 (比特)查找表中的一個, 四個查找表分別用Ta、Tb、Tc、Td來表示。從四個查找表中得到的數據再與輪密鑰中的數據進行異或可以得到一個新的字,依次執行四次類似的操作後,可以得到下一輪的輸入。本發明是對傳統的基於查找表的創新,採用cache (高速緩存)的部分資源充當並行查找表。集成在通用處理器上的專用AES加速器的執行步驟如下
首先執行特殊指令FETCHL0CK,將查找表的數據以及初始的輪函數的輸入,從外圍存儲器預取並鎖存到高速數據緩存中。接著執行指令LD_CACHELINE,將高速數據緩存中的初始的輪函數的輸入和輪密鑰分別寫到寄存器組0與寄存器組2。然後執行指令CACHE_ AESO, CACHE_AES1、CACHE_AES2和CACHE_AES3,這四條指令交替使用寄存器組0和寄存器組1中的內容生成訪問查找表原始的索引T0[7:0]、T1[7:0]、T2[7:0]和Τ3[7:0]。再對原始的索引進行變換,得到訪問高速數據緩存所需的索引Ta[ll:0]、Tb[ll:0]、Tc[ll:0]和 Td[ll:0]。然後從4路組相連的數據高速緩存中,並行的取出4個32-bit的數據和寄存器組2中存儲的輪密鑰中的字進行異或,經過4次這樣的操作後,得到下一輪運算的輸入。在進行最後一輪的運算時,需要對Config寄存器進行配置,用於控制產生訪問最後一輪所需查找表的索引,接下來產生最終的U8-bit的輸出。最後,執行指令SW_AES將AES運算的結果寫回內存。
5
本發明的優點是充分利用了嵌入式系統中高速緩存的資源來充當AES並行運算的查找表,採用這種方式實現AES運算的加速只需較小的硬體代價,另一方面,完成10輪的 AES的加解密運算的時間約為50個時鐘周期,具有較高的加解密的吞吐率。本發明能夠較好地應用於手持設備中的嵌入式系統。


圖1 一種適用於嵌入式系統的基於高速緩存的AES加速器。圖2基於高速緩存的AES加密單元。圖3 AES加密流程圖。圖4 AES解密流程圖。圖5傳統的基於並行查找表的AES輪函數。圖中標號1為中央處理器,2為指令高速緩存,3為高速緩存控制器,4為總線接口部件,5為總線,6為AES運算單元,7為數據高速緩存,8為外圍存儲器,9為中央處理器產生的地址信號,10為AES運算單元產生的查找表Ta的索引,11為AES運算單元產生的查找表Tb的索引,12為AES運算單元產生的查找表Tc的索引,13為AES運算單元產生的查找表Td的索弓I,14為第一多路器,15為第二多路器,16為第三多路器,17為第四多路器,18為查找表Ta,19為查找表Tb,20為查找表Tc,21為查找表Td,22為第一比較器,23為第二比較器,24為第三比較器,25為第四比較器,26為第一與門,27為第二與門,28為第三與門,四為第四與門,30為或門,31為第五多路器,32為4個字選多路器,33為異或門,34為替換算法模塊。
具體實施例方式本發明中基於cache的AES專用加密單元如附圖2所示,下面將以4路組相連,行大小為16位元組,容量為16KB高速數據緩存為例,進一步描述本發明。本發明具有2種工作模式AES加密和AES解密。指令共有8種FETCHL0CK,LD_ CACHELINE, CONFIG, CACHE_AES0,CACHE_AES1,CACHE_AES2,CACHE_AES3 禾口 SW_AES。其中
當需要執行AES加密運算時,FETCHL0CK指令將加密用的查找表數據和加密用的所有輪密鑰,從外圍存儲器(8)中預取到高速數據緩存(7)中並將導入的數據鎖住,通過將 cache行的狀態鎖存位置為有效,並用這狀態位去控制支持鎖存操作的最近最少使用替換模塊(34),使得預取的數據在進行AES加密運算過程中不被替換掉。當進行第1輪的AES加密時,中央處理器(1)從指令高速緩存中(2)中去取指令 LD_CACHELINE,如果指令不在指令高速緩存中,則通過緩存控制器(3)向總線接口部件(4) 發出訪問外圍存儲器(8)的請求,中央處理器的流水線將停頓直到取到指令後流水線繼續工作。接著中央處理器中的解碼模塊對LD_CACHELINE指令進行解碼,生成訪問緩存的地址 (9),緩存地址分別去訪問高速數據緩存的4路,並將從4路中取出的標記與緩存地址(9)中標記的部分經過第一比較器(22),第二比較器(23),第三比較器(24)和第四比較器(4)找到該緩存地址對應的數據所在的路。並將其結果分別與cache行的有效狀態位經過第一與門( ),第二與門(27),第三與門(28)和第四與門(29),得到各路命中的結果並經過一個或門(30)判斷是否命中。從4路中取出的數據經過第五多路器(31)將命中的數據提供給中央處理器。執行LD_CACHELINE指令將U8_bit的輪函數輸入寫入到寄存器組0,以及第 1輪加密密鑰從高速數據緩存中寫入到寄存器組2中。使用CONFIG指令對配置寄存器Config進行編程用於指示將進行加密運算。接著執行指令CACHE_AESO, CACHE_AES1, CACHE_AES2和CACHE_AES3,每條指令均生成訪問查找表Ta (18),查找表Tb (19),查找表Tc (20)和查找表Td (21)的索引Ta (10),索引Tb (11),索引Tc (12)和索引Td (13),分別經過第一多路器(14),第二多路器(15),第三多路器(16)和第四多路器(17)得到訪問高速數據緩存的索引。每條指令分別從cache中的查找表Ta、查找表Tb,查找表Tc和查找表Td中取出數據並經過字選多路器(32)從U8_bit 的行中選出相應的32-bit的數據,接著將獲得的四個32-bit的數據與輪密鑰中的字經過一個異或門(33 ),生成下一輪輸入的一個字。這四條指令執行完成後,得到第2輪加密運算所需的輸入數據。隨後進行第2輪的加密運算,LD_CACHELINE指令將第2輪加密密鑰從高速緩存中導入到寄存器組2中,同理,執行指令CACHE_AES0, CACHE_AES 1, CACHE_AES2和CACHE_AES3 並生成第3輪加密的輸入。第3-9輪的加密運算與第二輪的操作類似,第9輪加密產生了第10輪加密的輸入數據。接著執行第10輪加密運算,首先執行CONFIG指令,編程配置寄存器Conf ig用於指示要進行最後一輪加密運算。最後一輪的加密運算與前9輪的不同之處是查找表不一樣,因此需要控制生成訪問另外4張表的索引信號,接著將第10輪的輪密鑰導入到寄存器組2中,執行指令CACHE_AES0, CACHE_AES 1, CACHE_AES2和CACHE_AES3並生成最終的密文。 最後,執行SW_AES指令將加密得到的密文從寄存器組0中寫回到內存中。當需要進行AES解密運算時,FETCHL0CK指令將解密用的查找表數據和解密用的所有輪密鑰,從外圍存儲器(21)中預取到高速數據緩存(22)中,並將查找表所在行的鎖存位置成有效,以避免導入cache的查找表的數據被替換掉。當進行第1輪的AES解密時,LD_CACHELINE指令將U8_bit的原始輸入,從cache 中寫入到寄存器組0中,並將第1輪解密密鑰從cache中導入到特殊寄存器組2中,並使用 CONFIG指令對配置寄存器進行編程用於指示是進行解密運算。接著執行指令CACHE_AES0, CACHE_AES1, CACHE_AES2和CACHE_AES3,得到第2輪解密運算所需的輸入數據。隨後進行第2輪的解密運算,LD_CACHELINE指令將第2輪解密密鑰,從高速緩存中導入到特殊寄存器組2中,同理,執行指令CACHE_AES0,CACHE_AES1, CACHE_AES2和CACHE_ AES3並生成第3輪解密的輸入。第3-9輪的解密運算與第2輪的操作類似,第9輪解密產生了第10輪解密的輸入數據。接著執行第10輪解密運算,首先執行CONFIG指令編程配置寄存器Conf ig用於指示要進行最後一輪解密運算,最後一輪的解密運算與前9輪的不同之處使用的查找表不一樣,因此需要控制生成訪問另外4張表的索引信號,接著將第10輪解密的輪密鑰導入到特殊寄存器組2中,執行指令CACHE_AES0, CACHE_AES1, CACHE_AES2和CACHE_AES3並生成最終的明文。最後,執行SW_AES指令將解密得到的明文從寄存器組0中寫回到內存中。本發明所設計的適用於嵌入式系統的AES加速器,輸入密鑰長度為1 位,以較小的硬體代價實現了較高的加解密吞吐率。如採用中芯國際(SMIC)O. 13 μ m標準CMOS工藝進行邏輯綜合,最高時鐘頻率可達到150 MHz,核心電路等效門為6. 5K。在將查找表數據和原始的輸入導入cache的情況下,一次AES運算的時間約為50個周期,吞吐率達到384MbpSc
附錄AES加解密的程序
aes enc
Ii $8, 0 CONFIG $8
復位配置信息
設置輪密鑰的基地址
Iui $16, 0x9000 ori $16,$16,0x6500
LD_CACHELINE 0x00, OxbO ($16)// 將 128-bit 的輸入導入到寄存器組 0 LD_CACHELINE 0x02, 0x10 ($16) //將加密的第1輪密鑰導入到寄存器組2 CACHE_AES0 $4 //執行第1次查表,將結果寫入4號特殊寄存器 CACHE_AES1 $5 //執行第2次查表,將結果寫入5號特殊寄存器
CACHE_AES2 $6 , CACHE_AES3 $7 , LD_CACHELINE 0x02; CACHE_AES0 $0 , CACHE_AES1 $1 , CACHE_AES2 $2 , CACHE_AES3 $3 , LD_CACHELINE 0x02; CACHE_AES0 $4 , CACHE_AES1 $5 , CACHE_AES2 $6 , CACHE_AES3 $7 , LD_CACHELINE 0x02; CACHE_AES0 $0 CACHE_AES1 $1 CACHE_AES2 $2 CACHE_AES3 $3 LD_CACHELINE 0x02; CACHE_AES0 $4 CACHE_AES1 $5 CACHE_AES2 $6 CACHE_AES3 $7 LD_CACHELINE 0x02; CACHE_AES0 $0 CACHE_AES1 $1 CACHE_AES2 $2 CACHE_AES3 $3 LD CACHELINE 0x02,
執行第3次查表,將結果寫入6號特殊寄存器 執行第4次查表,將結果寫入7號特殊寄存器 0x20 ($16) Il將加密的第2輪密鑰導入到寄存器組2 執行第ι次查表,將結果寫入ο號特殊寄存器 執行第2次查表,將結果寫入ι號特殊寄存器 執行第3次查表,將結果寫入2號特殊寄存器 執行第4次查表,將結果寫入3號特殊寄存器 0x30 ($16) Il將加密的第3輪密鑰導入到寄存器組2 執行第1次查表,將結果寫入4號特殊寄存器 執行第2次查表,將結果寫入5號特殊寄存器 執行第3次查表,將結果寫入6號特殊寄存器 執行第4次查表,將結果寫入7號特殊寄存器 0x40 ($16) Il將加密的第4輪密鑰導入到寄存器組2 //執行第1次查表,將結果寫入0號特殊寄存器 //執行第2次查表,將結果寫入1號特殊寄存器 //執行第3次查表,將結果寫入2號特殊寄存器 //執行第4次查表,將結果寫入3號特殊寄存器 0x50 ($16) Il將加密的第5輪密鑰導入到寄存器組2 //執行第1次查表,將結果寫入4號特殊寄存器 //執行第2次查表,將結果寫入5號特殊寄存器 //執行第3次查表,將結果寫入6號特殊寄存器 //執行第4次查表,將結果寫入7號特殊寄存器 0x60 ($16) Il將加密的第6輪密鑰導入到寄存器組2 //執行第1次查表,將結果寫入0號特殊寄存器 //執行第2次查表,將結果寫入1號特殊寄存器 //執行第3次查表,將結果寫入2號特殊寄存器 //執行第4次查表,將結果寫入3號特殊寄存器 0x70 ($16) Il將加密的第7輪密鑰導入到寄存器組2CACHE_AES0 $4 CACHE_AES1 $5 CACHE_AES2 $6 CACHE_AES3 $7 LD_CACHELINE 0x02 CACHE_AES0 $0 CACHE_AES1 $1 CACHE_AES2 $2 CACHE_AES3 $3 LD_CACHELINE 0x02 CACHE_AES0 $4 CACHE_AES1 $5 CACHE_AES2 $6 CACHE_AES3 $7 ori $8,$8,0x2 CONFIG $8 LD_CACHELINE 0x02 CACHE_AES0 $0 // CACHE_AES1 $1 // CACHE_AES2 $2 // CACHE_AES3 $3 // Sff_AES $0,OxbO ($16) // Sff_AES $1, 0xb4($16) Sff_AES $2, 0xb8($16) Sff_AES $3,Oxbc ($16) jr $ra nop
.end aes_enc aes_dec: Ii $8, 1 CONFIG $8/
Iui $16, 0x9000 / ori $16,$16,0x6500
Il執行第1次查表,將結果寫入4號特殊寄存器 //執行第2次查表,將結果寫入5號特殊寄存器 //執行第3次查表,將結果寫入6號特殊寄存器 //執行第4次查表,將結果寫入7號特殊寄存器 0x80 ($16) Il將加密的第8輪密鑰導入到寄存器組2 //執行第1次查表,將結果寫入0號特殊寄存器 //執行第2次查表,將結果寫入1號特殊寄存器 //執行第3次查表,將結果寫入2號特殊寄存器 //執行第4次查表,將結果寫入3號特殊寄存器 0x90 ($16) Il將加密的第9輪密鑰導入到寄存器組2 /執行第1次查表,將結果寫入4號特殊寄存器 /執行第2次查表,將結果寫入5號特殊寄存器 /執行第3次查表,將結果寫入6號特殊寄存器 /執行第4次查表,將結果寫入7號特殊寄存器
//指示要進行第10輪加密運算
OxaO ($16) //將加密的第10輪密鑰導入到寄存器組2 /執行第1次查表,將結果寫入0號特殊寄存器 /執行第2次查表,將結果寫入1號特殊寄存器 /執行第3次查表,將結果寫入2號特殊寄存器 /執行第4次查表,將結果寫入3號特殊寄存器 '將運算結果寫回內存
進行配置,指示將進行解密運算設置輪密鑰的基地址
LD_CACHELINE 0x00, OxbO ($16)//裝載U8_bit密文和第0輪密鑰異或後的結
果到寄存器組0
LD_CACHELINE 0x02, 0x10 ($16) //裝載解密的第1輪密鑰到寄存器組2 CACHE_AES0 $4//執行第1次查表,將結果寫入4號特殊寄存器
CACHE_AES1 $5//執行第2次查表,將結果寫入5號特殊寄存器
CACHE_AES2 $6//執行第3次查表,將結果寫入6號特殊寄存器CACHE_AES3 $7Il執行第LD_CACHELINE 0x02,0x20 ($16) /CACHE_AES0 $0Il執行第CACHE_AES1 $1Il執行第CACHE_AES2 $2Il執行第CACHE_AES3 $3Il執行第LD_CACHELINE 0x02,0x30 ($16)CACHE_AES0 $4Il執行第CACHE_AES1 $5Il執行第CACHE_AES2 $6Il執行第CACHE_AES3 $7Il執行第LD_CACHELINE 0x02,0x40 ($16)CACHE_AES0 $0Il執行第CACHE_AES1 $1Il執行第CACHE_AES2 $2Il執行第CACHE_AES3 $3Il執行第LD_CACHELINE 0x02,0x50 ($16)CACHE_AES0 $4Il執行第CACHE_AES1 $5Il執行第CACHE_AES2 $6Il執行第CACHE_AES3 $7Il執行第LD_CACHELINE 0x02,0x60 ($16)CACHE_AES0 $0Il執行第CACHE_AES1 $1Il執行第CACHE_AES2 $2Il執行第CACHE_AES3 $3Il執行第LD_CACHELINE 0x02,0x70 ($16)CACHE_AES0 $4Il執行第CACHE_AES1 $5Il執行第CACHE_AES2 $6Il執行第CACHE_AES3 $7Il執行第LD_CACHELINE 0x02,0x80 ($16)CACHE_AES0 $0Il執行第CACHE_AES1 $1Il執行第CACHE_AES2 $2Il執行第CACHE_AES3 $3Il執行第LD_CACHELINE 0x02,0x90 ($16)CACHE_AES0 $4Il執行第CACHE_AES1 $5//執行第
4次查表,將結果寫入7號特殊寄存器 /裝載解密的第2輪密鑰到寄存器組2 1次查表,將結果寫入0號特殊寄存器 2次查表,將結果寫入1號特殊寄存器 3次查表,將結果寫入2號特殊寄存器 4次查表,將結果寫入3號特殊寄存器
//裝載解密的第3輪密鑰到寄存器組2 1次查表,將結果寫入4號特殊寄存器 2次查表,將結果寫入5號特殊寄存器 3次查表,將結果寫入6號特殊寄存器 4次查表,將結果7號特殊寄存器
//裝載解密的第4輪密鑰到寄存器組2 1次查表,將結果寫入0號特殊寄存器 2次查表,將結果寫入1號特殊寄存器 3次查表,將結果寫入2號特殊寄存器 4次查表,將結果寫入3號特殊寄存器
//裝載解密的第5輪密鑰到寄存器組2 1次查表,將結果寫入4號特殊寄存器 2次查表,將結果寫入5號特殊寄存器 3次查表,將結果寫入6號特殊寄存器 4次查表,將結果寫入7號特殊寄存器
//裝載解密的第6輪密鑰到寄存器組2 1次查表,將結果寫入0號特殊寄存器 2次查表,將結果寫入1號特殊寄存器 3次查表,將結果寫入2號特殊寄存器 4次查表,將結果寫入3號特殊寄存器
//裝載解密的第7輪密鑰到寄存器組2 1次查表,將結果寫入4號特殊寄存器 2次查表,將結果寫入5號特殊寄存器 3次查表,將結果寫入6號特殊寄存器 4次查表,將結果寫入7號特殊寄存器 //裝載解密的第8輪密鑰到寄存器組2 1次查表,將結果寫入0號特殊寄存器 2次查表,將結果寫入1號特殊寄存器 3次查表,將結果寫入2號特殊寄存器 4次查表,將結果寫入3號特殊寄存器
//裝載解密的第9輪密鑰到寄存器組2 1次查表,將結果寫入4號特殊寄存器 2次查表,將結果寫入5號特殊寄存器CACHE_AES2 $6 CACHE_AES3 $7 ori $8,$8,0x3 CONFIG $8 LD_CACHELINE 0x02,OxaO ($16)
CACHE_AES0 $0 CACHE_AES1 $1 CACHE_AES2 $2 CACHE_AES3 $3 Sff_AES $0,OxbO ($16)
Sff_AES $1, Sff_AES $2, Sff_AES $3, jr $ra nop end aes dec
0xb4($16) 0xb8($16) Oxbc ($16)
執行第3次查表,將結果寫入6號特殊寄存器執行第4次查表,將結果寫入7號特殊寄存器
配置信息指示進行第10輪解密運算
//裝載解密的第9輪密鑰到寄存器組2 執行第1次查表,將結果寫入0號特殊寄存器執行第2次查表,將結果寫入1號特殊寄存器執行第3次查表,將結果寫入2號特殊寄存器執行第4次查表,將結果寫入3號特殊寄存器 //將解密的結果寫回內存
權利要求
1.一種集成了基於高速緩存的AES加速器的嵌入式系統,其特徵在於由中央處理器 (1)、指令高速緩存(2)、數據高速緩存(7)、緩存控制器(3)、總線接口部件(4)、總線(5)、外圍存儲器(8)以及AES加速器(6)組成;該系統的工作流程如下中央處理器(1)從指令高速緩存(2)中讀取指令,如果指令不在指令高速緩存中,將通過緩存控制器(3)向總線接口部件(4)發出訪問外圍存儲器(8)的請求,並通過總線(5)取回所需的指令,中央處理器(1) 在取到指令後繼續運行;接著,中央處理器(1)中的解碼模塊對指令進行解碼,如果發現這條指令是AES加速器(6)的特殊指令,則根據該指令執行相應的操作。
2.根據權利要求1所述的嵌入式系統,其特徵在於引入了8條專用特殊指令,它們分別是 FETCHLOCK,LD_CACHELINE, CONFIG, CACHE_AES0, CACHE_AES 1, CACHE_AES2, CACHE_AES3 和SW_AES,它們的指令編碼分別為FETCHLOCK011001xx_xxxxxxxx_xxxxxxxx_xxxxxxxx011010xx_xxxxxxxx_xxxxxxxx_xxxxxxxx 011010xx_xxxxxxxx_xxxxxxxx_xxxxxxxx 01101lxx_xxxxxxxx_xxxxxxxx_xxxxxxxx Oil100xx_xxxxxxxx_xxxxxxxx_xx001000 Oil100xx_xxxxxxxx_xxxxxxxx_xx001001 011100xx_xxxxxxxx_xxxxxxxx_xx001010 —011100xx_xxxxxxxx_xxxxxxxx_xx001011 0
3.根據權利要求2所述的嵌入式系統,其特徵在於所述AES加速器(6)使用12個32位寄存器以及所述專用特殊指令的解碼邏輯,其中,由第0寄存器、第1寄存器、第2寄存器、 第3寄存器組成的第0寄存器組和由第4寄存器、第5寄存器、第6寄存器、第7寄存器組成的第1寄存器組用於交替存儲當前需要進行輪變換的數據,由第8寄存器、第9寄存器、 第10寄存器、第11寄存器組成的第2寄存器組用於存儲128bit的輪密鑰,根據特殊指令產生控制信號,來控制數據在AES加密運算單元內的運算。
4.根據權利要求3所述的嵌入式系統,其特徵在於所述的AES加速器(6)所採用的數據塊長度是1 位,其加密輪數為10 ;AES加密運算是一種迭代的算法,每一次迭代稱為一輪;其加密運算流程包括行變換、字節替換、列混合和密鑰加運算;第0輪只進行一次密鑰加運算,第1至9輪需要順次經過這四種變換運算,而最後一輪不需要進行列混合變換;AES 解密運算流程是加密運算過程的完全逆過程,即第0輪只進行一次密鑰加運算,第1至第9 輪都要依次進行這四種運算的逆運算,最後一輪沒有逆列混合運算。
5.根據權利要求4所述的嵌入式系統,其特徵在於所述AES加速器的執行步驟如下首先執行特殊指令FETCHLOCK,將查找表的數據以及初始的輪函數的輸入,從外圍存儲器預取並鎖存到高速數據緩存中;接著執行指令LD_CACHELINE,將高速數據緩存中的初始的輪函數的輸入和輪密鑰分別寫到第0寄存器組與第2寄存器組;然後執行指令 CACHE_AES0、CACHE_AES1、CACHE_AES2 和 CACHE_AES3,這四條指令交替使用第0寄存器組和第1寄存器組中的內容生成訪問查找表原始的索引T0[7:0]、 Τ1[7:0]、Τ2[7:0]和Τ3[7:0];再對原始的索引進行變換,得到訪問高速數據緩存所需的索引Ta[ll:0]、Tb[ll:0]、TC[ll:0]和Td[ll:0];然後從4路組相連的數據高速緩存中,並行的取出4個32-bit的數據和第2寄存器組中存儲的輪密鑰中的字進行異或,經過4次這樣的操作後,得到下一輪運算的輸入;在進行最後一輪的運算時,對Config寄存器進行配置, 用於控制產生訪問最後一輪所需查找表的索引,接下來產生最終的U8-bit的輸出;最後,執行指令SW_AES將AES運算的結果寫回內存。
6.一種適用於嵌入式系統的AES加速器,其特徵在於使用12個32位寄存器以及系統 8條專用特殊指令的解碼邏輯,其中,由第O寄存器、第1寄存器、第2寄存器、第3寄存器組成的第O寄存器組和由第4寄存器、第5寄存器、第6寄存器、第7寄存器組成的第1寄存器組用於交替存儲當前需要進行輪變換的數據,由第8寄存器、第9寄存器、第10寄存器、 第11寄存器組成的第2寄存器組用於存儲128bit的輪密鑰,根據特殊指令產生控制信號, 來控制數據在AES加密運算單元內的運算;其中,所述的8條專用特殊指令分別是FETCHLOCK,LD_CACHELINE, CONFIG, CACHE_ AESO,CACHE_AES1, CACHE_AES2, CACHE_AES3 和 SW_AES,它們的指令編碼分別為 FETCHLOCK011001xx_xxxxxxxx_xxxxxxxx_xxxxxxxx011010xx_xxxxxxxx_xxxxxxxx_xxxxxxxx 011010xx_xxxxxxxx_xxxxxxxx_xxxxxxxx 011011xx_xxxxxxxx_xxxxxxxx_xxxxxxxx 011100xx_xxxxxxxx_xxxxxxxx_xx001000 011100xx_xxxxxxxx_xxxxxxxx_xx001001 Oil100xx_xxxxxxxx_xxxxxxxx_xx001010 _Oil100xx_xxxxxxxx_xxxxxxxx_xx001011 。
7.根據權利要求6所述的AES加速器,其特徵在於所採用的數據塊長度是1 位,其加密輪數為10 ;AES加密運算是一種迭代的算法,每一次迭代稱為一輪;其加密運算流程包括行變換、字節替換、列混合和密鑰加運算;第0輪只進行一次密鑰加運算,第1至9輪需要順次經過這四種變換運算,而最後一輪不需要進行列混合變換;AES解密運算流程是加密運算過程的完全逆過程,即第0輪只進行一次密鑰加運算,第1至第9輪都要依次進行這四種運算的逆運算,最後一輪沒有逆列混合運算。
8.根據權利要求7所述的AES加速器,其特徵在於執行步驟如下首先執行特殊指令FETCHLOCK,將查找表的數據以及初始的輪函數的輸入,從外圍存儲器預取並鎖存到高速數據緩存中;接著執行指令LD_CACHELINE,將高速數據緩存中的初始的輪函數的輸入和輪密鑰分別寫到第0寄存器組與第2寄存器組;然後執行指令 CACHE_AES0、CACHE_AES1、CACHE_AES2 和 CACHE_AES3,這四條指令交替使用第0寄存器組和第1寄存器組中的內容生成訪問查找表原始的索引T0[7:0]、 Τ1[7:0]、Τ2[7:0]和Τ3[7:0];再對原始的索引進行變換,得到訪問高速數據緩存所需的索引Ta[ll:0]、Tb[ll:0]、TC[ll:0]和Td[ll:0];然後從4路組相連的數據高速緩存中,並行的取出4個32-bit的數據和第2寄存器組中存儲的輪密鑰中的字進行異或,經過4次這樣的操作後,得到下一輪運算的輸入;在進行最後一輪的運算時,對Config寄存器進行配置, 用於控制產生訪問最後一輪所需查找表的索引,接下來產生最終的U8-bit的輸出;最後,執行指令SW_AES將AES運算的結果寫回內存。LD_CACHELINE: CONFIG: Sff_AES: CACHE_AES0: CACHE_AES1 CACHE_AES2 CACHE AES全文摘要
本發明屬於集成電路設計技術領域,具體為一種適用於嵌入式系統的AES加速器。嵌入式系統由中央處理器、指令高速緩存、數據高速緩存、緩存控制器、總線接口部件、總線、外圍存儲器以及AES加速器組成;AES加速器輸入密鑰長度為128位,該AES加速器是基於對高速緩存並行查找的方式實現的,通過這種方式,不僅有效地減小了晶片的面積,而且加快了加解密運算的速度,在將查找表的數據以及最原始的輸入導入cache的情況下,一次AES加/解密運算的時間約為50周期,吞吐率達到384Mbps。本發明能夠較好地應用於手持設備中的嵌入式系統。
文檔編號G06F12/08GK102411683SQ20111023241
公開日2012年4月11日 申請日期2011年8月15日 優先權日2011年8月15日
發明者曾曉洋, 李輝楷, 王帥, 賀中柱, 韓軍 申請人:復旦大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀