密码技术学习——《图解密码技术》笔记(一)
第3章 对称密码(共享密钥密码)——用相同的密钥进行加密和解密
一次性密码本——绝对不会被破译的密码
原理: 将明文与一串随机的比特序列进行XOR运算。
完全随机,密钥空间是所有可能的01组合,所以就算破译成功了,我们也无法判断它是正确的明文。比如正确明文是code,但破译会出现从aaaa到zzzz,其中不乏有意义的book,cook等“疑似明文”,由于是完全随机带来的密钥空间有全部可能,我们无法判断真正的明文是什么。
理论上无法破译
不过这样密钥的传送也成了问题,假设我们能够安全的传送密钥,那本身这个方法可以用来安全传递我们的消息了,所以现实中除了特工配送密钥完成元首热线通话以外,一次性密码本没有很高的应用价值。
DES
Feistel网络的一轮,右侧直接向下变为输出,右侧与轮密钥XOR生成左侧。
多轮操作,每轮反转左右。
解密就是重复过程(两次XOR抵消从而得到这一轮前的输入)。
三重DES
如名,不过是DES加密->DES解密->DES加密(由IBM公司提出,用来兼容普通DES,比如三层都是同样的DES密钥,就是普通DES了)
解密过程为DES解密->DES加密->DES解密
目前在银行等机构还在使用,但处理速度不高,除了特别重视向下兼容性的情况以外,很少被用于新的用途。
AES
取代DES在2000成为新的标准,选定的算法名为Rijndael ### Rijndael Rijndael算法也是由多个轮构成的,其中每一轮分为SubBytes(逐字节替换)、ShiftRows(平移行)、MixColumns(混合列)、AddRoundKey(与轮密钥进行XOR) 共四个不中。DES使用Feistel网络作为基本结构,而Rijndael使用SPN结构。
- 加密:SubBytes -> ShiftRows -> MixColumns -> AddRoundKey
解密:AddRoundKey -> InvMixColumns -> InvShiftRows -> InvSubBytes
破译:由于其过程可以由数学公式来表达,那么理论上可以通过数学运算来求解,意味着Rigndael能够通过数学方法进行破译。不过现在为止还没有出现针对Rigndael的有效攻击。
第4章 分组密码的模式——分组密码是如何迭代的
- 模式总结表格
模式 名称 优点 缺点 备注 ECB模式 Electronic CodeBook 电子密码本模式 - 简单
- 快速
- 支持并行计算(加密、解密)
- 明文中的重复排列会反映在密文中
- 通过删除、替换密文分组可以对明文进行操作
- 对包含某些比特错误的密文进行解密时,对应的分组会出错
- 不能抵御重放攻击
不应使用 CBC模式 Cipher Block Chaining 密文分组链接模式 - 明文的重复排列不会反映在密文中
- 支持并行计算(仅解密)
- 能够解密任意密文分组
- 对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错
- 加密不支持并行计算
CRYPTREC推荐
《实用密码学》推荐CFB模式 Cipher-FeedBack 密文反馈模式 - 不需要填充(padding)
- 支持并行计算(仅解密)
- 能够解密任意密文分组
- 对包含某些错误比特的密文进行解密时,第一个分组的相应比特以及后一个分组的全部比特会出错
- 加密不支持并行计算
- 不能抵御重放攻击
CRYPTREC推荐 OFB模式 Output-FeedBack 输出反馈模式 - 不需要填充(padding)
- 可事先进行加密、解密的准备
- 加密、解密使用相同结构
- 对包含某些错误比特的密文进行解密时,只有明文中相应的比特会出错
- 不支持并行计算
- 主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转
CRYPTREC推荐 CTR模式 CounTeR 计数器模式 - 不需要填充(padding)
- 可实现进行加密、解密的准备
- 加密、解密使用相同的结构
- 对包含某些错误比特的密文进行解密时,只有明文中相对应的比特会出错
- 支持并行计算(加密、解密)
主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转 CRYPTREC推荐
《实用密码学》推荐
第5章 公钥密码——用公钥加密,用私钥解密
密钥配送问题
- 通过事先共享密钥来解决(部分场景不现实)
- 通过密钥分配中心来解决(中心负担大,被破坏代价大风险高)
- 通过Diffie-Hellman密钥交换来解决(第11章)
- 通过公钥密码来解决(本章后续)
公钥密码
一些特征 - 发送者只需要加密密钥 - 接收者只需要解密密钥 - 解密密钥不可以被窃听者获取 - 加密密钥被窃听者获取也没问题
无法解决的问题 - 解决了密钥配送问题,但是无门需要判断所得到的公钥是否正确合法,这个问题被称为公钥认证问题(后面章节)。 - 速度是对称密的几百分之一,解决方法后面会讲到。
时钟运算
补充一些数论知识
除法:在模12的条件下两个数相乘为1,“类倒数”。可以发现规律,和12的最大公约数为1的数(5,7,11),即于12互质的数,存在倒数。
乘方:可以先模再乘,应用同余的性质。
对数:时钟运算中对数成为离散对数。能快速求出离散对数的算法到现在还没有被发现,Diffie-Hellman密钥交换协议以及ElGamal公钥算法中 就运用了离散对数。
RSA
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!