一、介绍块加密
1.每次加密一块明文,属于对称加密,即分组加密。
可以理解为一种特殊的替代密码,但每次替代的是一大块。‘
明文空间时需要用这种复杂的加密算法来加解密明密文。但是明文可能过长或者过短,所以一般需要两个辅助:padding和分组加密模式。
2.基本策略
- 混淆confusion:将密文与密钥之间的统计关系复杂化
一般使用复杂的非线性变化,常见变化有s盒,乘法。
- 扩散diffusion:简单来说就是一位明文会影响多为密文
常见方法有线性变换,置换和循环移位
3.加密结构:主要使用迭代
一般包括三个部分:密钥置换,轮加密函数,轮解密函数
轮函数:DES的feistel network和AES的SPN(substitution-permutation network)
二、DES算法概述
1.迭代算法
使用56位密码对64位长分组进行加密的密码。作为一种对称加密,des在加密和解密过程中使用的密钥相同。同时它也是一种迭代算法,每个分组都进行了16轮相同的操作,每一轮使用的子密钥都由主密钥推导而来。
2、feistel网络
feistel网络每轮只加密(解密)输入位的一半,即输入位的左半部分。每轮重复一个过程,可表示为
三、内部结构
1.初始置换和逆初始置换
(1)初始置换
原理图
初衷大概是以字节形式排列明文、密文和位,以方便8位数据总线的数据读取。
IP置换表
(2)逆初始IP置换
2、f函数
f函数在DES中扮演重要角色,输出作为XOR掩码,用来加密左半部分输入位
(1)E盒扩充
原理图
4位一组的数比如扩展为6位输出,其中
E盒表
(2)S盒替换
将6位输入位映射为4位
原理
第0、5位组成一个2位二进制数字后转化位十进制作为行,第1-4位组成一个4位的二进制数字转换为十进制后作为列,例如上图可得出第3行第2列,根据这个坐标在对应的s盒内查出对应的十进制数字,转换位4位的二进制数字。
S-盒
S盒在f函数中引入了非线性
(3)f函数中的p置换
四、密码编排
密码编排从原始的56位密钥中得到16个轮密钥,其中每个轮密钥都是48位。但是DES的密钥通常是64位的,但是每个第8位都作为前面7位的奇校验位,这8个奇校验位都不是真的密码位,也没有增加密码的安全性,所以可以说DES的密码是56位的。
初始密钥置换PC-1
得到的56位密钥将分为两个部分
上图中,长度均为28位的左右两部分将周期性的向左移动一位或者两位(循环移位),移动的位数取决于轮数
i=1,2,9,16时,向左移动1位
i!=1,2,9,16时,向左移动两位
**移动位置总数位4*2+1*12=28,所以有,这对解密密钥编排十分有用。
为了得到48位的子密钥,需要在进行一次PC-2的置换
PC-2
PC-2只至换了48位,忽略了其中8位·
五、结语
下次整理DES的解密和替代加密