【问题标题】:when should I use AESIMC separately, instead of using AESDEC我什么时候应该单独使用 AESDEC,而不是使用 AESDEC
【发布时间】:2014-11-27 08:37:15
【问题描述】:

x86 ISA 允许我使用 AES-NI 指令一起加密/解密一轮的所有 4 个步骤,或者最后一轮只加密/解密其中的 3 个。

唯一也有单独指令的步骤是 InvMixColumn 转换 (AESIMC)。

这是为什么呢?我应该在什么情况下将此指令与 AESDEC / AESDECLAST 分开使用?

【问题讨论】:

    标签: assembly x86 aes intel instruction-set


    【解决方案1】:

    您在执行 AES-192 (FIPS 197) 时将指令应用于密钥。假设您在寄存器 xmm2 到 xmm14 中有您的密钥,如下所示:

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

    这发生在 aesdec 之前。指令也可以混合使用,只要 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 的结果(目标)进行 ASIMC 吗?
    • 是的,根据文档AES key generation is supported by two instructions. AESKEYGENASSIST is used for generating the round keys, used for encryption. AESIMC is used for converting the encryption round keys to a form usable for decryption.
    • 好的,奇怪的是他们没有将它添加为 AESDEC 本身的一部分,但无论如何谢谢!
    猜你喜欢
    • 2016-08-09
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2011-01-25
    相关资源
    最近更新 更多