图解密码技术笔记
概述

古典密码
凯撒密码:
穷举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短
单向散列函数
根据任意长度的消息计算出固定长度的散列值
能够快速计算出散列值
消息不同散列值也不同,抗碰撞性
弱碰撞性
找到和该消息具有相同散列值的另外一条消息是非常困难的
强碰撞性
找到散列值相同的两条不同的消息是非常困难的






