AES算法中S-box和列混合單元的優(yōu)化及FPGA實現(xiàn)
美國國家標準與技術局(National Institute of Standard and Technology,NIST)于1997年1月提出發(fā)展AES(Advanced Encryption Standard)加密算法,并于同年9月12日推出AES的早期基本算法。在研究了一系列早期算法之后,Rijndael算法被確定為先進加密標準(Advanced Encryption Standard,AES)。由于其較高的保密級別,AES算法被用來替代DES和3-DES,以適應更為嚴苛的數(shù)據(jù)加密需要。
與此同時,市場迫切需要AES的FPGA和ASIC的硬件解決方案,因為其與用軟件實現(xiàn)相比更安全而且更省電。在一些應用,如:信用卡,手機,PDA等中,硬件的復雜度是影響成本和能耗的一個非常重要的因素。因此,在加密和解密中都非常需要優(yōu)化AES的主要操作部分。在AES算法中,S-box是惟一的非線性單元,在加密解密,特別是字節(jié)替代和逆字節(jié)替代操作時需要分別執(zhí)行S-box和逆S-box。建立一個16×16的S-box,以往通常采用查找表的方式實現(xiàn),占用大量硬件資源。因此,對S-box進行優(yōu)化是實現(xiàn)高效AES的重要步驟。
在此首先通過在S-box和逆S-box中共用一個look-up列表,簡化非線性單元的復雜度,然后通過選擇合適的即約多項式,進行域GF(28)到GF(24)的同構映射,對S-box的算法進行優(yōu)化,并采用組合邏輯電路實現(xiàn),使優(yōu)化后的S-box在同等頻率條件下較顯著地減少了硬件資源的消耗。同時介紹了一種減小列混合(MixColumn)單元硬件復雜度的方案,可以明顯地減少列混合單元的設計面積。
1 S-box的優(yōu)化設計
在AES標準算法中定義了兩個較大的列表。S-box和逆S-box。將S-box用于兩個應用:字節(jié)替代和密鑰擴展。而逆S-box則用于逆字節(jié)替代。這兩個列表是不相同的,因此必須建立兩個不同的ROM(256×8 b),用以存儲這兩個列表。另外,在AES設計中使用平行結構,這就需要用到多個列表,這樣會使硬件過于復雜,需要對其進行優(yōu)化。以下主要對S-box模塊進行結構優(yōu)化。
1.1 S-box和逆S-box的組合
在一個高速128 b的AES設計中,一般需要總共20個S-box模塊和16個逆S-box模塊。其中,16個S-box模塊用于實現(xiàn)字節(jié)替代的功能,4個S-box用于實現(xiàn)密鑰擴展的功能,而16個逆S-box模塊用于實現(xiàn)逆字節(jié)替代功能。在這種情形下,如果字節(jié)替代和逆字節(jié)替代時使用不同的列表,就會占用大量的硬件資源。所以非常需要一種減少硬件復雜性的方法。
就如AES標準所描述的那樣,S-box的操作過程可以表示為:
因為multiplicative_inverse(乘法求逆)是一個相當復雜的方程,最常用的實現(xiàn)S-box的方法是運用look-up列表來由x得到y(tǒng)。等式(1)的逆等式如下:
因為multiplicative_inverse-1和multiplicative_inverse是相同的,所以等式(3)可以表述為:
評論