用AVR匯編語(yǔ)言實(shí)現AES及其優(yōu)化
圖1 AES的加密和解密流程
由以上算法的流程中可以清楚地看到,整個(gè)算法中程序耗時(shí)最多的就是圈變化部分,因此對于算法的優(yōu)化也就在此;而圈變化部分可以優(yōu)化的也就是列變化。因為列變化是一個(gè)模乘同余規則。由于AES加密和解密是不對稱(chēng)的,如果不對其進(jìn)行優(yōu)化,會(huì )使算法的解密速度遠遠大于加密的速度[1]。
① 加密運算。對列變換(Mixcolumn)可以通過(guò)調用xtime子程序進(jìn)行優(yōu)化。具體算法[1]實(shí)現如下:
另一種有效的優(yōu)化方法就是離線(xiàn)構造一個(gè)表格,即列變化表格。這樣只要通過(guò)查表的方式就可以提高加密速度。
② 解密算法的優(yōu)化。由于解密的列變換的系數分別是09、0E、0B和0D。在AVR單片機上實(shí)現以上的乘法顯然是需要很多的時(shí)間,從而導致了解密的性能降低。
優(yōu)化方法一:對列變化進(jìn)行分解使倍乘次數降低。
仔細研究解密矩陣的系數,不難發(fā)現解密矩陣和加密矩陣有著(zhù)一定的聯(lián)系,即解密矩陣等于加密矩陣和一個(gè)矩陣的相乘。通過(guò)這樣的聯(lián)系,就可以對算法進(jìn)行優(yōu)化:
這樣一來(lái),只用幾個(gè)簡(jiǎn)單的“異或”就可以實(shí)現列變化,使倍乘的次數降低,提高解密的速度。
優(yōu)化方法二:構造表格。
同加密構造方法一樣,可以構造四個(gè)表格T[ea]=e×a; T[9a]=9×a;T[9a]=9×a;T[ba]=b×a。這樣一來(lái),也只需要進(jìn)行查表和簡(jiǎn)單的異或就可以完成解密的任務(wù)。雖然這種方法將增加額外的開(kāi)銷(xiāo),但是它卻是一種有效的方法。
評論