英特爾ISA允許我使用AES指令進行加密/解密的所有4個步驟一輪在一起,或者只有其中的3最後一輪。 也具有單獨的指令的唯一步驟是InvMixColumn變換(AESIMC)。時,我應該分開使用AESIMC,而是採用AESDEC
這是爲什麼?我應該在哪些條件下單獨使用該指令,然後使用AESDEC/AESDECLAST?
英特爾ISA允許我使用AES指令進行加密/解密的所有4個步驟一輪在一起,或者只有其中的3最後一輪。 也具有單獨的指令的唯一步驟是InvMixColumn變換(AESIMC)。時,我應該分開使用AESIMC,而是採用AESDEC
這是爲什麼?我應該在哪些條件下單獨使用該指令,然後使用AESDEC/AESDECLAST?
您申請指令在關鍵的時候做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(搜索章節「代碼示例」)。
所以如果我理解正確的話,每個AESDEC之前,我應該在結果AESKEYGENASSIST的(目標)做AESIMC? – 2014-10-05 08:36:52
是的,根據文檔'AES密鑰生成由兩條指令支持。 AESKEYGENASSIST用於生成用於加密的輪密鑰。 AESIMC用於將加密輪密鑰可用於decryption.' – 2014-10-05 09:40:36
OK形式,它的怪異,他們沒有添加它是AESDEC本身的一部分,但我還是謝謝你! – 2014-10-05 10:22:01