【总结一】现代密码学

2023-11-13

目录

1 密码学概述

1.1 密码学的基本概念

1.1.1 为什么要学密码学        

1.1.2 什么是密码学

1.1.2 密码算法的基本模型

1.1.3 密码算法的分类

1.2 密码分析学

1.3 古典密码算法

1.3.1 置换密码

1.3.2 单表代替密码算法

1.3.3多表代替密码算法

2 分组密码

2.1 分组密码的基本概念     

2.2 分组密码的设计

2.2.1 理想分组密码

 2.2.2 安全性原则

2.2.3 主要设计结构

2.3 Feistel结构

2.4 SPN结构

2.5 DES算法

2.5.1 初始置换​编辑​与逆初始置换​编辑​​

2.5.2 DES的轮函数

2.5.3 函数F(R,K)的计算过程

2.5.4 DES密钥编排

2.5.5 DES的安全性

2.6 多重DES

2.6.1 双重DES算法

2.6.2 三重DES算法

2.7 分组密码的工作模式     

2.7.1 电码本(ECB)模式

2.7.2 密码分组链接(CBC)模式

2.7.3 密码反馈(CFB)模式

2.7.4 输出反馈(OFB)模式

2.7.5 计数器模式

2.8 AES算法

2.9 SM4算法

3 流密码

3.1 一次一密密码

3.2 流密码的基本概念

3.2.1 流密码的基本思想

3.2.2 流密码与分组密码的区别

3.3 同步流密码

3.3.1 同步流密码模型

3.3.2 自同步流密码模型

3.4 线性反馈移位寄存器

3.4.1 反馈移位寄存器

 3.4.2 线性反馈移位寄存器

3.4.3 m-序列与B-M算法

3.5 常见的非线性组合生成器

3.5.1 Geffe序列生成器

3.5.2 J-K触发器

3.5.3 Pless生成器

3.5.4 钟控序列生成器

3.6 典型序列密码算法

3.6.1 RC4算法

3.6.2 A5/1流密码算法

1 密码学概述

1.1 密码学的基本概念

1.1.1 为什么要学密码学        

        信息安全是密码学的目标,密码学是保障信息安全的核心技术。

1.1.2 什么是密码学

        密码是指采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。--------《中华人民共和国密码法》

        密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保护通信秘密的成为密码编码学,应用于破译密码以获取通信情报的,称为密码分析学。

         如上图,在Alice向Bob发送信息的过程中存在着许多安全问题,是否有其他人看到信息内容(机密性),信息内容是否被改动(完整性),是否是Alice发送的信息(消息源认证),是否是发给Bob的信息(通信实体认证),是否Alice真的给Bob发过信息(不可否认性)。而密码学就是来解决这些问题的关键技术。

1.1.2 密码算法的基本模型

基本概念:

        明文(planintext): 被隐蔽的消息

        密文(ciphertext): 隐蔽后的消息

        加密算法(encryption algorithm):发送者对明文进行加密时所采用的规则

        解密算法(decryption algorithm):接受者对密文进行解密时所采用的规则

        密钥(key):加密和解密通常在一组key(encryption key;decryption key)控制下进行

1.1.3 密码算法的分类

(1)对称密钥加密算法:指加密密钥和解密密钥相同的密码算法,分为分组密码算法流密码算法。 常见算法:DES、AES、SM4。

(2)非对称密码算法:指加密密钥和解密密钥不同的密码算法,加密密钥可以公开(公钥),解密密钥必须保密(私钥)。常见算法:RSA、ECC、SM2。

(3)无密钥密码算法:指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数。通常用来做数据完整性的判定。常见算法:SHA系列、MD5、SM3。

1.2 密码分析学

       密码分析学的目标:恢复合法密文相应的明文,恢复密钥。 

        Kerckhoffs假设:假定密码分析者和敌手知道所使用的密码系统。即密码体制的安全性仅依赖于对密钥的保密一切秘密皆蕴含在密钥中!,而不依赖于算法的保密。现代密码学基本观点:在Kerckhoffs假设下达到安全性。

密码分析者攻击密码体制的方法:

(1)穷举攻击:通过试遍所有的密钥来进行破译。

        对抗:可增大密钥的数量。

(2)统计分析攻击:通过分析密文和明文的统计规律来破译。

        对抗:设法使明文和密文的统计规律不同。

(3)解密变换攻击:针对加密变换的数学基础,通过数学求解设法找到解密变换。

        对抗:选用具有坚实的数学基础和足够复杂的加密算法。

密码体制的攻击(密码破译):

唯密文攻击:密码分析者仅知道一些密文

已知明文攻击:密码分析者知道一些明文和相应的密文

选择明文攻击:密码分析者可以选择一些明文,并得到相应的密文

选择密文攻击:密码分析者可以选择一些密文,并得到相应的明文

密码算法只要满足一下两条准则之一就行:

(1)破译密文的代价超过被加密信息的价值。

(2)破译密文所花的时间超过信息的有用期。

满足以上两个准则的密码算法在实际中是可用的。

1.3 古典密码算法

1.3.1 置换密码

        置换密码(Permutation Cipher)又叫换位密码(Transposi-tionCipher),对明文字符或字符组进行位置移动,以便打破明文的结构特性。

        置换密码的特点:保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序。

1.3.2 单表代替密码算法

        代替密码算法针对英文字母进行处理。构造一个或多个密文字母表,然后用密文字母表中的字母或者字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但本身的值发生了改变。

        单表代替密码可分为:加法密码、乘法密码、仿射密码。

1.3.3多表代替密码算法

        维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

        在一个凯撒密码中,字母表中的每一字母都会作一定的偏移,例如偏移量为3时,A就转换为了D、B转换为了E……而维吉尼亚密码则是由一些偏移量不同的恺撒密码组成。

        为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。

        例如,假设为:ATTACKATDAWN

        选择某一关键词并重复而得到密钥,如关键词为LEMON时,密钥为:LEMONLEMONLE

        对于明文的第一个字母A,对应密钥的第一个字母L,于是使用表格中L行字母表进行加密,得到第一个字母L。类似地,明文第二个字母为T,在表格中使用对应的E行进行加密,得到密文第二个字母X。

        以此类推,可以得到:

        明文:ATTACKATDAWN    密钥:LEMONLEMONLE     密文:LXFOPVEFRNHR

        解密的过程则与加密相反。例如:根据密钥第一个字母L所对应的L行字母表,发现密文第一个字母L位于A列,因而明文第一个字母为A。密钥第二个字母E对应E行字母表,而密文第二个字母X位于此行T列,因而明文第二个字母为T。以此类推便可得到明文。

        用数字0-25代替字母A-Z,维吉尼亚密码的加密文法可以写成的形式:

                                                        ​​​​​​​        C_{i}\equiv P_{i}+K_{i}(mod 26)

        解密方法则能写成:        ​​​​​​​        ​​​​​​​        P_{i}\equiv C_{i}-K_{i}(mod 26)

转载于:https://baike.baidu.com/item/%E7%BB%B4%E5%90%89%E5%B0%BC%E4%BA%9A%E5%AF%86%E7%A0%81/4905472?fr=aladdin

2 分组密码

2.1 分组密码的基本概念     

  分组密码属于对称加密算法,消息接收方与发送方拥有同一个密钥、能力对等。

        将明文划分为m比特长的组,每一块依次进行加密算法。

        由密钥k决定一个明文到密文的可逆映射。

2.2 分组密码的设计

2.2.1 理想分组密码

        Feistel提出: 理想的分组密码,可以允许生成最大数量的加密映射,来映射明文分组。加密和解密映射用表定义。

对于n比特到n比特的可逆置换,共有2^{n}!种可能的置换表。密钥长度:n*2^{n}bits。

若要抵抗统计攻击,n\geq 64,密钥至少10^{21}比特。

理想的分组密码,虽然安全性高,可能的置换非常多,但并不可行。

 2.2.2 安全性原则

混淆与扩散:分组密码设计的本质

混淆:打乱密文、明文、密钥之间的依赖关系。

扩散:明文的统计特性消散在密文中。每个明文比特尽可能地影响多个密文,密文每个比特受多个明文比特影响。

乘积密码:

        实现混淆扩散的一种有效方法——“乘积密码”。

        先用一种密码体制S_{1}对明文加密得到密文C_{1},再用另一种密码体制S_{2}C_{1}加密,得到最终的密文C_{2},香农称之为“乘积”组合密码体制。

2.2.3 主要设计结构

Feistel结构:DES、CAST、Skipjack

SPN网络(Substitution-PermutationNetwork):AES、Serpent

迭代分组密码:一个内部函数(轮函数)的连续重复。参数包括轮数r、分组的比特长度n和输入密钥K的比特长度k,r个轮密钥K_{i}由K生成。满足可逆性,对每个K_{i},轮函数在轮输入上是一个双射。

2.3 Feistel结构

        简单理解Feistel结构就是顺序执行两个或多个基本密码系统,使得最后结果的密码强度大于每个密码系统的结果。

        假设加密过程的输入为分组长2w的明文和一个密钥K(K在运算过程中将分成多个子密钥Ki),将明文分为两部分,左边记为L0,右边记为R0.以下是加密解密过程图:

 Feistel加密过程:

第一轮:R0与子密钥k0进行运算,记为F(R0,k0),得到的结果与L0进行异或运算。 最终得到的结果将作为第二轮运算的右半部分记为R1,而R0直接作为第二轮的左半部分记为L1。

第二轮:L1和F(R1,K1)(R1和K1运算的结果)进行异或运算,产生的结果为第三轮的R2,R1直接变为L2。

第三轮以后一次类推,n轮迭代之后,左右两边再合并到一起为最后的密文分组。

每轮的置换可以由以下函数表示 :Li = Ri-1

                                                      Ri = Li-1F(Ri-1,Ki)

Feistel解密过程:本质上与加密过程一样,就是把加密过程反过来。

与Feistel结构有关的参数:

(1)分组大小。分组越多安全性越高,加密速度越慢,分组密码中普遍使用的分组大小为64bit。

(2)密钥大小。密钥越长安全性越高,加密速度越慢,一般使用128bit的密钥或者更长。

(3)轮数。轮数越多安全性越高,一般为16轮。

(4)子密钥产生算法。该算法越复杂安全性越高。

(5)轮函数。轮函数越复杂安全性越高。

转载于:https://www.cnblogs.com/OneFriday/p/11470210.html

2.4 SPN结构

        Shannon建议交替使用代换和置换两种方法,即他称之为混乱(confusion)和扩散(diffusion)的过程,破坏对密码系统进行的各种统计分析。    

        SPN(substitution-permutation network)代换-置换网络是一类特殊的迭带密码。代换-置换网络的轮函数包括三个变换:代换(S-box)、置换(P)、密钥混合。

        SPN结构比Feistel结构更易于并行处理,要求S盒可逆,轮数较短,软硬件需求更大。

2.5 DES算法

        DES是一个16轮Feistel型密码,分组长度为64bits;密文分组长度也是64bits;密钥长度为64bits,有8bits奇偶校验,有效密钥长度为56bits。

算法主要包括:初始置换IP、16轮迭代的乘积变换、逆初始置换IP^{-1}​以及16个子密钥产生器。

2.5.1 初始置换IP​与逆初始置换IP^{-1}​​

        初始置换是将64bit明文的位置进行置换,得到一个乱序的64bit明文组。

        逆初始置换IP^{-1}​​:将16轮迭代后给出的64bit组进行置换,得出输出的密文组。输出为阵中元素按行读得的结果。

        IPIP^{-1}​​在密码意义上作用不大,它们的作用在于打乱原来输入x的ASCII码字划分的关系。

2.5.2 DES的轮函数

​​

无论f函数如何选取,DES的轮函数是一个对合变换 。

​​

DES算法轮结构

      DES算法每一轮展开都是以下的结构,左边是轮函数,右边是密钥编排。

​​

2.5.3 函数F(R,K)的计算过程

        F(R,K)函数实际上是由几个函数复合而成的,首先将32比特数据通过选择扩展运算E转换为48比特,然后与该轮的子密钥进行异或,异或的结果作为S盒的输入,再通过S盒输出为32比特,最后通过置换P得到32比特的输出。

​​

DES的S盒的输入和输出关系

        在DES算法中替代由8个不同的S盒完成,每个S盒有6位输入4位输出。

        一个S盒就是一个4行16列的表格,盒中的每一项都是一个4位二进制数表示的十进制数,输入的高低两位作为行数H,中间四位作为列数L,在S-BOX中查找第H行L列对应的数据。

​​

2.5.4 DES密钥编排

(1)首先需要去掉8个校验位,得到56比特的值;

(2)然后经过置换选择1,得到56比特的输出;

(3)再将56比特的输出分为左右两部分,各28比特,分别进行循环左移,最后合并成56比特;

(4)再通过置换选择2,就得到这一轮的轮密钥。

​​

 DES中的子密钥的生成

​​

​​

2.5.5 DES的安全性

https://blog.csdn.net/weixin_43211186/article/details/125427860

2.6 多重DES

        在密码学界,能够研究出来一种新的加密标准并且可以超过目前使用广泛的加密算法,是实实在在、真真切切不容易,也是密码学界的响当当的头等大事。在DES完成自己十年的任命期后,由于新的算法未被提出,DES不得不临危受命,继续肩负重任,在接下来的十年里,依然活跃在国际保密通信的舞台上。直至多重DES的出现,打破了这个僵局。

2.6.1 双重DES算法

        为了增加密钥长度,我们可以采用多重的DES算法,最常用的就是二重DES。二重 DES 是多重使用 DES 时最简单的形式,其具体的加密解密操作如下图。

​ 

图中,明文信息为 P,两个加密密钥为 K1 和 K2。

加密后,密文为: C = EK2 [ EK1§]

解密后,明文为: P = DK1 [DK2 ©] {注:解密时,以相反顺序使用两个密钥}

从上边我们可以看到,在利用二重 DES时,我们就可以巧妙的将原有的56bit的密钥变成112bit,极大的增加了加密时的安全性。

但是,放过来我们可以想到,假设对任意两个密钥 K1 和 K2,如果存在另一密钥 K3,使得 EK2 [ EK1§]= EK3 [ P] (也就是说,在单重的DES中存在一个密钥,与二重DES合起来加密时等价的),那么,二重 DES 以及多重 DES 都没有意义, 因为它们与 56 比特密钥的单重 DES 等价,但是后来经过证实,我们这种假设对于 DES算法并不能够成立。

中间相遇攻击:

​ 一种对所有分组密码均有效的攻击方法。

首先,以二重DES为例。

​ 加密:C = EK2 [ EK1§]

​ 解密:P = DK1 [DK2 ©]

​ 首先设定一个中间值X,有 :X = EK1(P)= DK2 ©

在已知给定的消息对(P,C),首先,将明文P按所有可能的密钥 K1 加密,得到的256个结果,按X的值将所有结果排序放在一个表内,然后用所有可能的密钥K2对密文C解密,每解密一次,将解密结果与表中的数值进行对比,如果相等,就将刚才测试的两个密钥对一个新的明密文对进行验证,若验证成功,则认定这两个密钥对是正确的密钥。

结论:中间相遇攻击使用两组已知明密文对就可以猜出正确的密钥。

原文链接:https://blog.csdn.net/qq_33828738/article/details/105050602

2.6.2 三重DES算法

两个密钥的三重DES算法:
抵抗中途相遇攻击的一种方法是使用 3 个不同的密钥做 3 次加密,从而可使已知明文攻击的代价增加到 2112。然而, 这样又会使密钥长度增加到 56×3 = 168 bit,就会使密钥过于复杂,造成加密信息的冗余。

所以我们就想出,能不能利用两个不同的密钥进行3次加密,一种实用的方法是仅使用两个密钥做 3 次加密,实现方式为加密 -解密-加密,即: C =EK1 [DK2 [ EK1(P)]] ,第 2 步解密的目的仅在于使得用户可对一重 DES 加密的数据解密。

此方案已在密钥管理标准 ANS X .917 和 ISO 8732 中被采用。

三个密钥的三重DES算法:
三个密钥的三重 DES 密钥长度为 168 bit,加密方式为C =EK3 [DK2 [ EK1(P)]] 。

原文链接:https://blog.csdn.net/qq_33828738/article/details/105050602

2.7 分组密码的工作模式     

        分组(block)密码的工作模式(mode of operation)允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。分组密码只能加密长度等于密码分组长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独的密码块。通常而言,最后一块数据也需要使用合适填充方式将数据扩展到匹配密码块大小的长度。一种工作模式描述了加密每一数据块的过程,并常常使用基于一个通常称为初始化向量的附加输入值以进行随机化,以保证安全。

        工作模式主要用来进行加密和认证。 对加密模式的研究曾经包含数据的完整性保护,即在某些数据被修改后的情况下密码误差传播特性。后来的研究则将完整性保护作为另一个完全不同的,与加密无关的密码学目标。部分现代的工作模式用有效的方法将加密和认证结合起来,称为认证加密模式。

2.7.1 电码本(ECB)模式

        电子密码本模式是最基本、最易理解的工作模式。每次加密均产生独立的密文分组,每组的加密结果不会对其他分组产生影响,相同的明文加密后对应产生相同的密文,无初始化向量(也称为加密向量)。可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文,这也是该模式的名称由来。

优点: 易于理解且简单易行;便于实现并行操作;没有误差传递的问题。

缺点:不能隐藏明文的模式,如果明文重复,则对应的密文也会重复,密文内容很容易被替换、重排、删除、重放;对明文进行主动攻击的可能性较高。

用途:适合加密密钥、随机数等短数据。例如,安全地传递DES密钥,ECB是最合适的模式。

2.7.2 密码分组链接(CBC)模式

        密文链接模式是目前应用最广泛的工作模式(已丧失安全性,不推荐使用)。明文加密前需先与前面的密文进行异或运算(XOR)后再加密,因此只要选择不同的初始向量,相同的明文加密后产生不同的密文。

优点:密文链接模式加密后的密文上下文关联,即使在明文中出现重复的信息也不会产生相同的密文;密文内容如果被替换、重排、删除、重放或网络传输过程中发生错误,后续密文即被破坏,无法完成解密还原;对明文的主动攻击的可能性较低。

缺点:不利于并行计算,目前没有已知的并行运算算法;误差传递,如果在加密过程中发生错误,则错误将被无限放大,导致加密失败;需要初始化向量。

用途:可加密任意长度的数据;适用于计算产生检测数据完整性的消息认证码Mac。

2.7.3 密码反馈(CFB)模式

        密文反馈模式类似于自同步流密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈给移位寄存器。CFB是上下文相关的,明文的一个错误会影响后面的密文(扩散)。CFB需要一个初始化向量,加密后与第一个分组进行异或运算产生第一组密文;然后,对第一组密文加密后再与第二个分组进行异或运算取得第二组密文;以此类推,直到加密完成。

优点:可以按字节逐个进行加密解密,也可以按n位字节处理;隐藏了明文的模式,每一个分组的加密结果必受其前面所有分组内容的影响,即使出现多次相同的明文,也均产生不同的密文;分组密码转化为流模式,可产生密钥流;可以及时加密传送小于分组的数据。

缺点:与CBC模式相类似。不利于并行计算,目前没有已知的并行运算算法;存在误差传送,一个单元损坏影响多个单元;需要初始化向量。

用途:因错误传播无界,可用于检查发现明文密文的篡改。

2.7.4 输出反馈(OFB)模式

        输出反馈模式,它将分组密码作为同步流密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈给移位寄存器,OFB没有错误扩散问题。该模式产生与明文异或运算的密钥流,从而产生密文,这一点与CFB大致相同,唯一的差异是与明文分组进行异或的输入部分是反复加密后得到的。

优点:隐藏了明文的模式;分组密码转化为流模式;无误差传送问题;可以及时加密传送小于分组的数据。

缺点:不利于并行计算;对明文的主动攻击是可能的,安全性较CFB差。

用途:适用于加密冗余性较大的数据,比如语音和图像数据。

2.7.5 计数器模式

        计数器的特点是将计数器从初始值开始计数所得到的值发送给分组密码算法。随着计数器的增加,分组密码算法输出连续的分组来构成一个位串,该位串被用来与明文分组进行异或运算。计数器模式是用来提取分组密码的最大效能以实现保密性。在AES的实际应用中,经常会选择CBC模式和CTR模式,但更多的是选择CTR模式。

优点:可并行计算;安全性至少与CBC模式一样好;加密与解密仅涉及密码算法的加密。

缺点:没有错误传播,因此不易确保数据完整性。

用途:适用于各种加密应用。

2.8 AES算法

        AES算法主要有四种操作处理,分别是密钥加法层(也叫轮密钥加,英文Add Round Key)、字节代换层(SubByte)、行位移层(Shift Rows)、列混淆层(Mix Column)。而明文x和密钥k都是由16个字节组成的数据(当然密钥还支持192位和256位的长度,暂时不考虑),它是按照字节的先后顺序从上到下、从左到右进行排列的。而加密出的密文读取顺序也是按照这个顺序读取的,相当于将数组还原成字符串的模样了,然后再解密的时候又是按照4*4数组处理的。AES算法在处理的轮数上只有最后一轮操作与前面的轮处理上有些许不同(最后一轮只是少了列混淆处理),在轮处理开始前还单独进行了一次轮密钥加的处理。

转载:https://zhuanlan.zhihu.com/p/78913397

2.9 SM4算法

        SM4算法是我国商用密码标准,其前身是SMS4算法。SM4算法是一个分组加密算法,分组长度和密钥长度均128bit。SM4算法使用32轮的非线性迭代结构。SM4在最后一轮非线性迭代之后加上了一个反序变换,因此SM4中只要解密密钥是加密密钥的逆序,它的解密算法与加密算法就可以保持一致。SM4的主体运算是非平衡Feistel网络。整体逻辑结构如下图所示,经过32轮变换把明文变换为密文。

转载:https://blog.csdn.net/m0_51565722/article/details/124330892

3 流密码

3.1 一次一密密码

        一次一密密码(one-time pad)是一种理想的加密方案,由Major Joseph Mauborgne和AT&  T公司的Gilbert Vernam1917年发明的。

明文:x=x_{0}x_{1}x_{2}...​​

密钥:k=k_{0}k_{1}k_{2}...​​

密文:y=y_{0}y_{1}y_{2}...​​

加密函数y_{i}=x_{i}+k_{i}(mod26)​​

解密函数:x_{i}=y_{i}-k_{i}(mod26)​​

注意:密钥为随机产生的,而且只使用一次

加密过程如下图所示:

​​​

优点:密钥随机产生,仅使用一次;无条件安全;加密和解密为加法运算,效率较高。

缺点:密钥长度至少与明文长度一样长,密钥共享困难,实用性差。

3.2 流密码的基本概念

        流密码(stream cipher)是一种重要的密码体制。明文信息按字符或比特逐位加密,密钥流可以用移位寄存器电路来产生,也促进了线性和非线性移位寄存器发展,流密码主要是基于硬件实现。

流密码的特点在实时处理反面效率更高;实现简单;便于硬件实现;加解密处理速度快;没有或只有有限的错误传播。

应用场景:专用或机密机构、无线通信、外交通信等。

3.2.1 流密码的基本思想

​​​

        在流密码中,加密方法可以公开,但密钥需要进行保密(有点像双钥密码体制,但只有一个密钥)密码学中计算大多用到加法、乘法和异或,减法用加负数代替,除法用逆元代替。
        下图是分组密码和流密码的比较,二者区别在于有无记忆性:

​​​

3.2.2 流密码与分组密码的区别

处理消息的方式不同:分组密码将消息分割成固定长度的数据块,以分组大小作为每次处理的基本单元;流密码加密不定长度的明文数据流,以一个元素(字母或比特)为基本处理单元。

记忆性:分组密码的加解密变换不是时变的,加解密器中不存在记忆元件;流密码中密钥流的产生由当前时刻的内部状态和种子密钥所决定,加解密变换是时变的,其时变性由加解密器中的记忆元件来保证。

3.3 同步流密码

         一个六元组(P,C,K,L,E,D)和函数g,并满足以下条件:P是由所有可能明文构成的有限集;C是由所有可能密文构成的有限集;K是由所有可能密钥构成的有限集;L是一个称为密钥流字母表的有限集;g是一个密钥流生成器,用种子密钥k作为输入,产生密钥流。

3.3.1 同步流密码模型

        密钥流的产生独立于明文和密文​​​

​​​

        同步流密码举例

​​​

同步要求:

(1)发送方和接受方必须同步

(2) 用同样的密钥且该密钥操作在同样的位置,才能保证正确的解密。

无错误传输:

(1)在传输期间,一个密文字符(或位)被改变,只影响该字符(或位)的恢复,不会对后继字符(或位)产生影响。

(2)对应一位出错,其他位不受影响。

注意:改变不是删除,插入和删除将导致同步丢失。

3.3.2 自同步流密码模型

        密钥流的产生与密钥和已经产生的固定数量的密文字符有关

​​​

​​​

         自同步流密码举例​​​

自同步特点:

(1)解密只取决于先前固定数量(即移位寄存器的长度t)的密文字符

(2)在同步丢失后能自动重新建立正确的解密,只有固定数量的明文字符不能被恢复。

有限的错误传播

(1)态取决于t个已有的密文字符

(2)如果一个密文字符在传输过程中出现差错,则解密时最多影响到当前位和后续t个字符的解密

3.4 线性反馈移位寄存器

3.4.1 反馈移位寄存器

        移位寄存器是流密码产生密钥流的一个主要组成部分。

        GF(2)上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数组成,如下图所示

        在任一时刻,这些级的内容构成该反馈移位寄存器的状态,每一状态对应于GF(2)上的一个n维向量,共有2^{n}​中可能的状态。

        每一时刻的状态可用n维向量(a_{1},a_{2}....a_{n})​表示,其中a_{i}​是第i级存储内容。

        初始状态由用户确定。反馈函数f(a_{1},a_{2}....a_{n})​是n元布尔函数,即函数的自变量和因变量只取0和1折两个可能的值。

        函数中的运算有逻辑与、逻辑或、逻辑补等运算。

二元序列的相关知识点链接:后续更新

 3.4.2 线性反馈移位寄存器

3.4.3 m-序列与B-M算法

参考:https://zhuanlan.zhihu.com/p/531272487

3.5 常见的非线性组合生成器

        密钥流生成器可分解为驱动子系统和非线性组合子系统,如下图所示

         驱动子系统常用一个或多个线性反馈移位寄存器来实现,非线性组合子系统用非线性组合函数F来实现,为了使密钥流生成器输出的二元序列尽可能复杂,也应保证其周期尽可能大、线性复杂度和不可预测性尽可能高。

3.5.1 Geffe序列生成器

3.5.2 J-K触发器

3.5.3 Pless生成器

3.5.4 钟控序列生成器

参考:https://blog.csdn.net/Drifter_Galaxy/article/details/107667564

3.6 典型序列密码算法

3.6.1 RC4算法

        RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。RC4算法是一种在电子信息领域加密的技术手段,用于无线通信网络,是一种电子密码,只有经过授权(缴纳相应费用)的用户才能享受该服务。

参考:https://blog.csdn.net/weixin_43211186/article/details/125438478

3.6.2 A5/1流密码算法

        用于蜂窝式移动电话系统语音和数字加密。

        A5/1算法用于用户的手机到基站之间的加密通信,通信内容到基站后先解密变成明文,然后再进行基站到基站之间、以及基站到用户手机之间的信息加密,完成通信内容在通信过程的加密保护。

参考:https://blog.csdn.net/Drifter_Galaxy/article/details/107675611

【总结二】现代密码学_FansMing的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【总结一】现代密码学 的相关文章

  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 网络安全从入门到精通(超详细)学习路线

    首先看一下学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想
  • 【网络安全】web漏洞-xml外部实体注入(XXE)

    web漏洞 xml外部实体注入 XXE 目录 web漏洞 xml外部实体注入 XXE 概念 危害 检测方法 利用方法 漏洞利用 xxe lab 有回显情况 无回显情况 pikachu靶场
  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

    0x01 产品简介 SpiderFlow是新一代爬虫平台 以图形化方式定义爬虫流程 以流程图的方式定义爬虫 不写代码即可完成爬虫 是一个高度灵活可配置的爬虫平台 0x02 漏洞概述 SpiderFlow爬虫平台src main java o
  • 信号浪涌保护器的原理和行业应用方案

    信号浪涌保护器 Surge Protective Device 简称SPD 是一种用于限制信号线路中瞬态过电压和分泄浪涌电流的防雷装置 主要用于保护各类信号线路及设备的防雷安全 信号浪涌保护器的原理是利用气体放电管 压敏电阻 齐纳二极管等非
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 网络安全:绕过 MSF 的一次渗透测试

    这次渗透的主站是 一个 Discuz 3 4 的搭建 违法招 piao 网站 配置有宝塔 WAF 用 Discuz ML 3 X 的漏洞进行攻击 但是没有成功 发现主站外链会有一个发卡网 引导人们来这充值 是 某某发卡网 而且域名指向也是主
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【安全】原型链污染 - Hackit2018

    目录 准备工作 解题 代码审计 Payload 准备工作 将这道题所需依赖模块都安装好后 运行一下 然后可以试着访问一下 报错是因为里面没内容而已 不影响 准备工作就做好了 解题 代码审计 const express require exp
  • 【方法】如何把Excel“只读方式”变成可直接编辑?

    Excel在 只读方式 下 编辑后是无法直接保存原文件的 那如何可以直接编辑原文件呢 下面来一起看看看吧 如果Excel设置的是无密码的 只读方式 那在打开Excel后 会出现对话框 提示 是否以只读方式打开 如果想直接编辑文件 选择 否
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全

随机推荐

  • 大学生python实验心得体会_大学生实训心得体会3篇

    转眼间为期两个星期的实训就结束了 但是安利公司的物流配送 黄埔港 益邦物流公司 南沙港以及学校里面的航海模拟实验中心 轮机实训实验楼这些实训过程仍历历在目 以下是小编整理的大学生实训心得体会 欢迎阅读 大学生实训心得体会1 通过实训中心老师
  • 微信小程序-flex布局:垂直、水平方向-自动填充满剩余空间

    在微信小程序项目中经常需要将水平或垂直方向分成两大部分 一部分内容宽度或高度固定 剩余的一部分需填充满剩余空间 那么 该怎么快速解决这类布局 效果图如下 垂直方向 水平方向 我个人比较喜欢使用flex布局 面对此类布局 最先想到的也是fle
  • 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm 2013 q2bfsm 写在前面 HD
  • 类和对象笔记(1.类和对象的关系,类基本架构)

    梳理C 基础 纯干货或许会很干燥 gt gt gt gt gt 分界线 类 指对象的类型 类代表了一批对象的共性和特征 抽象的 不占用内存 对象 类的具体实例 具体的 占用储存空间 类是对象的抽象 对象是类的具体实例 可以同结构体进行比较学
  • eclipse常用插件之FindBugs

    1 简介 FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具 FindBugs通过检查类文件或 JAR文件 将字节码与一组缺陷模式进行对比从而发现代码缺陷 完成静态代码分析 FindBugs既提供可视化 UI 界面 同
  • 打印金字塔代码

    Description 输入n值 打印下列形状的金字塔 其中n代表金字塔的层数 Input 输入只有一个正整数n Output 打印金字塔图形 其中每个数字之间有一个空格 include
  • JsonMap对象的获取与前台浏览器报错Uncaught TypeError: Cannot read property '0' of undefined

    JsonMap对象的获取与前台浏览器报错Uncaught TypeError Cannot read property 0 of undefined 后台问题在浏览器报错 很多时候在我们遇到浏览器报错的时候都会去前端js里去找错 但有时候确
  • 一起学nRF51xx 15 - spis

    前言 SPIS是一个从SPI 它与EasyDMA一起支持与外部的主SPI超低功耗串行通信 EasyDMA使得SPIS交互无需CPU的介入 在提高数据传输效率的同时还减轻了CPU的负担 SPIS即是SPI从模式 但它比stm32中直接将spi
  • Android开发:最全面、最易懂的Android屏幕适配解决方案

    前言 Android的屏幕适配一直以来都在折磨着我们Android开发者 本文将结合 Google的官方权威适配文档 郭霖 Android官方提供的支持不同屏幕大小的全部方法 Stormzhang Android 屏幕适配 鸿洋 Andro
  • Wireshark抓包分析交换机工作原理

    实验名称 交换机工作原理 实验目的 1 熟悉Linux虚拟网络环境 2 熟悉Linux中network namespace的基本操作 3 熟悉Linux中虚拟以太网设备Tap和veth pair的基本操作 4 熟悉Linux中Bridge设
  • 【Pytorch】循环神经网络实现手写体识别

    Pytorch 循环神经网络实现手写体识别 1 数据集加载 2 搭建RNN模型 3 训练模型 4 模型保存和加载 模型测试 1 数据集加载 import seaborn as sns sns set font scale 1 5 style
  • 如何在智星云平台发挥GPU的最大性能

    在租用智星云服务器后 如果发现训练速度很慢 可以参考下面的方式进行调优 查看gpu利用率 命令 watch nvidia smi 如果发现 nvidia smi显示gpu利用率很低 可以尝试以下操作 a 如果显存还有非常多空余 尝试增大ba
  • Neural Natural Language Processing for Long Texts: A Survey of the State-of-the-Art

    本文是针对NLP处理长文本的一个综述 针对 Neural Natural Languag Processing for Long Texts A Survey of the State of the Art 的翻译 长文本的神经自然语言处理
  • 【转载】[特征向量在线提取工具Pse-in-One 2.0

    1 Pse In One 简单介绍 机器学习分类算法方法主要依赖于根据蛋白质的结构以及功能特性构建的特征集合 通过构造具有辨别性的特征集合来达到令人满意的分类结果 但是使用一个能够反映序列模式信息并能够保持关键序列信息的离散模型或向量是一个
  • HTTPS、UDP/TCP、三次握手、四次挥手

    HTTPS协议 其实就是加密后的HTTP协议 自定制协议 HTTP协议 https到底是如何进行加密传输的 通过ssl加密实现 非对称加密算法 对称加密算法 签名证书 数据直接在网络中传输 很容易被劫持 有很大的安全隐患 对传输过程进行加密
  • HLA仿真中的多联邦

    经常有人问我HLA仿真中的多联邦问题 本讲对此进行解答 1 HLA标准中的联邦指单个联邦 在HLA标准中 联邦定义如下 简单地说 一个联邦用于完成一定的仿真功能 包含一组仿真成员和一个FOM文件 在HLA1 3中 FOM文件的后缀为 fed
  • 安装Vmware workstations 16 Microsoft Visual C++ 2019 x86 Minimum Runtime报错解决办法

    由于电脑更新到了win11系统 之前的Vmware不在被系统支持 需要重新下载新版本的Vmware 在安装Vmware workstations 16时 系统报错界面如下 我们点击OK 会弹出如下提示框 根据这个提示框 可以判断出是电脑中的
  • oracle 11g rac手册(第2版) 高清,Oracle Database11g RAC手册(第2版)_IT教程网

    资源名称 Oracle Database11g RAC手册 第2版 内容简介 根据Oracle ACE提供的专家指导来管理动态的企业级计算基础设施 戈帕拉克里希南所著的 Oracle Database 11g RAC手册 第2版 进行了全面
  • web前端面试题(全)

    近来看到网上格式各样的web前端求职的面试题 接下来我用我的经验总结了一套在面试过程中高频率问到的面试题 希望能帮助各位求职者在求职的过程中顺利通过 废话不多说 直接说题 一 HTML5部分 1 说一下对css盒模型的理解 答 css盒子模
  • 【总结一】现代密码学

    目录 1 密码学概述 1 1 密码学的基本概念 1 1 1 为什么要学密码学 1 1 2 什么是密码学 1 1 2 密码算法的基本模型 1 1 3 密码算法的分类 1 2 密码分析学 1 3 古典密码算法 1 3 1 置换密码 1 3 2