2 现代密码学分类现代密码学技术存在两类密码体制,分为对称密码体制(也称为私钥密码体制)和非对称密码体制(也称为公钥密码体制)。对称密码体制是较传统的加密体制,主要用于保证数据的机密性,通信双方在加密/解密过程中使用其共享的单一密钥,由于其算法实现简单和加密速度快等优点,目前仍然是主流密码体制之一。对称密码体制分为序列密码和分组密码两类,序列密码以密钥控制密钥发生器,产生一个随机序列,用这个随机序列和明文信息逐位进行异或运算,就得到密文,其加密单元为比特。分组密码体制将数据流分成固定长度的分组,然后再用密钥,按照一定的算法把分组加密成为密文,其数据加密单元为分组。
著名的DES标准是最常用的对称密码算法,由于技术的发展,逐渐暴露出密钥相对过短的弊端(DES有效密钥56位),另外,DES加密算法还存在弱密钥和半弱密钥以及其加密标准的算法还存在互补对称性等缺点,2005建立了新的高级数据加密标准(AES)规范。AES(Advanced Encryption Standards)是NIST旨在取代DES的新一代加密标准。
3 AES算法
3.1 AES加密/解密算法原理AES是一个迭代的、对称密钥分组的密码,可使用128、192和256位密钥,并用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。AES加密/解密框图如图1所示。
3.2 算法实现举例描述AES算法是基于置换和代替。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES使用了几种不同的技术来实现置换和替换。例如以下是要加密的128位值,以及它们对应的索引数组:
00 ll 22 33 44 55 66 77 88 99 aa bb cc dd ee ff
O 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
192位密钥的值是:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ll 12 13 14 15 16 17
0 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 17 18 19 20 2l 22 23
AES的构造函数被调用时,用于加密方法的两个表被初始化。第一个表的代替盒称为S一盒。是一个16x16的矩阵。S一盒的前5行和前5列如表1所示。加密例程获取该密钥数组并生成一个名为w[]的密钥调度表,如表2所示。
w[]最初的Nk(6)行被作为种子,用原始密钥值(0x00~0xl7)。剩余行从种子密钥产生。变量Nk代表32位字为单位的种子密钥长度。新的密钥被称为轮密钥(round keys)。
AES加密例程开始是拷贝16字节的输入数组到一个名为State(态)的4x4字节矩阵中。如表3所示。AES算法的主循环对State矩阵执行4个不同的操作为:SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和AddRoundKey。
SubBytes是一个代替操作,它将State矩阵中的每个字节替换成一个由Sbox决定的新字节。