网络安全:对称加密(DES/3DES/AES)

对称分组加密

  • 加密密钥与解密密钥相同。
  • 一个对称加密方案包含5部分:明文、加密算法、密钥、密文、解密算法
  • 对称加密算法取决于密钥的保密性,算法是公开的(所有人都可以检测算法的好坏)
  • 模型:加密:C = EK(P)  解密:P = DK(C)

 

feistel密码结构

是很多对称加密算法的结构(如DES)
输入为长度为2w的明文分组及密钥k,进行n轮(n一般取16),普遍的密钥长度、明文长度为128位.

  • 算法步骤:

1、将明文分成两半L与R
2、每轮将上轮的Li-1作为这轮的Ri,将上一轮的Ri-1与密钥ki输入轮函数得到的输入与上轮Li-1异或作为这轮的Ri。
即:Li = Ri-1       

 Ri = Li-1⊕f(Ri-1,Ki)   (i=1,2,3, …,16)
3、解密时逆序使用ki即可。
第二步具体:
(1)①由于R为32位,而k是用64位表示,但将每个8位用作奇偶校验,得到有效位是56位。先通过8*7的矩阵置换密钥,然后分成两半,即k=Pc-1(K)=CD

    pc-1

②28位的C与D根据轮数分别左移1位或2位,具体由下表决定:

③由置换函数Pc-2压缩置换得到48位K

(2)密码轮函数f(Ri,Ki)

Ri为32位,Ki为48位。所以先将Ri经过扩展置换E扩展为48位,然后再经过8个S盒输出32位。

S盒替代

对于输入的6位数如001011,将第一位与第六位组合得01代表s盒01行,中间四位0101=5代表第5列(从0计数),查阅s盒第一行第五列为3,所以输出3=0011 (s盒数最大到15,四位)

(3)将s盒8个4位输出组合在一起形成32位,再将这32位经过p盒4*8置换即得到f(Ri,Ki)输出。

DES:数据加密标准


结构为feistel,输入64位明文,密钥输入的为56位,16轮迭代。

  • DES算法步骤:

(1)置换输入X=P*IP=LR


其中p为64位输入,IP为8*8矩阵,数值从1到64,从左往右从上往下看,表示把aij放在(i-1)*8+j位上(从1开始编号)。
(2)按feistel结构经16轮输出
(3)反置换(2)的输出C=y*IP-1 (反置换是为了解密方便,ip*ip-1=E)

3DES

P= D(K1,E(K2,D(K3,C)))    C=E(K1,D(K1,E(K1,P))=E(K1,P)

注:2DES:p->E-E->c,可以通过j加密p->E得到a,再解密c->E反向得到a',遍历比较a,a'即可,所以只相当于57位密钥的DES。

AES:高级加密标准

分组大小与密钥长度都是128位。首先将128位密钥扩展成含44个字的子密钥数组。每个字4字节

其中每轮:

1) 该结构不是 Feistel结构。典型Feistel结构,数据分组的一半用来更改另一半,然后两部分对换。AES没有使用Feistel结构,而是在每轮替换和移位时都并行处理整个数据分组。

(2)输入的密钥被扩展成为44个字的数组w[i],4个不同的字(128比特)用作每轮的轮密钥。

(3)进行了4个不同的步骤,1个是移位,3个是替换 字节替换:用一个表(S盒)来对分组进行逐一的字节替换 行移位:对行做简单的移位; 列混合:对列的每个字节做替换,是与本列全都字节有关的函数; 轮密钥加:当前分组与一部分扩展密

猜你喜欢

转载自blog.csdn.net/wangqianqianya/article/details/88924689