2014-10-02 35 views
2

英特爾ISA允許我使用AES指令進行加密/解密的所有4個步驟一輪在一起,或者只有其中的3最後一輪。 也具有單獨的指令的唯一步驟是InvMixColumn變換(AESIMC)。時,我應該分開使用AESIMC,而是採用AESDEC

這是爲什麼?我應該在哪些條件下單獨使用該指令,然後使用AESDEC/AESDECLAST?

回答

1

您申請指令在關鍵的時候做AES-192(FIPS 197)。假設你有你的密鑰在寄存器xmm2到xmm14,如下所示:

aesimc xmm2, xmm2 
aesimc xmm3, xmm3 
aesimc xmm4, xmm4 
... 
aesimc xmm13, xmm13 
aesimc xmm14, xmm14 

這發生在aesdec之前。該指令還可以intermiggled,只要以前被通過解密指令中使用的aesimc發生在一個寄存器:

aesimc xmm14, xmm14 
aesdec xmm1, xmm14 
aesimc xmm13, xmm13 
aesdec xmm1, xmm13 
... 

但是,它可能是更快地做這一切在一次第一,因爲這種方式寄存器隨時可以用於aesdec說明。

僅供參考,指令文件說:

注:AESIMC指令應以使用解密他們準備應用到擴大AES輪密鑰(除了第一個和最後一輪的關鍵) 「等效逆密碼」(FIPS 197中定義)。

來源:http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/aes-instructions-set-white-paper.pdf(搜索章節「代碼示例」)。

+0

所以如果我理解正確的話,每個AESDEC之前,我應該在結果AESKEYGENASSIST的(目標)做AESIMC? – 2014-10-05 08:36:52

+0

是的,根據文檔'AES密鑰生成由兩條指令支持。 AESKEYGENASSIST用於生成用於加密的輪密鑰。 AESIMC用於將加密輪密鑰可用於decryption.' – 2014-10-05 09:40:36

+0

OK形式,它的怪異,他們沒有添加它是AESDEC本身的一部分,但我還是謝謝你! – 2014-10-05 10:22:01

相關問題