分组密码总结

article/2025/10/4 0:19:49

分组密码

分组密码就是将明文消息序列划分成长为n的组,各组分别在密钥k控制下,变成等长的输出序列。

  • 代换: 明文分组到密文分组的可逆变换为代换。
  • 扩散和混淆: 扩散和混淆是Shannonon提出的设计密码系统的两个基本方法,目的是抗击敌手对密码系统的统计分析。扩散是将明文的统计特性散布到密文中,使密文中的每一位由明文中多位产生。混淆是使密文和密钥之间的统计关系变得尽可能的复杂,使敌手无法获得密钥。

Feistel密码结构

很多分组密码的本质是Feistel结构。是一种代换-置换网络。其结构如下

在这里插入图片描述

如图,加密算法输入是分组长为2w的明文和一个密钥K。将每组明文分为左右两半L0和R0,在进行为n轮迭代后,左右两半合在一起产生密文分组。其第i轮迭代为:
L i = R i − 1 L_i = R_{i-1} Li=Ri1

R i = L i − 1 ⨁ F ( R i − 1 , K i ) R_i = L_{i-1}\bigoplus F(R_{i-1},Ki) Ri=Li1F(Ri1,Ki)

Feistel网络的安全性与以下参数有关:

  1. 分组大小
  2. 密钥大小
  3. 轮数
  4. 子密钥产生算法
  5. 轮函数
  • Feistel解密结构

Feistel解密结构和加密本质一样,算法使用密文作为输入,但使用密钥Ki的次序与加密的过程相反。如上图右边。

数据加密标准DES

在这里插入图片描述

如上图是DES的算法框图,其中明文分组长为64比特,密钥长为56比特。左边是明文处理过程,分为3个阶段。

  1. 初始置换IP

用于重排64比特明文数据,规则如下表:

在这里插入图片描述

如:第1位用第58位替换

  1. 轮变换

进行具有相同功能的16轮变换,每轮都有置换和代换运算。具体结构如下:

在这里插入图片描述

(其中右边为密钥的生成)

将64比特分组的明文分为左右两部分,记为L,R和Feistel网络结构一样。右半部分R为32比特,首先经过选择扩展运算E,扩展为48比特。选择扩展运算E规则如下表:

在这里插入图片描述

扩展后的48比特在于子密钥Ki异或,然后在经过S盒,由48比特变为32比特的输出。S盒运算如下:

将48比特的数据分为8个6比特的分组分别通过s1,s2,...,s8的转换。

在这里插入图片描述

将通过S盒运算产生的32比特数据再经过置换运算P输出32比特,置换运算P规则如下:

在这里插入图片描述

接下来就按照上面图示进行。

  1. 密钥的产生

接下来讲解图中右边的密钥产生算法。输入算法的56比特首先经过一个置换运算PC-1,产生56比特输出,规则如下:

在这里插入图片描述

然后将置换后的56比特分为各为28比特的左右两部分,记为C,D,在第i轮分别对Ci-1和Di-1进行循环左移,移位数由上表所示。移位的结果作为下一轮的子密钥的输入,同时也作置换选择2的输入。通过置换选择2产生48比特的Ki,作为本轮的子密钥参与加密的轮变换。置换选择2由上图所示。

解密

Feistel结构一样,DES加密和解密使用同一算法,而子密钥使用顺序相反。

二重DES

为了提高DES的安全性,可使用二重DES,其中P为明文,K1K2为两个加密密钥。密文为
C = E K 2 [ E K 1 [ P ] ] C=E_{K_2}[E_{K_1}[P]] C=EK2[EK1[P]]
解密
P = D K 1 [ D K 2 [ C ] ] P = D_{K_1}[D_{K_2}[C]] P=DK1[DK2[C]]
对二重DES可以采用中途相遇攻击:

如果已知一个明文密文对,首先用所有的256个可能的`K1`对明文加密,将加密结果存入一个表,然后用256个所有可能的K2对密文解密,在上述的表中找到与解密结果相匹配的项,找到就可以确定K1K2是所要找的密钥。

三重DES

为了抵抗中途相遇攻击,可以使用三重DES,使用两个密钥作三次加密
C = E K 1 [ D K 2 [ E K 1 [ P ] ] ] C=E_{K_1}[D_{K_2}[E_{K_1}[P]]] C=EK1[DK2[EK1[P]]]

差分密码分析和线性密码分析

差分密码分析是迄今已知攻击迭代密码最有效的方法之一,其基本思想是:通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特。

线性密码分析是对迭代密码的一种已知明文攻击,它利用的是密码算法中的“不平衡的线性逼近”。

分组密码的运行模式

分组密码在加密时明文分组的长度是固定,而实用中待加密消息的数据量是不定的,数据格式可能多种多样,所以产生了4中分组密码的运行模式。

  1. 电码本模式ECB

每个分组独立的以同一密钥加密。用于传送短数据。

在这里插入图片描述

长度不够需要进行填充,可以用于传递DES密钥。但如果明文分组在消息中重复出现的话,密文分组也一样,这会给攻击者带来方便。

  1. 密码分组链接模式CBC

为了解决ECB的安全缺陷,CBC可以让重复的明文分组产生不同的密文分组。适用于数据分组和认证。

一次对一个明文分组加密,每次加密使用同一密钥,加密算法的输入当前明文分组和前一次密文分组的异或。

在这里插入图片描述

IV应该被保密发送给对方。

  1. 密码反馈模式CFB

利用CFB可以将分组密码转换为流密码,加密时,加密算法的输入是64比特的移位寄存器,其初始值是某个初始向量IV。加密算法输出的最左j比特于明文的第一个单元P1异或,产生的密文的第一个单元C1,并传送该单元。然后将移位寄存器的内容左移j位,并将C1送入移位寄存器的最右j位。

在这里插入图片描述

在这里插入图片描述

  1. 输出反馈模式OFB

OFB类似于CFB不同之处在于OFB模式是将加密算法的输出反馈到移位寄存器,而CFB是将密文单元反馈到移位寄存器。

在这里插入图片描述

在这里插入图片描述

优点:

不需要填充
错误不传播
抗消息流篡改攻击的能力不如CFB

AES算法

AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:

在这里插入图片描述

AES的处理单位是字节,128位的输入明文分组P和输入密钥K都被分成16个字节,分别记为P = P0 P1 … P15 和 K = K0 K1 … K15。如,明文分组为P = abcdefghijklmnop,其中的字符a对应P0,p对应P15。一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。该矩阵中字节的排列顺序为从上到下、从左至右依次排列,如下图所示:
在这里插入图片描述

类似地,128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。通过密钥编排函数该密钥矩阵被扩展成一个44个字组成的序列W[0],W[1], … ,W[43],该序列的前4个元素W[0],W[1],W[2],W[3]是原始密钥,用于加密运算中的初始密钥加(下面介绍);后面40个字分为10组,每组4个字(128比特)分别用于10轮加密运算中的轮密钥加,如下图所示:
在这里插入图片描述

AES的整体结构如下图所示,其中的W[0,3]是指W[0]、W[1]、W[2]和W[3]串联组成的128位密钥。加密的第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。
在这里插入图片描述

上图也展示了AES解密过程,解密过程仍为10轮,每一轮的操作是加密操作的逆操作。由于AES的4个轮操作都是可逆的,因此,解密操作的一轮就是顺序执行逆行移位、逆字节代换、轮密钥加和逆列混合。同加密操作类似,最后一轮不执行逆列混合,在第1轮解密之前,要执行1次密钥加操作。

一、字节代换

字节代换是非线性变换,独立的对每个字节进行,代换表(S盒)是可逆的,由如下两个步骤实现:

(1)首先,将字节看作GF(2^8)上的元素,映射到自己的乘法逆元。

(2)对每个字节作以下变换

在这里插入图片描述

其实可以不用进行计算,S盒是一个固定的表,可以查表得到字节代换结果。

逆字节代换通过以上的逆运算得到,也可以查逆S盒。

二、行移位

行移位是一个简单的左循环移位操作。当密钥长度为128比特时,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节,如下图所示:

在这里插入图片描述

行移位的逆变换是将状态矩阵中的每一行执行相反的移位操作,例如AES-128中,状态矩阵的第0行右移0字节,第1行右移1字节,第2行右移2字节,第3行右移3字节。

三、列混合

列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵,如下图的公式所示:在这里插入图片描述

状态矩阵中的第j列(0 ≤j≤3)的列混合可以表示为下图所示:

在这里插入图片描述

其中,矩阵元素的乘法和加法都是定义在基于GF(2^8)上的二元运算,并不是通常意义上的乘法和加法。这里涉及到一些信息安全上的数学知识,不过不懂这些知识也行。其实这种二元运算的加法等价于两个字节的异或,乘法则复杂一点。对于一个8位的二进制数来说,使用域上的乘法乘以(00000010)等价于左移1位(低位补0)后,再根据情况同(00011011)进行异或运算,设S1 = (a7 a6 a5 a4 a3 a2 a1 a0),刚0x02 * S1如下图所示:
在这里插入图片描述

也就是说,如果a7为1,则进行异或运算,否则不进行。
类似地,乘以(00000100)可以拆分成两次乘以(00000010)的运算:

在这里插入图片描述

乘以(0000 0011)可以拆分成先分别乘以(0000 0001)和(0000 0010),再将两个乘积异或:

在这里插入图片描述

列混合逆运算

在这里插入图片描述

四、轮密钥加

轮密钥加是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作,如下图所示。其中,密钥Ki中每个字W[4i],W[4i+1],W[4i+2],W[4i+3]为32位比特字,包含4个字节,他们的生成算法下面在下面介绍。轮密钥加过程可以看成是字逐位异或的结果,也可以看成字节级别或者位级别的操作。也就是说,可以看成S0 S1 S2 S3 组成的32位字与W[4i]的异或运算。

在这里插入图片描述

密钥扩展

AES首先将初始密钥输入到一个4*4的状态矩阵中,如下图所示。
在这里插入图片描述

这个44矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为W[0]、W[1]、W[2]和W[3],它们构成一个以字为单位的数组W。例如,设密钥K为"abcdefghijklmnop",则K0 = ‘a’,K1 = ‘b’, K2 = ‘c’,K3 = ‘d’,W[0] = “abcd”。
接着,对W数组扩充40个新列,构成总共44列的扩展密钥数组。新列以如下的递归方式产生:
1.如果i不是4的倍数,那么第i列由如下等式确定:
W[i]=W[i-4]⨁W[i-1]
2.如果i是4的倍数,那么第i列由如下等式确定:
W[i]=W[i-4]⨁T(W[i-1])
其中,T是一个有点复杂的函数。
函数T由3部分组成:字循环、字节代换和轮常量异或,这3部分的作用分别如下。
a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0]。
b.字节代换:对字循环的结果使用S盒进行字节代换。
c.轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。
轮常量Rcon[j]是一个字,其值见下表。
列由如下等式确定:
W[i]=W[i-4]⨁T(W[i-1])
其中,T是一个有点复杂的函数。
函数T由3部分组成:字循环、字节代换和轮常量异或,这3部分的作用分别如下。
a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0]。
b.字节代换:对字循环的结果使用S盒进行字节代换。
c.轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。
轮常量Rcon[j]是一个字,其值见下表。
在这里插入图片描述
AES的讲解参考了https://blog.csdn.net/qq_28205153/article/details/55798628


http://chatgpt.dhexx.cn/article/FqSvZeJN.shtml

相关文章

分组密码

文章目录 一、分组密码概述1、分组密码的含义和要求2、分组密码的设计思想3、分组密码的迭代结构4、分组密码的基本特点 二、数据加密标准(DES)1、DES算法介绍2、DES算法实现3、DES安全特性4、多重DES 三、AES算法1、AES算法介绍2、AES算法实现3、AES的安…

古典密码分析(冗余度,唯一解距离,语言统计,重合指数)

冗余度 在有意义的英文字母文本中,每个字符所携带的平均信息(每个字符的熵)的估计值等于1.5比特。 在语言学上在实际的英文中,平均每个英文字母携带的信息熵是4.7(log26,具体怎么求得在此不详细说明&#…

分组密码详细分析总结(攻击、扩散、混淆、DES、AES优缺点)

分组密码(block cipher)是密码系统的基本组成部分之一。分组密码的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的…

AES攻击方法 :差分密码分析 boomerang attack飞去来器攻击

AES具有128比特的分组长度,三种可选的密钥长度(128,192,256) AES是一个迭代型密码,轮数依赖于密钥长度。如果密钥长度为128比特,则轮数为10;如果密钥长度为192比特,则轮…

差分密码分析

差分密码分析是针对SPN结构中的S盒(通过测试可以探测出结构)进行分析的方法,最后目标是破解出异或密钥k. 准备工作 对于一个4位一组的S盒的输入 x x x输出 y y y输入 x ∗ x^* x∗输出 y ∗ y^* y∗, 计差分为 x ′ x ⊕ x ∗ x'x\oplus x^* x′x⊕x∗, y ′ y ⊕…

SPN线性密码分析【附code】

综述 SPN线性密码分析: 基于S盒子逼近的分析方法;是已知明文的分析方法,需要较多的名密文对;此方法只能分析最后一轮子密钥,缩小了密钥穷举范围(当分析出最后一轮密钥时,由于密钥生成算法固定…

序列密码分析——BM算法

一、 算法原理 1. 概念引入 生成与特征多项式 2. BM算法流程 二、 编程思路 1. 编程思路: BM算法整体流程较为清晰,其中包含几个核心判断:fnx 能否生成序列a的前n1位,各l值是否全相等,以及当l值出现不等情况下m-lm和…

第五讲 密码分析学

密码学学科分支 两个分支形成既对立又统一的矛盾体 1 安全的定义 安全的概念: “如果把一封信锁在保险柜中,把保险柜藏起来,然后告诉你 去看这封信,这并不是安全,而是隐藏; 相反,如果把一封信…

代换密码的密码分析—详细分析过程

代换密码的密码分析 使用单表代换密码,对于给出的密文进行分析并得到结果,了解加密解密过程 密文信息如下:AHNFCROACOAHNISEFLCIASFVCNWOSEAHNWSRLDWCAHCEIRNTONDATRCFFOSEOANNLTEDTLUMCEUMFRSMAHNNUITETDTTEDJTPTEAHNUOWCNLDOCAOATRCFFBTAS…

密码分析之单表代换原理详解与算法实现

【密码分析(单表代换)】 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) software:MATLAB R2020a 2.process P…

搞懂差分密码分析,看这篇文章就够了!!

搞懂差分密码分析,这篇文章就够了!! 关注我!我会不定期发一些学习信安的心得体会 文章目录 **搞懂差分密码分析,这篇文章就够了!!**一、概述二、流密码的线性特性三、差分分析四、toy cipher-差…

线性密码分析(简单笔记)

线性密码分析(简单笔记) 关于差分密码分析的可以看差分密码分析读书报告。欢迎大家讨论留言。 1、发现 在1993年的欧洲密码年会上,日本学者Matsui提出了对DES算法的一种新的攻击方法,即线性密码分析.同年的国际密码年会上,Matsui发现了DES…

密码分析

破译密码体制的一般思路 经典密码分析 古典密码分析可以理解为从密文y中得到明文x,或者是密钥k。密码分析可以分为两类:一类是发现加密方法内部结构的分析攻击,一类是将加密算法看作是黑盒,试图测试所有可能密钥进行破解蛮力攻击…

密码分析(一):差分密码分析

文章目录 一、选择明文攻击(chosen-plaintext attack, CPA)二、差分密码分析(differential cryptanalysis)1.原理2.过程2.1 S盒差分分布表2.2 S盒的差分分析 总结参考文献 差分分析是一种选择明文攻击,其基本思想是&am…

密码分析(二):线性密码分析

​ 线性密码分析 一、已知明文攻击(known-plaintext attack)二、线性密码分析基本原理三、实例3.1 S盒线性逼近表3.2 例题分析3.2.1 分析算法的过程3.2.2 攻击过程加密攻击分析 具体过程 总结参考文献 在1993年欧洲密码年会上,日本学者Matsu…

Bluehost注册流程与问题

Bluehost注册流程与问题 第一步 进入Bluehost官方网站,点击下图中粉色的 Sign Up Now 进行注册 第二步 进入下一个界面后,你可以免费获得一个新的域名,BlueHost 对第一年是免费赠送一个域名,所以输入你想要的域名,然后…

BlueHost主机从零开始使用笔记,我踩过的坑你就不要踩了.

一:购买时,使用官方优惠码BH可以优惠30% 二:登陆后:点击可以显示你购买的主机,点击列表中的域名即可进入管理界面! 三:特别提醒!面板中的部分功能"比如在线文件 管理上传文件",只有使用chrome浏览器才可以,使用360浏览器的时候会出现上传不了的情况. 这里就是坑1 …

hosts文件 (屏蔽网站)

hosts文件 hosts文件是什么 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开。它是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应…

2018年最新bluehost主机(中文站)购买教程,送30%优惠码!

Bluehost是一家老牌的美国主机商,行业经验达18年,以稳定性强,速度快著称,是国内使用较多主机之一,在个人站长中的口碑、使用流行度都很高。作为电子商务首选主机的BlueHost主机也深受国内外贸网站、仿牌产品等公司的喜…

bluehost虚拟主机有什么用?适合做什么网站呢?

bluehost作为比较知名的美国主机商,在国内也是非常的受欢迎,并且为了更好的服务国内用户,更是推出了中文站以及中文客服,为 国内用户提供更加本土化以及更加完善的服务,而且而且其机房专门对国内线路进行了优化&#x…