概述

image-20211027003542769

古典密码

凯撒密码:

穷举26种情况即可

简单替换密码:

频率分析(可以参考字母频率表)

image-20211027004404820

字母 英语中出现的频率 首字母 单词频率
a 8.167% a 11.602%
b 1.492% b 4.702%
c 2.782% c 3.511%
d 4.253% d 2.670%
e 12.702% e 2.007%
f 2.228% f 3.779%
g 2.015% g 1.950%
h 6.094% h 7.232%
i 6.966% i 6.286%
j 0.153% j 0.590%
k 0.772% k 0.597%
l 4.025% l 2.705%
m 2.406% m 4.374%
n 6.749% n 2.365%
o 7.507% o 6.264%
p 1.929% p 2.545%
q 0.095% q 0.173%
r 5.987% r 1.653%
s 6.327% s 16.671%
t 9.056% t 7.755%
u 2.758% u 1.487%
v 0.978% v 0.649%
w 2.360% w 6.753%
x 0.150% x 0.034%
y 1.974% y 1.620%
z 0.074% z 0.037%

英文的字母频率排列顺序: ETAON RISHD LFCMU GYPWB VKJXQ Z

对称加密算法

Feistel网络

加密流程图

image-20211027234924409

解密流程图

image-20211027235003431

性质

加密轮数可以任意增加

加密是无论使用任何函数作为论函数都可以正确解密

加密和解密可以用完全相同的结构来实现

三重DES

大意上就是说为了增加DES的强度,将DES重复三次得到的密码算法

加密流程图

image-20211028000204815

密钥名称

三重DES的密钥长度为56 * 3 = 168比特

特别的,当所有密钥都是用相同的比特序列,其等价于普通的DES

如果密钥1和密钥3使用相同的密钥加密,而密钥2使用不同的密钥解密,这种三重DES被称为DES-EDE2

如果密钥1、密钥2、密钥3全部使用不同的比特序列的三重DES成为DES-EDE3

解密流程图

密钥3、密钥2、密钥1执行解密、加密、解密过程

image-20211028000943702

AES算法

加密流程

image-20211028002021376

解密流程

image-20211028002051472

小知识

被称为对称密码的原因是加密的密钥和解密的密钥是相等的

对称密码长度达到512比特时,再继续增加密钥长度对于提高机密性已经没有什么实际作用了,只会让算法的速度变慢。

AES标准所选定的密码算法叫做Rijndael

当密钥长度为56比特时,平均尝试次数为2的55次方,大约相当于3.6E16

分组密码

分组密码的模式

image-20211028003309371

ECB模式(电子密码本模式)

由于明文分组和密文分组是一一对应的关系,且各自独立地进行加密和解密

攻击者可以调换密文分组的顺序,即无需破译密码就能操纵明文(实现对明文的替换、复制和删除)

CBC模式(密文分组链接模式)

加密流程图

image-20211028003921094

解密流程图

image-20211028003940442

特点

image-20211028221904204

如果密文分组中存在损坏的比特,仅仅会影响两个分组的密文

但是如果出现缺失或多余的情况,则后面的全部明文分组都会损坏

CFB模式(密文反馈)

加密流程

image-20211029010250075

解密流程

image-20211029010311270

攻击类型:重放攻击

由于密文与明文之间没有经过加密函数,而是仅仅参与了XOR计算,所以如果连续两次获取了密文,那么可以对相同位置进行置换,其中仅仅会使一组数据出错,而其后面剩余的将会被顶替成之前的明文。

image-20211029011242175

OFB模式(输出反馈)

加密流程

image-20211118001459832

解密流程

image-20211118001518549

CTR模式(计数器模式)

加密算法

image-20211118001936552

解密算法

image-20211118001949549

分组密码模式的比较

image-20211118002723153

image-20211118002734822

公钥密码

密钥的配送问题

通过事先共享密钥来解决

在人数很多的情况下,通信所需要的密钥数量也会增加

通过密钥分配中心来解决

image-20211118003959400

通过Diffie-Hellman密钥交换来解决

通过公钥密码来解决

接收者将加密密钥发送给发送者,手中留有解密密钥

image-20211118004552269

中间人攻击

image-20211118005908590

其他公钥密码

EIGamal方式

mod N下求离散对数的困难度

密文长度会变成明文的两倍

Rabin方式

mod N下求平方根的困难度

椭圆曲线密码(ECC)

椭圆曲线上的特定点进行特殊的乘法运算

所需的密钥长度比RSA短

单向散列函数

根据任意长度的消息计算出固定长度的散列值

能够快速计算出散列值

消息不同散列值也不同,抗碰撞性

弱碰撞性

找到和该消息具有相同散列值的另外一条消息是非常困难的

强碰撞性

找到散列值相同的两条不同的消息是非常困难的

具备单向性