TechTarget安全 > 百科词汇

Rijndael:Rijndael

Rijndael(读作rain-dahl)是由美国国家标准与技术协会(NIST)所选的高级加密标准(AES)的候选算法。它是从最后的5个候选方案中选出的,而这5个候选方案又是从刚开始的15个算法中选出的。今后的几年内,在许多密码术的应用中Rijndael将逐步取代数据加密标准(DES)以及后来的Triple DES。这个算法是由两个比利时密码学家Vincent Rijmen和Joan Daemen设计的。
 
  Rijndael算法是新一代的对称区块密码,它支持128,192,还有256比特的金钥大小,数据以128比特的区块来处理,但不同于AES设计标准的是,区块大小能反映金钥的大小。根据不同的金钥/区块大小,Rijndael使用不同的回合数,如下所示:
 
  如果金钥/区块大小为128比特,则回合数为9。
 
  如果金钥/区块大小为192比特,则回合数为11。
 
  如果金钥/区块大小为256比特,则回合数为13。
 
  Rijndael是一个取代线性变换密码,它不需要Feistel网络。Rijndael使用了三个离散可倒转统一变换(层),它们是:线性混合变换(Linear Mix Transform),非线性变换(Non-linear Transform),以及金钥加法变换(Key Addition Transform)。在第一个回合前就执行了一个简单的金钥加法层,这样就增加了安全性。这之后就是Nr-1个回合以及一个终止回合(final round)。这变换形成了一个开始后但又是整个过程结束前的状态(State)。
 
  这个State可以认为是一个矩阵,行数为4,列数为区块长度(block length)除以比特长度(比如,除以32)。密码金钥同样也是一个行数为4的矩阵,不同的是列数为金钥长度除以32。而区块可以看作是4字节线性矩阵的向量。
 
  实际的变换是这样的:位元组取代转换是非线性的取代转换,每个State字节都将独立地执行位元组取代转换,其中S-box(取代表)由两个变换构成,并且它们是可逆的。移列变换使State的每一列以不同的位移作偏移。偏移的位移取决于这个State的区块长度。换行变换把State列看作一个存在GF(28)中的多项式,并且对一个固定的多项式作乘法,如果发生溢位,则再模x4+1。最后,对State用回合金钥变换作异或。金钥排程(key schedule)通过金钥扩充(key expansion)和回合的选择来帮助加密金钥(Cipher Key)决定回合金钥(Round Key)。
 
  总的来说,Rijndael的结构体现了一种高度的结构化的设计,这使得在克服未来任何袭击对算法作出修改时将比过去的算法设计容易得多。
 
  Rijndael真的是最好的选择吗?
 
  我们的密码学专家Borys Pawliw说道:“AES的选择总是在找寻一种折衷方案,需要平衡各种因素,例如整体的安全、性能、还有效率等。这样一来,想要一种算法能收到各方面的好评是不可能的。选择Rijndael已经收到了一些人的批评,因为它似乎没有其他一些选择那么安全。
 
  这种批评理论上是有根据的,但这并不意味着使用这种算法保护的数据将会易受攻击到不可接受的程度。虽然从学术观点来看,Rijndael可能不是最安全的算法,但是,其支持者提到,在现实世界的各种应用中它已经足够安全了,并且,只需简单地增加回合数就可以增强其安全性。只有在非常有限的环境中对这种算法的袭击才能成功,并且很有趣的是,从数学的观点来看,这种成功在现实世界中是不能获得什么结果的。”

最近更新时间:2008-06-17 作者:Borys PawliwEN

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐