广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

AES对称性数据加密优化算法基本原理详细说明

日期:2020-11-11 浏览:
AES对称性数据加密优化算法基本原理详细说明

来源于: 百优資源网 创作者:管理方法员

关键提醒:AES(The Advanced Encryption Standard)是英国我国规范与技术性科学研究常用于数据加密电子器件数据信息的标准。它被预估能变成大家认可的数据加密包含金融业、电信网和政府部门数据信息内容的方式。文中展现了AES的概貌并分析了它应用的优化算法。包含一个详细的Delphi完成和数据加密数据信息的举例说明。在学完文中后你将可用AES数据加密、检测 根据AES的手机软件能够在你的系统软件中应用AES数据加密。

AES对称性数据加密优化算法基本原理详细说明


叙述:AES(The Advanced Encryption Standard)是英国我国规范与技术性科学研究常用于数据加密电子器件数据信息的标准。它被预估能变成大家认可的数据加密包含金融业、电信网和政府部门数据信息内容的方式。文中展现了AES的概貌并分析了它应用的优化算法。包含一个详细的Delphi完成和数据加密数据信息的举例说明。在学完文中后你将可用AES数据加密、检测 根据AES的手机软件能够在你的系统软件中应用AES数据加密。
一、AES定义
  英国我国规范与技术性科学研究所(NIST)在二零零二年五月26日创建了新的高級数据信息数据加密规范(AES)标准。文中中我将出示一个用C#撰写的的能运作的 AES 完成,并详尽表述究竟什么叫 AES 及其编号是怎样工作中的。我将向您展现怎样用 AES 数据加密数据信息并拓展文中得出的编码来开发设计一个商业服务级品质的 AES 类。我 还将表述如何把 AES 融合到你的手机软件系统软件中来和为何要那么做,及其怎样检测根据 AES 的手机软件。
  留意文中出示的编码和根据文中的一切其他的完成都会联邦政府数据加密控制模块出入口操纵的可用范畴以内(

  AES 优化算法是根据换置和替代的。换置是数据信息的再次排序,而替代是用一个模块数据信息更换另外一个。AES 应用了几类不一样的技术性来完成换置和更换。以便表明这种技术性,要我们用 Figure 1 所显示的数据信息探讨一个实际的 AES 数据加密事例。下边就是你得加密的12八位值及其他们相匹配的数据库索引数字能量数组:
00 11 22 33 44 55 66 77 88 99 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
 

手机软件设计方案

Figure 2 S-盒( Sbox )

  当 AES 的结构涵数(constructor)被启用时,用以数据加密方式的2个表被原始化。第一个表是替代盒称之为S-盒。它是一个16×16的引流矩阵。S-盒的前五行和前五列如 Figure 2 所显示。在台前幕后,数据加密例程获得该密匙数字能量数组并且用它来转化成一个名叫w[]的密匙生产调度表,Figure 3 所显示。

手机软件设计方案

Figure 3 密匙生产调度表(Key Sched)

w[] 最开始的 Nk (6) 行被做为種子,用初始密匙值(0x00 到0x17)。剩下行从種子密匙来造成。自变量 Nk 意味着以 32 位字为企业的種子密匙长短。稍后我剖析 AES 完成时你将清晰地见到 w[] 是如何造成的。 重要是这儿如今有很多密匙应用而不仅仅一个。这种新的密匙被称作轮密匙(round keys)以将他们与初始種子密匙差别起来。

手机软件设计方案

Figure 4 State (态)数字能量数组
AES 数据加密例程刚开始是复制 16 字节数的键入数字能量数组到一个名叫  State (态)的 4×4 字节数引流矩阵中。(参照 Figure 4)。AES 数据加密优化算法 取名字为 Cipher,它实际操作 State[],其全过程叙述的伪编码参照 Figure 5 。
在标准中,数据加密优化算法完成的一个准备的解决流程被称作 AddRoundKey(轮密匙加)。AddRoundKey 用密匙生产调度表格中的前四行对 State 引流矩阵推行一个字节数一个字节数的异或(XOR)实际操作,并且用轮密匙表 w[c,r] 异或 键入 State[r,c]。
举个案子,假如 State 引流矩阵的第一行储存的字节数是{ 00, 44, 88, cc },第一列密匙生产调度表是{ 00, 04, 08, 0c },那麼新的 State[0,2] 值是用 w[2,0]( 0x08 或 0x80 )异或 State[0,2](0x88)的結果:
1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 XOR 1 0 0 0 0 0 0 0
AES 优化算法的主循环系统对 State 引流矩阵实行四个不一样的实际操作,在标准中被称作 SubBytes(字节数更换)、ShiftRows(行位移转换)、MixColumns(列混和转换) 和 AddRoundKey。除开每一次循环系统 AddRoundKey 都被启用并应用密匙生产调度表的下边四行外,AddRoundKey 与准备解决流程中的 AddRoundKey 同样。SubBytes 例程是一个替代实际操作,它将 State 引流矩阵中的每一个字节数更换成一个由 Sbox 决策的新字节数。例如,假如 State[0,1]的值是 0x40 假如你要寻找它的替代者,你取 State[0,1] 的值 (0x40) 并让 x 相当于左侧的数据(4)并让 y 相当于右侧的数据(0)。随后你用 x 和 y 做为数据库索引 进入 Sbox 表格中找寻替代值,如 Figure 2 所显示。
ShiftRows 是一个换置实际操作,它将 State 引流矩阵中的字节数向左转动。Figure 6 示范性了 ShiftRows 怎样实际操作 State[]。State 的第0行被向左转动0个部位,State 的第一行被向左转动一个部位,State 的第二行被向左转动两个部位,而 State 的第三行被向左转动3个 部位。

手机软件设计方案

Figure 6 对 State 开展 ShiftRows 实际操作

  MixColumns 是一个替代实际操作,它是了解 AES 优化算法时最具方法(或是说成最必须动脑筋筋的一部分)的一部分。它用 State 字节数列的值开展数学课域加和域乘的結果替代每一个字节数。我将在下一节中 详尽表述专业的域加和域乘关键点。
假定 State[0,1] 的值是0x09,而且列1上的其他值各自为 0x60,0xe1 和 0x04,那麼State[0,1]的新值测算以下:
State[0,1] = (State[0,1] * 0x01) + (State[1,1] * 0x02) +(State[2,1] * 0x03) +(State[3,1] * 0x01) = (0x09 * 0x01) + (0x60 * 0x02) + (0xe1 * 0x03) +(0x04 * 0x01) = 0x57
这里加减法和乘法是专业的数学课域实际操作,而并不是平时整数金额的加减法和乘法。
SubBytes、ShiftRows、MixColumns 和 AddRoundKey 四个实际操作在一个实行 Nr 次的循环系统里被启用,Nr 为给定密匙尺寸的轮数减 1。数据加密优化算法应用的轮数要不是10,12,要不是14,这依靠于種子密匙长短是12八位、192 位還是 256 位。在这里个案子中,由于 Nr 相当于12, 则这四个实际操作被启用11次。该迭代更新进行后,在复制 State 引流矩阵到輸出主要参数前,数据加密优化算法启用 SubBytes、ShiftRows 和 AddRoundKey 后完毕。
大概来说,AES 数据加密优化算法的关键有四个实际操作。AddRoundKey 应用从種子密匙值中转化成的轮密匙替代 4 组字节数。SubBytes 更换用一个替代表 更换单独字节数。ShiftRows 根据转动 4字节数行 的 4 组字节数开展编码序列换置。MixColumns 用域加和域乘的组成来更换字节数。

二、比较有限域GF(28)的加减法和乘法

如同你所见到的,AES 数据加密优化算法应用非常简易一目了然的技术性来替代和换置,除 MixColumns 例程之外。MixColumns 应用独特的加减法和乘法。AES 常用的加减法和乘法是根据数学课(译者注:晚世解析几何)的域论。特别是在是 AES 根据比较有限域GF(28)。
GF(28)由一组从 0x00 到 0xff 的256个值构成,再加加减法和乘法,因而是(28)。GF意味着伽罗瓦域,以创造发明这一基础理论的数学课家的姓名取名。GF(28) 的一个特点是一个加减法或乘法的实际操作的結果务必是在{0x00 ... 0xff}这组数中。尽管域论是非常难懂的,但GF(28)加减法的最后結果却非常简单。GF(28) 加减法便是异或(XOR)实际操作。
但是,GF(28)的乘法有点儿繁难。如同你稍后将在 C# 完成中常见到的,AES的数据加密调解密例程必须了解如何仅用七个变量定义 0x01、0x02、0x03、0x09、0x0b、0x0d 和 0x0e 来相乘。因此我不会全方位详细介绍GF(28)的乘法,而仅仅对于这七种独特状况开展表明。
在GF(28)选用0x01的乘法是独特的;它非常于一般算术选用1做乘法而且結果也一样—一切值乘0x01相当于其本身。
如今要我们看一下用0x02做乘法。和加减法的状况同样,基础理论是难懂的,但最后結果十分简易。要是被乘的值低于0x80,这时候乘法的結果便是该值左移1比特位。假如被乘的值超过或相当于0x80,这时候乘法的結果便是左移1比特位再用值0x1b异或。它避免了“域外溢”并维持乘法的乘积在范畴之内。
一旦你一直在GF(28)选用0x02创建了加减法和乘法,你也就能够用一切变量定义去界定乘法。用0x03做乘法时,你可以以将 0x03 溶解为2的幂之和。以便用 0x03 乘以随意字节数b, 由于 0x03 = 0x02 + 0x01,因而:
b * 0x03 = b * (0x02 + 0x01) = (b * 0x02) + (b * 0x01)
它是能够可行的,由于你了解怎样用 0x02 和 0x01 相乘和相加,同哩,用0x0d去乘以随意字节数b能够那样做:
b * 0x0d = b * (0x08 + 0x04 + 0x01) = (b * 0x08) + (b * 0x04) + (b * 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02 * 0x02) + (b * 0x01)
在加解密优化算法中,AES MixColumns 例程的其他乘法遵照大致同样的方式,以下所显示:
b * 0x09 = b * (0x08 + 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x01) b * 0x0b = b * (0x08 + 0x02 + 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02) + (b * 0x01) b * 0x0e = b * (0x08 + 0x04 + 0x02) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02 * 0x02) + (b * 0x02)
总而言之,在GF(28)中,加减法是异或实际操作。其乘法将溶解成加减法和用0x02做的乘法,而用0x02做的乘法是一个有标准的左移1比特位。AES标准中包含很多 相关GF(28)实际操作的额外信息内容。

 三、密匙拓展

AES数据加密调解密优化算法应用了一个由種子密匙字节数数字能量数组转化成的密匙生产调度表。AES标准中称作密匙拓展例程(KeyExpansion)。从实质上讲,从一个初始密匙中转化成多种密匙以替代应用单独密匙大大的提升了比特位的外扩散。尽管并不是没法抵挡的艰难,但了解 KeyExpansion 还是 AES 优化算法中的一个难题。KeyExpansion 例程高級伪编码以下所显示:
KeyExpansion(byte[] key, byte[][4] w) { copy the seed key into the first rows of w for each remaining row of w { use two of the previous rows to create a new row } }
“用前边二行来造成一个新行”(“use two of the previous rows to create a new row”)的例程采用了2个子 例程,RotWord 和 SubWord 及其一个名叫“Rcon”的参量表(做为“轮参量”)。要我们先来逐一看一下这三物品,随后再返回全部 KeyExpansion 的探讨中来。
RotWord 例程非常简单。它接纳一个4个字节数的数字能量数组并将他们向左转动一个部位。由于轮生产调度表 w[] 有四列,RotWord 将 w[]的1行左旋。留意 KeyExpansion 应用的这一 RotWord 涵数与数据加密优化算法应用的  ShiftRows (行位移转换)例程十分类似,仅仅它 解决的是单行密匙生产调度 w[],而并不是全部数据加密情况表 State[]。
SubWord 例程应用更换表 Sbox 对一给定的一行密匙生产调度表 w[] 开展逐句节更换。KeyExpansion 实际操作中的更换具体上如同在数据加密优化算法中的 更换一样。被替代的键入字节数被分为 (x,y) 对,它被作为进到更换表 Sbox 的数据库索引。举例说明来讲,0x27的替代結果是 x=2 和 y=7,而且 Sbox[2,7] 。
KeyExpansion 例程应用一个被称作轮参量表的数字能量数组 Rcon[]。这种参量全是4个字节数,每个与密匙生产调度表的某一行相符合。AES 的 KeyExpansion 例程必须1一个轮参量。你可以以在 Figure 7 看出到这种参量明细。
每一个轮参量的最左侧的字节数是GF(28)域中2的幂次方。它的另外一个表明方式是其每一个值是前一个值乘上0x02,如同前一一部分探讨 GF(28) 乘法 时需叙述的那般。留意 0x80 × 0x02 = 0x1b 是 0x80 左移一个比特位后随后与 0x1b 开展异或,如前上述。
如今要我们更进一步看一下 KeyExpansion 内情中的循环系统。这儿常用的伪码比之前更加详尽,这一循环系统是:
for (row = Nk; row (4 * Nr+1); ++row) { temp = w[row-1] if (row % Nk == 0) temp = SubWord(RotWord(temp)) xor Rcon[row/Nk] else if (Nk == 8 and row % Nk == 4) temp = SubWord(temp) w[row] = w[row-Nk] xor temp }
  先不必去看看if子句,你将见到密匙生产调度表 w[] 的每一行全是前边一行与行 Nk 异或的結果(4, 6, 或 8 在于密匙的长短)。if标准的第一一部分用 SubWord、RotWord 及其与轮参量的异或改动密匙生产调度表的每一个第四、第六或第八行,在于是不是密匙的长短是128、192或256位。这一标准的第二一部分将改动行 12、20 和 28 这些——针对256位密匙来讲——每 一个第八行都将加上密匙生产调度附加的可变性性。
要我们用文中开始所举的事例来调查 KeyExpansion 是怎样刚开始的。種子密匙是192-bit / 6-word 值:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17
密匙生产调度字节数表 w[] 的维数是 4 列而且 Nb × (Nr + 1) 相当于 4 × (12 + 1),或 52 行。KeyExpansion 将種子密匙的值复制到密匙生产调度字节数表 w[] 的第一行。由于我的種子密匙是 192 位(24字节数),而且 w[] 表一直 4 列,在这里种状况下KeyExapansion 将種子密匙复制到 w[] 的前边 6 行。如今要我们看一下 KeyExapansion 例程是怎样添充密匙生产调度表其他一部分的。在我的事例里,第一个被测算的行是第 6 行 ,由于第0-5行已被種子密匙的值填入了:
temp = w[row-1] = 14 15 16 17
标准 (row % Nk == 0)为真,因而最先 RotWord 子程序被运用:
temp = 15 16 17 14
这时候 SubWord 被运用:
temp = 59 47 f0 fa
用 Rcon[row / Nk] = Rcon[6 / 6] = 01 00 00 00 开展异或:
temp = 58 47 f0 fa
这时候用 w[row-Nk] = w[6-6] = 00 01 02 03 异或,造成了下边結果:
w[6] = 58 46 f2 f9
密匙生产调度表 w[] 中其他全部行来反复这一全过程自身。
总得来说,AES 数据加密调解密的一个关键一部分便是从最开始的種子密匙中转化成多种轮密匙。这一 KeyExapansion 优化算法转化成一个密匙生产调度并 以某类方法开展取代和换置,在这里种方法中,数据加密调解密优化算法极为类似。

四、AES团体全部ECB、CBC、CFB、OFB、CTR五种方式差别
1、最先应当搞清楚AES是根据数据信息块的数据加密方法,换句话说,每一次解决的数据信息是一块(16字节数),当数据信息并不是16字节数的倍率时添充,这便是说白了的排序登陆密码(差别于根据比特位的流登陆密码),16字节数是排序长短。
2、排序数据加密的几类方法
ECB:是一种基本的数据加密方法,保密被切分成份小组长度相同的块(不够补足),随后独立一个个数据加密,一个个輸出构成保密。
CBC:是一种循环系统方式,前一个排序的保密和当今排序的密文异或实际操作后加上密,那样做的目地是提高破译难度系数。
CFB/OFB具体上是一种意见反馈方式,目地也是提高破译的难度系数。
ECB和CBC的数据加密結果不是一样的,二者的方式不一样,并且CBC会在第一个登陆密码块计算时添加一个原始化空间向量。
排序登陆密码有五种工作中体系:
1. 电码本方式(Electronic Codebook Book (ECB));
2.登陆密码排序连接方式(Cipher Block Chaining (CBC));
3.测算器方式(Counter (CTR));
4.登陆密码意见反馈方式(Cipher FeedBack (CFB));
5.輸出意见反馈方式(Output FeedBack (OFB))。
下列逐一详细介绍一下:
1.电码本方式( Electronic Codebook Book (ECB)
  这类方式是将全部密文分为多个段同样的小段,随后对每一小段开展数据加密。
2.登陆密码排序连接方式(Cipher Block Chaining (CBC))
  这类方式是先将密文分割成多个小段,随后每一小段与原始块或是上一段的保密段开展异或计算后,再与密匙开展数据加密。
3.测算器方式(Counter (CTR))
测算器方式不普遍,在CTR方式中, 有一个自增的算子,这一算子用密匙数据加密以后的輸出和密文异或的結果获得保密,非常于一次一密。这类数据加密方法简易迅速,安全性靠谱,并且能够并行处理数据加密,可是 在测算器不可以保持较长的状况下,密匙只有应用一次 。CTR的提示图以下所显示:
4.登陆密码意见反馈方式(Cipher FeedBack (CFB))
  这类方式较繁杂。
5.輸出意见反馈方式(Output FeedBack (OFB))
  这类方式较繁杂。
对称性数据加密和排序数据加密中的四种方式(ECB、CBC、CFB、OFB)
(一)AES对称性数据加密
 

手机软件设计方案

AES数据加密

手机软件设计方案


  排序

 
(二). 排序登陆密码的添充
 排序登陆密码的添充

手机软件设计方案


e.g.:
 

手机软件设计方案

  PKCS#5添充方法
 
 (三). 流登陆密码:
 

手机软件设计方案


(四). 排序登陆密码数据加密中的四种方式:
(1) ECB方式

手机软件设计方案

优势:
1.简易;
2.有益于并行处理测算;
3.偏差不容易被传输;
缺陷:
1.不可以掩藏密文的方式;
2.将会对密文开展积极进攻;
 

手机软件设计方案

(2) CBC方式:
 

手机软件设计方案

优势:
1.不可易积极进攻,安全性性好过ECB,合适传送长短长的报文格式,是SSL、IPSec的规范。
缺陷:
1.不好于并行处理测算;
2.偏差传送;
3.必须原始化空间向量IV
 
(3) CFB方式:
 

手机软件设计方案

 优势:
1.掩藏了密文方式;
2.排序登陆密码转换为流方式;
3.能够立即数据加密传输低于排序的数据信息;
缺陷:
1.不好于并行处理测算;
2.偏差传输:一个密文模块毁坏危害好几个模块;
3.唯一的IV;
 
(4)OFB方式:
 

手机软件设计方案

 优势:
1.掩藏了密文方式;
2.排序登陆密码转换为流方式;
3.能够立即数据加密传输低于排序的数据信息;
缺陷:
1.不好于并行处理测算;
2.对密文的积极进攻是将会的;
3.偏差传输:一个密文模块毁坏危害好几个模块;

非常提醒: 本网站能够给你开展优化算法编程设计, 有详细的AES优化算法编码,  在其中的Delphi撰写的AES优化算法编码是在网上找不着的,假如你必须,能够联络本网站服务QQ. 

【强烈推荐阅读文章】
手机软件设计方案和企业网站建设对策剖析
贵阳市企业网站建设的网站内部构造提升

用 C# 撰写 AES 类结构涵数 
 



网站知识

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系