AES-Rijndael算法

Rijndael(发音为rain-dahl)是美国国家标准与技术研究院(NIST)选择的算法,作为高级加密标准(AES)的候选者。它是从五个入围者的名单中选出的,这些入围者本身是从超过15份提交的原始列表中选出的。Rijndael将在未来几年内在许多加密应用程序中开始取代数据加密标准(DES) - 以及后来的Triple DES 。该算法由两名比利时密码学家Vincent Rijmen和Joan Daemen设计,他们的姓氏以密码的名字反映出来。Rijndael起源于Square,这是两位密码学家之间的早期合作。

AES-Rijndael算法

Rijndael算法是新一代对称分组密码,支持128,192和256位的密钥大小,数据以128位块处理 - 但是,超过AES设计标准,块大小可以反映密钥的大小。Rijndael使用可变数量的轮次,具体取决于密钥/块大小,如下所示:

如果密钥/块大小为128位,则为9轮

如果密钥/块大小为192位,则为11轮

如果密钥/块大小为256位,则为13轮

Rijndael是替换线性变换密码,不需要Feistel网络。它使用三重离散的可逆均匀变换(层)。具体来说,这些是:线性混合变换; 非线性变换和密钥加法变换。即使在第一轮之前,也会执行简单的密钥添加层,这增加了安全性。此后,有Nr-1轮,然后是最后一轮。转换在开始时但在整个过程完成之前形成一个状态。

状态可以被认为是一个数组,由4行构成,列号是块长度除以比特长度(例如,除以32)。密钥类似地是具有4行的数组,但是密钥长度除以32以给出列数。这些块可以解释为4字节向量的一维数组。

确切的转换发生如下:字节子转换是非线性的,并且独立地对每个状态字节进行操作 - 可逆S-box(替换表)由2个转换组成。shiftrow变换看到状态转移到可变偏移。移位偏移值取决于State的块长度。混合列变换看到状态列采用伽罗瓦域值(28)上的多项式特征,乘以x4 + 1(模)与固定多项式。最后,roundkey变换与状态异或。密钥安排有助于密码密钥通过密钥扩展和轮选择来确定轮密钥。

总的来说,Rijndael的结构显示了高度的模块化设计,应该对未来开发的任何攻击进行修改,这比过去的算法设计要简单得多。

Rijndael是最好的选择吗?

我们的密码学专家Borys Pawliw评论道:“AES选择始终是一个妥协,平衡各种因素,如整体安全性,性能和效率。因此,任何一种算法的选择都不太可能获得一致好评Rijndael的选择受到了一些人的批评,因为该算法似乎并不像其他一些选择那样安全。

AES-Rijndael算法

这种批评在理论上是有效的,但并不意味着使用该算法保护的数据将不可接受地受到攻击。尽管从学术角度来看Rijndael可能不是最安全的算法,但是维护者声称它对现实世界中的所有应用程序来说足够安全,并且可以通过简单地添加更多轮次来增强。对算法的攻击只在极其有限的环境中取得了成功,虽然从数学角度来看很有趣,但在现实世界中似乎没什么影响。“


分享到:


相關文章: