[现代密码学] Crypto 知识点总结(古典密码&&对称加密&&hash函数)

  • Post author:
  • Post category:其他




一 . 常见加解密



SM1-4

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。



二. 古典密码



代换密码

分类:

  • 移位(凯撒)密码

    在这里插入图片描述

  • 仿射密码

    在这里插入图片描述

  • 单表代换

  • 多表代换

在这里插入图片描述



置换密码

在这里插入图片描述

在这里插入图片描述



Hill密码

在这里插入图片描述

在这里插入图片描述



转轮密码

恩格码机



代换密码的唯密文攻击

  • 1.统计攻击
  • 2.重合指数法



例题

  1. 密码分析可分为那几类,它们的含义是什么?

    根据密码分析者可能取得的分析资料的不同,密码分析(或称攻击)可分为下列四类:

    1)唯密文分析(攻击),密码分析者取得一个或多个用同一密钥加密的密文;

    2)已知明文分析(攻击),除要破译的密文外,密码分析者还取得一些用同一密钥加密的明密文对;

    3)选择明文分析(攻击),密码分析者可取得他所选择的任何明文所对应的密文(当然不包括他要恢复的明文),这些明密文对和要破译的密文是用同一密钥加密的;

    4)选择密文分析(攻击),密码分析者可取得他所选择的任何密文所对应的明文(要破译的密文除外),这些密文和明文和要破译的密文是用同一解密密钥解密的,它主要应用于公钥密码体制。
  2. 移位密码,仿射密码,单表代换密码都没有破坏明文的频率统计规律,可以直接用统计分析法

    在这里插入图片描述
  3. 字母频率分析法对(单表代换密码)算法最有效

    在这里插入图片描述



例题

在这里插入图片描述

在这里插入图片描述



三. 对称加密算法

引自合天网安实验室:https://www.hetianlab.com/expc.do?ce=7bbc91e0-a9b3-4af9-a108-ce94117ee430
以及现代密码学(谷利泽版)



分组密码

设计思想:

  • 混淆:明文/密钥和密文之间的关系复杂
  • 分组:明文/密钥的每一个比特都影响密文的每一个比特



DES算法(数据加密标准)



1. Feistel结构

明文和密文分组长度为64Bit,密钥长度56bit(密钥空间2^56)

算法包括:迭代加密和密钥编排

在这里插入图片描述

  • IP置换(初始置换)

    根据初始置换表,将明文数据移到该数据所在位置

    在这里插入图片描述

    从上表我们可以总结出,初始置换表的规律其实就是(其实不用太在意这个规律):

    a. 偶数与奇数分开(1~64),然后分为上下两部分,分布在置换表中,偶数在上,奇数在下。

    b. 在偶数与奇数内部,又遵从“从右到左,从上到下,从小到大”的排列。

实际中加密的是二进制数据,为直观展示这里用字母代替

在这里插入图片描述

置换完

在这里插入图片描述

至此我们便得到了初始置换之后的数据

  Data=“5XPHzrjb7ZRJBtld91TLDvnf=3VNFxph4WOGyqia6YQI(i)Askc80SKCume+2UMEwog”

  L0 = “5XPHzrjb7ZRJBtld91TLDvnf=3VNFxph”

  R0 = “4WOGyqia6YQI(i)Askc80SKCume+2UMEwog”


2. 轮函数

在这里插入图片描述

函数 f主要对数据右半部分R进行操作

a. 先对其进行扩展置换,使其变为48位的数据,

b. 然后生成的数据再与子密钥进行异或运算,

c. 再以异或运算后的48位数据进行S盒代替,将48位的数据,转换为32位的数据,

d. 再进行P盒置换,生成32位的数据

e. 最后将P盒置换生成的数据与本轮运算的L进行异或,生成新的R。

f. 而新的L是直接由本轮的R进行替换



3. 密钥编排算法
  • 子密钥K的生成

    在这里插入图片描述

    假设初始64位密钥:

    “abcdefgh ijklmnop qrstuvwx yzABCDEF GHIJKLMN OPQRSTUV WXYZ0123 456789+=”

    红色部分为奇偶校验位,不参与加密算法

在这里插入图片描述

初始压缩置换后:

在这里插入图片描述

可以看出压缩置换1的规律:

在这里插入图片描述

压缩置换1接下来的是拆分:

  K0=“4WOGyqia5XPHzrjb6YQI(i)Askc7ZRJ+2UMEwog91TLDvnf80SKCumeBtld”

  C0=“4WOGyqia5XPHzrjb6YQI(i)Askc7ZRJ”

  D0=“+2UMEwog91TLDvnf80SKCumeBtld”
  
  拆分之后我们得到C0、D0,再然后就是循环左移,求出C1、D1:

根据”轮数和左移位数”的对应表,第一轮得到

  C1=“WOGyqia5XPHzrjb6YQI(i)Askc7ZRJ4”

  D1=“2UMEwog91TLDvnf80SKCumeBtld+”

如上,左移的同时还要保持位数不变,所以移动的数据又补充到后面。

C1D1= “WOGyqia5XPHzrjb6YQI(i)Askc7ZRJ42UMEwog91TLDvnf80SKCumeBtld+”

在这里插入图片描述

在这里插入图片描述

压缩置换2

在这里插入图片描述

得到子密钥K1

在这里插入图片描述

K1=“jYH7WqG4bisPcI(i)zyR56aJArOvBM1KdUDe0wC8uL+otSnm92E”

  • 扩展置换E

    将数据R(32位),按照每4位一组,拆分成8个组,如图,左右黑色的两列是扩展时添加的数据,中间的就是分组后的数据R,表中的数字代表数据R中的位置。分成8组织后,遵循这样的一个规则:每一组的头部添加本组数据上一组的尾部,每一组的尾部添加本组数据下一组的头部。即第一组数据,前面添加的是最后一组的最后一位数据,后面添加的是第二组的第一位数据…以此类推

    在这里插入图片描述

    因此,对R0进行扩展置换

    R0=“4WOGyqia6YQI(i)Askc80SKCume+2UMEwog”

    在这里插入图片描述

    之后我们便得到了扩展到48位的R0:

    R0=“g4WOGYGYqia6a6YQI(i)AI(i)Askc8c80SKCKCume+e+2UMEMEwog4”

扩展置换E结束之后,我们要进行的就是K1与R0的异或运算

  • S盒代替

    S盒代替的作用,就是将我们上一步,R0与K1异或后得到的48位数据压缩为32位数据。

我们前面扩展置换后得到的R0是48位的数据,我们的S盒有8个,那么我们就需要将得到的R0平均分为8组,每组对应一个S盒。

每一组的数据长度为6位,假设第一组的二进制数据为:“100110”

那么,我们取第一位与最后一位,组成行数:“10”=2

取中间四位,组成列数:“0011”=3

那么,在对应的S1盒中,取2行3列的数据(第3行第4列):8,转换为2进制:“1000”

那么就将这个得到的4位二进制数据,代替原来第一组的6位数据,这样一来,等8个S盒全部代替完毕,我们就得到32位的数据。

在这里插入图片描述

  • P盒置换

    在这里插入图片描述

    至此我们便得到了f(R0,K1),只要再与L0进行异或运算,就得到了第一轮运算最终的R1,然后再将R0的值赋给L1,就完成了第一轮的运算,得到了L1,R1。


4. 末置换

经过16次的运算,我们在函数f的最后,会得到“L16、R16”,这正是我们需要的,然后将L16与R16合并,但是与之前的步骤中的合并不同,此次合并需要先交换二者的位置,也就是应该是R16 L16。

在这里插入图片描述



5. 安全增强

(1)穷举搜索攻击

目标:给定输入输出对 (m i , c i = E(k, m i )) i=1,…,3 ,寻找密钥 k.

(2)3DES

令 E : K × M ->  M 是一个分组密码
定义 3E: K^3 × M ->M 为 
3E ( (k 1 ,k 2 ,k 3 ), m ) =E(k 3 ,E (k 2 , E(k 1 , m)))
密钥长度 = 3 × 56 = 168 bits ( 穷举攻击复杂度≈2 ^118)

在这里插入图片描述

参考文章:

DES 安全性&3DES

,

三重DES原理



AES算法(高级加密标准)



对称加密流程

分组加密算法:明文(128/256bit)和密文分组(128/192/256bit)可变长度

SPN结构:轮函数包括:代换层-置换层-密钥混合层

密钥长度:128bit(密钥空间2^128) 10轮

在这里插入图片描述

包含4个步骤

  • 字节代替

    字节代替(SubBytes)的目的是通过S盒完成一个字节到另外一个字节的映射转换,字节替换为这个密码系统提供了替换性。

    在这里插入图片描述

  • 行移位

    行移位(ShiftRows)步骤过程中,每一行都向左循环位移某个偏移量。在AES中(区块大小128位),第一行维持不变,第二行里的每个字节都向左循环移动一格,第三行里的每个字节都向左循环移动二格,第四行里的每个字节都向左循环移动三格。经过行移位之后,矩阵中每一竖列,都是由输入矩阵中的每个不同列中的元素组成。

    在这里插入图片描述

  • 列混淆

    在这里插入图片描述

    在这里插入图片描述

    这里有一个错误,初始矩阵为,另外列混淆中第二项02·6E=11011100

    在这里插入图片描述

    有限域上的字节运算:

    在这里插入图片描述

  • 轮密钥加

在这里插入图片描述

在这里插入图片描述



AES的密钥编排算法
  • 密钥扩展:



AES的解密变换

在这里插入图片描述

在这里插入图片描述



分组密码的运行模式



1. ECB模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



2. CBC模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



3. CFB模式

反馈是指前一个密文分组的值会被送到密码算法的输入端。

在ECB模式和CBC模式中,明文分组都是通过密码算法进行加密的,然而,在CFB模式中,明文分组并没有通过密码算法来直接进行加密。

明文分组和密文分组之间并没有经过“加密”这一步骤。(加解密过程只调用加密算法这一个过程)在CFB模式中,明文分组和密文分组之间只有一个XOR。

在这里插入图片描述

在这里插入图片描述

j通常为8

在这里插入图片描述

在这里插入图片描述

参考文章:

CFB原理



4. CTR模式(计数器)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



例题

  1. 1977年1月 DES正式成为美国联邦政府信息处理标准,即FIPS-46标准,1997年撤销,采用AES算法,新算法的分组长度为128比特,支持可变密钥长度128,192,256比特。

    1999年最终选定Rijndanel算法为新的数据加密标准。
  2. WAPI标准是中国颁布的无线局域网安全国家标准

    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



流密码

流密码核心:伪随机数生成器(PRG)

LFSR :线性反馈移位寄存器(为线性函数)

密钥流{k}的周期一定要大

在这里插入图片描述

例题:

在这里插入图片描述

在这里插入图片描述



RC4算法(序列密码)

  • KSA
//S 表随机化
s[i] 数据
t[i] 密钥
j = 0
i = 0
for i in range(n):
	j = (j+s[i]+t[i])%n;
	s[i],s[j]=s[j],s[i];
	
  • PRGA(伪随机数生成算法)
i = (i+1)%n
j =  (j+s[i])%n
swap(s[i],s[j])
t = (s[i]+s[j])%n
k = s[t]
  • RC4应用

    在这里插入图片描述


例题

在这里插入图片描述

在这里插入图片描述

13. 一般的,一个反馈移位寄存器由两部分组成:移位寄存器和反馈函数

在这里插入图片描述



四. Hash函数



SHA-256算法

在这里插入图片描述



例题

在这里插入图片描述

hash函数的抗二次原像性:对于给定的消息M1,发现另一个消息M2,使得H(M1)=H(M2)在计算上是不可行的。

抗碰撞性:找到任意一对不同的M1和M2,使得H(M1)=H(M2)在计算上是不可行的。

在这里插入图片描述



版权声明:本文为qq_45834505原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。