Android移动终端文件透明加密技术设计与实现(5)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

Android移动终端文件透明加密技术设计与实现(5)

2。3。2 透明加密算法AES

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所研制的一种加密算法。具体来定义的话,AES 是一个迭代的、有对称密钥分组的密码,它的密钥可以有128、192 和 256 位,用 128 位进行加密和解密数据。分组是指对明文数据库中一组比特同时进行加密,而非一个比特。与公共密钥的密码需要明确定义不一样,对称密钥密码使用相同的密钥加密和解密数据。但是通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构[16]。

下面来解释这种本文用到的算法。AES 用192位密钥对一个16位字节数据块进行加密和解密的情形如图2-2所示。

                       图2-2 AES加解密过程

下面是128位值以及它们对应的索引数组:

00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff 0 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 11 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 21 22 23

                          图2-3 S-盒( Sbox )

当 AES 的构造函数被调用时,用于加密的表被初始化。第一个表是取代盒称为S-盒。它是一个16×16的矩阵。S-盒的前五行和前五列如图2-3所示。在幕后,加密例程获该密钥数组并用它来生成一个名为w[]的密钥调度表,如图2-4所示[17]。

                     图2-4 密钥调度表(Key Sched)

w[] 最初的 Nk (6) 行被作为种子,用原始密钥值(0x00 到0x17)。剩余行从种子密钥来产生。关键是这里现在有不止一个密钥在用。新的密钥被称为轮密钥(round keys),用来把它们与原始种子密钥区分出来。

                        图2-5 State (态)数组

AES加密开始是复制输入数组到一个名为State (态)的 4×4 字节矩阵中。如上图2-5所示。加密算法实现的一个预处理步骤被称为 AddRoundKey(轮密钥加)。AddRoundKey 用密钥调度表中的前四行对 State 矩阵实行异或操作,并用轮密钥表 w[c,r] 异或输入 State[r,c]。AES 算法对 State 矩阵执行四种操作,分别被称为SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和 AddRoundKey(轮密钥加)。SubBytes 是一个代替操作,将 State 矩阵中的每个字节替换成由 Sbox 决定的新字节。继而你用 x 和 y 进到 Sbox 表中寻找代替值。ShiftRows 是一个置换操作,它将 State 矩阵中的字节向左循环。 ShiftRows 如何操作 State[]如图2-6所示。State 的第0行被向左旋转0位,同理State 的第1行被向左平移1位,State 的第2行被向左平移2位,而 State 的第3行被向左平移3位[17]。

                    图2-6 ShiftRows 操作 State[]

字节替换、行位移变换、列混合变换和轮密钥加四个操作在一个执行 Nr 次的循环里被调用,为给定密钥的轮数减 。轮数是10,12或者14,对应于种子长度128、192 或者256 位。迭代完成后,在拷贝State 矩阵到输出参数前,加密算法用 SubBytes、ShiftRows 和 AddRoundKey 后完成[17]。文献综述

所以大致说来,AES加密算法的核心有四个操作。总结来说就是AddRoundKey使用从种子密钥值中生成的轮密钥代替 4 组字节;SubBytes 替换用一个代替表替换单个字节;ShiftRows 旋转4 组字节进行序列置换;MixColumns用域加和域乘的组合来代替[10、15]。

AES其实广泛在各种应用中,从很小的智能卡到大型的多处理器主机系统。可以说AES加密算法是在已经开发出的加密算法中的安全性排名最前列。理想来说,假设密钥长度为256 位,应该没有已知的反加密能在一个存在的时间内破解AES(在最快的系统上,少说也要数十年的时间)。 (责任编辑:qin)