信息安全工程师教程学习笔记之AES算法

信息安全工程师 责任编辑:长颈鹿 2016-07-07

添加老师微信

备考咨询

加我微信

摘要:全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格。官方教材《信息安全工程师教程》及考试大纲于7月1日出版,希赛小编整理了信息安全工程师教程学习笔记之AES算法,供大家参考学习。


    >>>>>信息安全工程师在线辅导 

   

      >>>>>信息安全工程师培训视频

      全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格。教材《信息安全工程师教程》及考试大纲于7月1日出版,希赛小编整理了信息安全工程师教程学习笔记之AES算法,供大家参考学习。

      0 AES简介

      美国标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。

      根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加。

      1算法流程

      AES加解密的流程图如下:

1.png

      AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

      接下来分别对上述5种操作进行介绍。

      1.1字节代替

      字节代替的主要功能是通过S盒完成一个字节到另外一个字节的映射。S盒的详细构造方法可以参考文献[1]。

      下图(a)为S盒,图(b)为S-1(S盒的逆)。

      S和S-1分别为16x16的矩阵。假设输入字节的值为a=a7a6a5a4a3a2a1a0,则输出值为S[a7a6a5a4][a3a2a1a0],S-1的变换也同理。

      例如:字节00替换后的值为(S[0][0]=)63,再通过S-1即可得到替换前的值,(S-1[6][3]=)00。

      1.2行移位

      行移位的功能是实现一个4x4矩阵内部字节之间的置换。

      1.2.1正向行移位

      正向行移位的原理图如下:

   

4.png

      实际移位的操作即是:第一行保存不变,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。假设矩阵的名字为state,用公式表示如下:state’[i][j] = state[i][(j+i)%4];其中i、j属于[0,3]

      1.2.2逆向行移位

      逆向行移位即是相反的操作,用公式表示如下:state’[i][j] = state[i][(4+j-i)%4];其中i、j属于[0,3]

      1.3列混淆

      列混淆:利用GF(28)域上算术特性的一个代替。

      1.3.1正向列混淆

      正向列混淆的原理图如下:

     

5.png

      根据矩阵的乘法可知,在列混淆的过程中,每个字节对应的值只与该列的4个值有关系。此处的乘法和加法都是定义在GF(28)上的,需要注意如下几点:

      1)将某个字节所对应的值乘以2,其结果就是将该值的二进制位左移一位,如果该值的较高位为1(表示该数值不小于128),则还需要将移位后的结果异或00011011;[1]

      2)乘法对加法满足分配率,例如:07·S0,0=(01⊕02⊕04)·S0,0=S0,0⊕(02·S0,0)(04·S0,0)

      3)此处的矩阵乘法与一般意义上矩阵的乘法有所不同,各个值在相加时使用的是模2加法(相当于是异或运算)。

      假设某一列的值如下图,运算过程如下:

     

      同理可以求出另外几个值。

      1.3.2逆向列混淆

      逆向列混淆的原理图如下:

     

8.png

      由于:

     

9.png

      说明两个矩阵互逆,经过一次逆向列混淆后即可恢复原文。

      1.4轮密码加

      任何数和自身的异或结果为0。加密过程中,每轮的输入与轮密钥异或一次;因此,解密时再异或上该轮的密钥即可恢复输入。

      1.5密钥扩展

      密钥扩展的原理图如下:

     

10.png

      密钥扩展过程说明:

      1)将初始密钥以列为主,转化为4个32 bits的字,分别记为w[0…3];

      2)按照如下方式,依次求解w[j],其中j是整数并且属于[4,43];

      3)若j%4=0,则w[j]=w[j-4]⊕g(w[j-1]),否则w[j]=w[j-4]⊕w[j-1];

      函数g的流程说明:

      4)将w循环左移一个字节;

      5)分别对每个字节按S盒进行映射;

      6)与32 bits的常量(RC[j/4],0,0,0)进行异或,RC是一个一维数组,其值如下。(RC的值只需要有10个,而此处用了11个,实际上RC[0]在运算中没有用到,增加RC[0]是为了便于程序中用数组表示。由于j的最小取值是4,j/4的最小取值则是1,因此不会产生错误。)

      RC={00,01,02,04,08,10,20,40,80,1B,36}


    返回总目录:信息安全工程师教程学习笔记之密码学汇总(一)

    返回总目录:信息安全工程师教程学习笔记之密码学汇总(二)


    希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!