密码技术是信息安全技术的核心,它主要由密码编码技术和密码分析技术两个分支组成。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展。

外文名

Advanced Encryption Standard

别名

Rijndael加密法

功能

替代原先的DES

设计

Joan Daemen

概述

密码技术是信息安全技术的核心,它主要由密码编码技术和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机密信息或进行诈骗破坏活动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展。目前人们将密码理论与技术分成两大类,一类是基于数学的密码理论与技术,包括公钥密码、分组密码、序列密码、认证码、数字签名、Hash 函数、身份识别、密钥管理、PKI 技术、VPN 技术等;另一类是非数学的密码理论与技术,包括信息隐藏、量子密码、基于生物特征的识别理论与技术等。

分组密码属于单钥密码算法,具有简捷快速的特点,并且容易标准化,是目前软硬件加密标准的主流。这种密码算法的缺点是安全性比较难以证明,且存在一些比较成熟的攻击方法,如差分密码分析和线性密码分析。对于分组密码,密码学家提出了许多设计方案,如著名的DES算法、AES算法等

随着测试技术的发展,测试人员掌握一定的加密算法是势在必行。本文就以高级加密标准算法(AES)为例来抛砖引玉,希望对测试工程师在测试过程中提供一定的帮助

简介

你也许目前还没有注意到,网络硬件和软件厂商最近已开始广泛应用高级加密标准(AES) 。这使那些网络管理员陷入了有趣的困境,特别是那些对虚拟专用网应用或软件感兴趣的网络管理员。在本讲座中,我们将讨论你应该考虑的高级加密标准的一些问题,如果你正在考虑使用某些基于这个标准的产品的话。

加密算法让人们担心的两个主要问题是安全和性能。在第一个案例中,我们有一个70年代的数据加密标准(DES)加密。在安全领域,一个协议的生命周期这样长一般来说是件好事。不过,在数据加密标准的案例中,由于其瑕疵将多次重复地显示出来,这样长的生命期并不是件好事。

他的后续标准来得太晚了。这些瑕疵是各种类型的攻击利用的基本的安全漏洞,其较短的密码长度意味着蛮力攻击能在非常短的时间内奏效。

高级加密标准算法从非常多方面解决了这些令人担忧的问题。实际上,攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。

虽然高级加密标准也有不足的一面,不过,他仍是个相对新的协议。因此,安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性。

当你考虑性能需求的时候,高级加密标准具有理论上的优势,因为这种算法效率更高,特别是和3DES加密标准相比更是如此。然而,需要指出的是,在这种协议应用的早期阶段,在硬件中对这种加密算法的支持还没有像硬件支持老式的3DES算法那样成熟。因此,你可能会发目前某些平台上,3DES在数据吞吐量方面仍比AES-256速度快。在有些平台上,AES-256的速度快一些。正如你怀疑的那样,AES-128总是比AES-256速度快一些。在对各类厂商的市场营销材料进行了快速调查之后发现,数据吞吐量的差别通常在10%至30%之间。

所以,同以往相同,各个机构采用这个新标准的合适的时间都是不同的。一些机构认为,额外的安全功能值得牺牲一点性能。有些机构需要做好预算才能购买新的支持高级加密标准的硬件产品。要记住,升级将会提高性能。在所有情况下,你在选择一个产品之前都要做好充分的准备。

设计原则

AES是一种迭代分组密码,采用的是代替置换网络(SPN)。将明文分组长度固定为128b,而且仅支持128,196或256b的密钥长度,本章仅对密钥长度为128b的情况进行讨论。

AES加密

图片

AES加密过程又包括一个作为初始轮的初始密钥加法(AddRoundKey),接着进行9次轮变换(Round),最后再使用一个轮变换(FinalRound),如图2.1 AES算法加密实现过程所示。

每一次Round均由SubBytes,ShiftRows,MixColumns和AddRoundKey共4个步骤构成,FinalRound包含除MixColumns这一步外的其他3个步骤。

轮变换及其每一步均作用在中间结果上,将该中间结果称为状态,可以形象地表示为一个4*4 B的矩阵。

密钥扩展方案

图片

AES算法中每轮加密的轮密钥是利用密钥扩展算法(KeyExpansion)对加密密钥扩展得到的。密钥扩展及轮密钥选择的原理是对加密密钥扩展得到轮密钥,轮密钥的总位数等于分组长度乘以轮数加1;在密钥扩展得到的轮密钥中依次选取与分组长度相同数目的密钥用于轮密钥加运算。

图片

原始密钥有128位,排列成一个44矩阵。这个矩阵通过加入40多列进行了扩展,过程如下。记开始的4列为W(0)、W(1)、W(2)、W(3)新的列将递归地生成。假设W(i-1)及其之前的列已经定义了。如果i不是4的倍数,则

其中T(W(i-1))是对W(i-1)的变换。假设W(i-1)中的元素是a、b、c、d循环移位得到b、c、d、a。然后将这些字节用s盒中相应的元素替代,得到4个字节e、f、g、h。最后,计算有限域GF(28)中的常量。

这样,列W(4), …,W(43)就从最开始的4列中生成了。

第i轮的轮密钥有下面4列组成:

W(4i),W(4i + 1), W(4i + 2), W(4i + 3)