目录
写在前面
原来如此,钥匙、锁工作原理大揭密,涨知识啦! (sortdoor.com)
加锁:加密
开锁:解密
锁的运行步骤:算法(算法固定)
关键部件的可变范围:密钥空间(密钥可变)
宇宙浩大,时间万物,统一于道,道即算法。
万物繁杂,不尽相同,呈现多态,在于密钥不同。宇宙之大,密钥空间无穷尽。
基本概念
明文/密文
加密/解密
破译/密码分析
算法
密钥
密码学家的工具箱:
对称密码:加密和解密使用同一密钥的方式
非对称密码(公钥密码):加密和解密使用不同密钥的方式
混合密码系统:对称密码与非对称密码结合起来的密码方式。
单向散列函数:
消息认证码:
数字签名:
伪随机数生成器:
隐写术与数字水印
密码隐藏的是内容,隐写术隐藏的是消息本身
(数字水印)
数字水印根据加载的载体可分为:
①图像水印。在图像数据上加载的水印。
②视频水印。在视频数据上加载的水印。
③音频水印。在音频数据上加载的水印。
④软件水印。在软件上加载的水印。
⑤文档水印。在文档上加载的水印。
隐写术-数字水印的原理、实现及应用 - 简书 (jianshu.com)
密码与信息安全常识
不要使用保密的密码算法
使用低强度的密码比不进行任何加密更危险
任何密码总有一天都会被破解
密码只是信息安全的一部分
历史上的密码
凯撒密码
密钥空间:26
算法:平移
破译:暴力破解(穷举搜索)
简单替换密码
密钥空间:26!=403291461126605635584000000
算法:替换
破译:频率分析
频率分析:先统计密文的字母频率---》选择一篇文章统计其字母频率---》两者对比---》替换
英格玛(Enigma)
算法:复式替换算法
密钥空间:
1》5个备选转子,5个里面选出3个:
5*4*3=60
2》每个转子有26种初始位置,3个转子共有:
26*26*26=17576
3》接线板共有10条接线,(每条接线连接两个字母,一共10对):
26!/(6!*10!*2~10)=150 7382 7493 7250
Total:1》*2》*3》=1 5896 2555 2178 2636 0000
弱点:
1》将通信密码连续输入两次
2》通信密码是人为选定
3》必须派发国防军密码本
英格玛机是什么构造原理?(就是2战德国的那个) - 芝士回答 (jingyanlib.com)
【科普】二战间谍战——英格玛密码机上(加密) (qq.com)
【中字】二战间谍战——英格玛密码机下(解密)_网易视频 (163.com)
对称密码
XOR
A XOR B XOR B=A 对同一对象两次XOR之后就会回到最初的状态。
如果所使用的蒙版是完全随机的比特序列,则使用XOR就可以将原来的图像掩盖起来。但如果蒙版中的比特序列的排列是可以被推测出来的,那么实质上图像就没有被真正掩盖。对于密码技术来说,“是否可以预测”是非常重要的一点。能够产生不可预测的比特序列,对于密码技术的贡献是巨大的。这种不可预测的比特序列就称为随机数。
一次性密码本
一次性密码本在理论上无法破译。
一次性密码本为什么没有被使用:
》密钥的配送
》密钥的保存
》密钥的重用
》密钥的同步
》密钥的生成
一次性密码本孕育出了流密码
流密码 Stream Cipher - 知乎 (zhihu.com)
DES
差分分析
线性分析
三重DES
AES
选拔出来的
SPN结构
AES加密算法的详细介绍与实现_TimeShatter的博客-优快云博客_aes加密
密码分组的模式
分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文加密。而迭代的方法就称为分组密码的模式。
ECB
对EBC模式的攻击:攻击者截获密文后无需破译密码就能够操纵明文。
特别适合数据较少的情况,对于很长的信息或者具有特定结构的信息,其大量重复的信息或固定的字符开头将给密码分析者提供大量的已知明密文对。若明文不是完整的分组,ECB需要进行填充。
CBC
由于加密算法的每次输入和本明文组没有固定的关系,因此就算有重复的明文组,加密后也看不出来了。为了配合算法的需要,有一个初始向量(IV)。与ECB一样有填充机制以保证完整的分组。
CFB
重放攻击
OFB
CFB顺序执行。OFB可并行执行。
CTR
计数器使用与明文分组规模相同的长度,计数器首先被初始化位某一数值,然后随着消息块的增加计数器加1。加密时,计数器加密后与明文分组异或得到密文分组,没有链接。解密时必须知道初始计数器的值。
若明文的最后一个分组长度小于分组整长,无需填充,类似CFB做移位和丢弃操作即可。
CRT模式的优点:
1、硬件效率高,同三种链接模式相比,CTR能够并行加密和解密。
2、软件效率高,可以充分利用其并行特性进行并行计算
3、由于加密解密过程不依赖明文和密文,因此可以做预处理以提高效率
4、可以随机访问某一明文或者密文分组进行部分加密和解密
模式比较表
(七)分组密码的五大工作模式 - 知乎 (zhihu.com)
分组密码的工作模式 - block2016 - 博客园 (cnblogs.com)
公钥密码
解决密钥配送问题
用公钥加密,用私钥解密。公钥和私钥一一对应,统称密钥对。密钥对中的两个密钥有非常密切的关系----数学上的关系----因此公钥和私钥是不能分别单独生成的。
无法解决的问题
公钥密码解决了密钥配送问题,但这并不意味着它能解决所有问题,因为我们需要判断所得到的公钥是否正确合法,这个问题被称为公钥认证问题。
公钥密码还有一个问题就是,它的处理速度只有对称密码的几百分之一。
RSA
密钥对生成过程示例:
RSA算法原理(一) - 阮一峰的网络日志 (ruanyifeng.com)
RSA算法原理(二) - 阮一峰的网络日志 (ruanyifeng.com)
混合密码系统
用堆成密码提供速度,用公钥密码保护回话密钥
单向散列函数
获取消息的“指纹”
单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以又来检查消息的完整性。
特点
一 根据任意长度计算出固定长度的散列值
二 能够快速计算出散列值
三 消息不同,散列值也不同。密钥技术中所使用的单向散列函数,都需要具备抗碰撞性。
四 具备单向性
实际应用
检测软件是否被篡改
基于口令的加密
消息认证码
数字签名
伪随机数生成器
一次性口令
例子
消息认证码
消息的认证指的是“消息来自正确的发送者”
消息认证码是一种确认完整性并进行认证的技术。简称MAC。
消息认证码是一种与密钥相关联的单向散列函数。
使用了共享密钥,存在密钥配送问题。
数字签名与公钥密钥
的密钥使用方式对比:两者是相反的。
数字签名的方法
直接对消息签名的方法
对消息的散列值签名的方法