密码学复习笔记2【分组密码/S-DES、DES】

时间:2024-03-18 21:48:17

基本概念

数学模型

数学模型图如下:
密码学复习笔记2【分组密码/S-DES、DES】

常见的设计方法

1、Feistel结构

结构图:
密码学复习笔记2【分组密码/S-DES、DES】
在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 为名。

Feistel结构是典型的迭代密码.Feistel结构的解密与加密是完全一样的,除了所使用的子**的顺序正好相反。

对其简单的理解是:

  • 给明文分组(L,R)
  • 对R进行加密
  • 密文=加密后的R+L(即LR的位置交换)

补充一个博客,点这里。有兴趣的可以更加详细的了解一波~

2、SPN结构

结构图:
密码学复习笔记2【分组密码/S-DES、DES】
SPN结构也是一种特殊的迭代密码 。SPN结构和Feistel结构相比,可以得到更快速的扩散,但是SPN密码的加解密通常不相似。
除了ppt上的这段描述,没找到其他的简单一点的描述了,知网上看到了几篇论文,之后有时间再拜读吧,从个人角度来看,看到这个spn结构图,瞬间想到了DES加密,之后复习了再来比较下不同~

S-DES(Simplified DES)

S-DES全称Simplified DES,它是一个供教学而非安全的加密算法,与DES的特性和结构类似,但参数小,便于理解。
S-DES算法的输入是一个8位的明文或者密文组和一个10位的**,输出是一个8位的密文或者明文组
S-DES算法涉及五个函数:

  • 初始置换IP(initial permutation)
  • 复合函数fk1,它是由**K确定的,具有置换和替代的运算
  • 转换函数SW
  • 复合函数fk2
  • 初始置换IP的逆置换IP-1

ummm,ppt有真题框架概念图,硬是没理解,这里就不放了

1、IP置换

概念图如下:
密码学复习笔记2【分组密码/S-DES、DES】
例题如下:
若IP[] ={2,6,3,1,4,8,5,7};
则IPI[]={4,1,3,5,7,2,8,6}; 注:IPI是IP的逆置换
IP置换的输入是明文或者密文。
若明文X=0111 0110,则IP(X)=1110 1001;

2、扩展

将四位扩展成八位概念图如下:
密码学复习笔记2【分组密码/S-DES、DES】

3、S-Box运算

S盒定义如下:
密码学复习笔记2【分组密码/S-DES、DES】
S盒按下述规则运算:

  • 将第1和第4的输入比特做为2-bit数,指示为S盒的一个行;
  • 将第2和第3的输入比特做为2-bit数,指示为S盒的一个列;
  • 如此确定为S盒矩阵的(i,j)数。

例题如下:
若0100为S0盒的输入
(P0,0, P0,3)=(00)=0,并且(P0,1,P0,2)=(1 0)=2,确定了S0中的第0行2列(0,2)的系数为3,记为(1 1)输出。

注:这里用我的理解来说,第一第四位数字乘积为行数,第二第三行乘积为列数,找到对应的值,写成2进制形式,即为输出结果

4、秘钥的生成

密码学复习笔记2【分组密码/S-DES、DES】

5、S-Des实例

4.1、条件:

密码学复习笔记2【分组密码/S-DES、DES】
计算过程如下:

4.2、计算两个子秘钥K1、K2

运算 结果
key 经过P10置换得 t0=11111 10011
t0高低位循环左移一位,LS-1之后合并得 t1=11111 00111
t1经P8置换后计算得 K1=0101 1111
t1高低位循环左移两位,LS-2之后合并为 t2=11111 11100
t2经P8置换后计算得 K2=1111 1100

4.3、第一轮fk函数

运算 结果
密文经IP置换得 m=1110 1001
对m取高低位 L=1110 R=1001
经扩张/置换运算 E/P(R ) = 1100 0011
与K2进行异或得 0011 1111
0011 进入S盒S0中得到一个二位输出 10
1111 进入S盒S1中得到一个二位输出 11
两者合并得到一个四位输出 1011
上一轮结果经P4置换得到 0111
上一轮结果与L按位异或得到 1001
故第一轮fk函数的结果为 1001 1001

4.4、 转换函数SW

运算 结果
第一轮fk函数的结果经SW得 1001 1001

注:这里指的是高四位和低四位的交换

4.5、第二轮fk函数

运算 结果
对上一轮结果( 1001 1001)取高低位 L= 1001 R=1001
经扩张/置换运算 E/P(R) = 1100 0011
与K1(0101 1111)进行异或得 1001 1100
1001进入S盒S0中得到一个二位输出 11
1100进入S盒S1中得到一个二位输出 01
两者合并得到一个四位输出 1101
上一轮结果经P4置换得到 1101
上一轮结果与L按位异或得到 0100
故第二轮fk函数的结果为 0100 1001
第二轮fk函数结果经IP逆置换得得到 0001 0110

4.6、结果

最终结果为:Homework plaintext = 1110 0100;

数据加密标准-DES

概念

DES是一种明文分组为64比特,有效**56比特,输出密文64比特的,具有16轮迭代的分组对称密码算法,DES由初始置换,16轮迭代,初始逆置换组成。
密码学复习笔记2【分组密码/S-DES、DES】
密码学复习笔记2【分组密码/S-DES、DES】
可以看出,DES加密需要四个关键点:

  • (1)IP置换表和IP-1逆置换表;
  • (2)函数f;
  • (3)子**Ki。
  • (4)S盒的工作原理。

IP置换表

密码学复习笔记2【分组密码/S-DES、DES】

F函数

函数f(Ri-1,Ki)有两个输入:32位的Ri-1和48位子**Ki,
f函数的处理流程如下图所示:
密码学复习笔记2【分组密码/S-DES、DES】

E-扩展运算

E-扩展运算是扩位运算,将32比特扩展为48比特,用方阵形式可以容易地看出其扩位方法,其中粗方框中的为原始输入数据。
密码学复习笔记2【分组密码/S-DES、DES】

压缩替代 S盒 (Substitution Box)

密码学复习笔记2【分组密码/S-DES、DES】
S盒:
密码学复习笔记2【分组密码/S-DES、DES】
作用:将6个输入位映射为4个输出位;
方法:

  • 若定义6个输入位为a1a2a3a4a5a6,a1代表第1位,a6代表第6位;
  • 将a1a6组成2位二进制数,对应S盒表中的行号;
  • 将a2a3a4a5组成一个4位的2进制数,对应S盒表中的列号;
  • 映射到交叉点的数据就是该S盒的输出。

举例如下:(选择交叉点的数据可参看上面的S盒图片)
输入为101011的输出是?
a1a6=11->3->第3行
a2a3a4a5=0101->5->第5列
交叉点数据为9转化为二进制为:1001

置换函数P(Permutaion)

P置换的目的是:提供雪崩效应;
明文或**的一点小的变动都引起密文的较大变化;
密码学复习笔记2【分组密码/S-DES、DES】

子秘钥

密码学复习笔记2【分组密码/S-DES、DES】
密码学复习笔记2【分组密码/S-DES、DES】

具体代码实现之后添加吧,实验的代码找不到放哪了,ummm
这里贴一个觉得很详细的博客,可和此博文一起对照更好的理解DES,点这里

安全性的改进:

为了增强DES算法的安全性,人们提出了许多DES的改进方案。其中,称为三重DES的多重加密算法是DES的一个重要的改进算法。
密码学复习笔记2【分组密码/S-DES、DES】