图解密码技术笔记
概述
古典密码
凯撒密码:
穷举26种情况即可
简单替换密码:
频率分析(可以参考字母频率表)
字母 | 英语中出现的频率 | 首字母 | 单词频率 |
---|---|---|---|
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网络
加密流程图
解密流程图
性质
加密轮数可以任意增加
加密是无论使用任何函数作为论函数都可以正确解密
加密和解密可以用完全相同的结构来实现
三重DES
大意上就是说为了增加DES的强度,将DES重复三次得到的密码算法
加密流程图
密钥名称
三重DES的密钥长度为56 * 3 = 168比特
特别的,当所有密钥都是用相同的比特序列,其等价于普通的DES
如果密钥1和密钥3使用相同的密钥加密,而密钥2使用不同的密钥解密,这种三重DES被称为DES-EDE2
如果密钥1、密钥2、密钥3全部使用不同的比特序列的三重DES成为DES-EDE3
解密流程图
密钥3、密钥2、密钥1执行解密、加密、解密过程
AES算法
加密流程
解密流程
小知识
被称为对称密码的原因是加密的密钥和解密的密钥是相等的
对称密码长度达到512比特时,再继续增加密钥长度对于提高机密性已经没有什么实际作用了,只会让算法的速度变慢。
AES标准所选定的密码算法叫做Rijndael
当密钥长度为56比特时,平均尝试次数为2的55次方,大约相当于3.6E16
分组密码
分组密码的模式
ECB模式(电子密码本模式)
由于明文分组和密文分组是一一对应的关系,且各自独立地进行加密和解密
攻击者可以调换密文分组的顺序,即无需破译密码就能操纵明文(实现对明文的替换、复制和删除)
CBC模式(密文分组链接模式)
加密流程图
解密流程图
特点
如果密文分组中存在损坏的比特,仅仅会影响两个分组的密文
但是如果出现缺失或多余的情况,则后面的全部明文分组都会损坏
CFB模式(密文反馈)
加密流程
解密流程
攻击类型:重放攻击
由于密文与明文之间没有经过加密函数,而是仅仅参与了XOR计算,所以如果连续两次获取了密文,那么可以对相同位置进行置换,其中仅仅会使一组数据出错,而其后面剩余的将会被顶替成之前的明文。
OFB模式(输出反馈)
加密流程
解密流程
CTR模式(计数器模式)
加密算法
解密算法
分组密码模式的比较
公钥密码
密钥的配送问题
通过事先共享密钥来解决
在人数很多的情况下,通信所需要的密钥数量也会增加
通过密钥分配中心来解决
通过Diffie-Hellman密钥交换来解决
通过公钥密码来解决
接收者将加密密钥发送给发送者,手中留有解密密钥
中间人攻击
其他公钥密码
EIGamal方式
mod N下求离散对数的困难度
密文长度会变成明文的两倍
Rabin方式
mod N下求平方根的困难度
椭圆曲线密码(ECC)
椭圆曲线上的特定点进行特殊的乘法运算
所需的密钥长度比RSA短
单向散列函数
根据任意长度的消息计算出固定长度的散列值
能够快速计算出散列值
消息不同散列值也不同,抗碰撞性
弱碰撞性
找到和该消息具有相同散列值的另外一条消息是非常困难的
强碰撞性
找到散列值相同的两条不同的消息是非常困难的