存在处理器(例如基于ARM v8 / v9的架构),
不能基于AES-256硬件运行,
却配备了AES-128加密硬件单元。

是否可以通过某种方式利用AES-128加密硬件单元来加快AES-256的计算?

评论

如果您具有AES-NI(可访问回合功能的硬件实现和关键时间表)样式访问,则为是,否则为否。

@SEJPM:我已经看到了其他使用预扩展密钥时间表的AES硬件实现,所以答案是“也许”

这取决于。哪个处理器? AES-128加密硬件单元如何在该处理器上工作?

@ D.W。感谢您的询问,就我而言,它是NXP i.MX ARM9处理器。但是,我更好奇的是,如果总的来说这是可能的,甚至可能已经做到了。

请注意,AES-128的安全性并不比AES-256差很多。

#1 楼

AES-128和AES-256之间有两个重要区别:


AES-128有10发,AES-256有14发
密钥扩展过程(即,它们如何生成子密钥)是不同的

如果您的AES-128加密硬件仅采用一个纯文本块和一个128位密钥,并生成一个密文块,那么,不,您无能为力。在这种情况下,硬件知道AES-128子项扩展过程,因此您无须执行任何操作来要求它执行AES-256扩展过程。

但是,如果硬件采用明文块和$ 11 \ times 128 $扩展密钥,是的,您可以做一些事情。

显而易见的方法是(在加密方向上)在软件中执行前四轮(停止)在第四回合结束前的addround转换之前);

在密钥扩展过程中,您将在软件中运行AES-256密钥扩展过程;您将为软件例程保留前4个生成的子项;您需要将最后11个子键交给您的扩展“ AES-128”键。

这个想法不会像在硬件中执行AES-256那样快;

此外,您还希望硬件处理最后一轮(在加密方向上);最后一轮的处理方式略有不同-尽管您可以对其进行调整,但没有理由。

#2 楼

这取决于您提到的“ AES-128加密硬件单元”的实际定义。

我已经遇到了允许独立计算AES操作的处理器,例如$ \ texttt {SubBytes} $和$ \ texttt {MixColumns} $ –相同,无论所涉及的密钥大小(128或256位)。在那种情况下:是的,它可以加快AES-128和AES-256的计算速度。

但是,如果硬件单元从头到尾计算整个AES-128,我不会了解如何将其用于256位密钥版本。