AES算法

    xiaoxiao2021-12-14  20

    AES加密过程涉及四种操作:字节替代,行移位,列混淆,轮密钥加

    【GF(2^8)有限域上的多项式运算举例:

    1.加法——异或

    ( x^2+1 )+(x^2+x+1)=x

    101  xor  111=010

    2.乘法——左移位&异或

    (x+1).(x^2+1)=x.(x^2+1)+1.(x^2+1)=x^3+x+x^2+1=x^3+x^2+x+1

    011.101=(101)<<1xor(101)<<0=1010xor101=1111

    3.模乘——左移位&异或

    技巧:x^n mod  p(x)=[p(x)-x^n]

    (x^3+x^2+x+1)mod(x^3+x+1)=1.(x^3+x+1)+x^2=x^2

    1111  mod  1011=1111  xor 1011=0100】

    1 字节代替

      字节代替的主要功能是通过S盒完成一个字节到另外一个字节的映射。

    2 行移位

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

    2.1 正向行移位

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

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

    2.2 逆向行移位

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

    3 列混淆

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

    3.1 正向列混淆

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

      根据矩阵的乘法可知,在列混淆的过程中,每个字节对应的值只与该列的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加法(相当于是异或运算)。

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

        

      

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

    3.2 逆向列混淆

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

     

      由于:

     

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

    4 轮密码加

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

    5 密钥扩展

      密钥扩展的原理图如下:

     

      密钥扩展过程说明:

        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}

    6、分组密码加密中的四种模式:

    1、 ECB模式

    优点:

    1.简单;

    2.有利于并行计算;

    3.误差不会被传送;

    缺点:

    1.不能隐藏明文的模式;

    2.可能对明文进行主动攻击;

     

    3.2 CBC模式:

    优点:

    1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。

    缺点:

    1.不利于并行计算;

    2.误差传递;

    3.需要初始化向量IV

     

    3.3 CFB模式:

     优点:

    1.隐藏了明文模式;

    2.分组密码转化为流模式;

    3.可以及时加密传送小于分组的数据;

    缺点:

    1.不利于并行计算;

    2.误差传送:一个明文单元损坏影响多个单元;

    3.唯一的IV;

     

    3.4 OFB模式:

     优点:

    1.隐藏了明文模式;

    2.分组密码转化为流模式;

    3.可以及时加密传送小于分组的数据;

    缺点:

    1.不利于并行计算;

    2.对明文的主动攻击是可能的;

    3.误差传送:一个明文单元损坏影响多个单元;

    转载请注明原文地址: https://ju.6miu.com/read-971412.html

    最新回复(0)