@zhongdao
2021-09-26T11:32:15.000000Z
字数 1949
阅读 2936
密码学算法
图示
一般人往往认为"保密的密码算法比较安全", 然而密码界的常识却是"不要使用保密的密码算法".
本文的插图主要来自图解密码技术一书, 也有google里搜索到的相关图片. 因为内容比较多,虽然都是图片和示范,适合产品了解相关的产品流程图细节,但是不容易短时间内把内容串起来理解.
推荐一个简单易懂的应用介绍:
What is a Digital Signature?
http://www.youdzone.com/signature.html
看完之后对整体概念有介绍, 然后再把下面的内容作为逐个的细节进行深入的了解.
对称密码(symmetric cryptography)是指在加密和解密时使用同一秘钥的方式.
加解密展示:
加解密过程:
如果要在2个不同的人之间进行加密的通讯,那么秘钥配送就是一个问题,会引发中间人的窃取.
秘钥配送问题
公钥的意义在于,解决了中间人攻击,共享秘钥的配送问题.
公钥密码(public-key cryptography)是指再加密和解密时使用不同秘钥的方式. 因此又称为非对称密码(asymmetric cryptography).
加解密展示:
加解密过程:
通过公钥加密发送消息过程:
RSA的加密解密
RSA密钥对的生成
...
质数会不会用光呢?
512比特能容纳的质数数量比整个宇宙的原子还多, 生成质数组合撞车的可能性可以认为是没有的.
公钥没有被破译, 但是仅靠公钥无法防御中间人攻击.
所以需要认证对方的公钥来确认身份.
单向散列函数可以获取消息数据的指纹,通过对比指纹,就可以知道两条消息是否一致.
特点:
1. 根据任意长度的消息计算出固定长度的散列值.
2. 计算时间必须要短.
3. 消息不同,散列值不同.哪怕只有1比特的变化,也要有很高的概率产生不同的散列值. (抗碰撞性, collision resistance).
4. 单向性, 无法通过散列值反算出消息的性质.
散列函数展示:
散列函数应用于密码验证图示:
散列函数应用于软件未篡改验证图示:
加密相当于生成签名,解密相当于验证签名.
数字签名的应用:
签名与验证展示:
签名与验证过程:
对消息的散列值进行签名:
公钥密码算法比较慢, 通过生成消息的散列值,然后再签名, 比较轻松.
对消息的散列值签名和验证的时间过程:
针对公钥密码的中间人攻击(man-in-the-middle attack)对数字签名也颇具威胁.
用于加密内容的秘钥和用于加密秘钥的秘钥:
混合密码加解密示意:
用混合密码加密过程:
用混合密码解密过程:
基于口令的秘钥(password based encryption):
PBE加密:
PBE解密:
其中盐Salt是用于防止字典攻击的.
认证机构必须是可信的.
PKI的组成要素与证书注册下载
PGP的加密过程:
PGP的解密过程:
PGP的签名过程:
PGP的验证签名过程:
签名并加密过程:
解密并验证签名过程:
解决问题链:
问题: | 机密性 | 秘钥配送 | 防止公钥伪造 | 证书本身合法 | CA可信 |
---|---|---|---|---|---|
解决办法: | 秘钥 | 公钥私钥密码 | 证书证明 | 建立CA中心 | 对根CA的信任 |
最后追溯到对根CA的信任问题.
图解密码技术, 结城浩, 人民邮电出版社
google image
深入揭秘HTTPS安全问题&连接建立全过程
https://zhuanlan.zhihu.com/p/22142170