[关闭]
@zhongdao 2021-09-26T11:32:15.000000Z 字数 1949 阅读 3324

密码学算法应用机制

密码学算法 图示


0. 前言

一般人往往认为"保密的密码算法比较安全", 然而密码界的常识却是"不要使用保密的密码算法".

本文的插图主要来自图解密码技术一书, 也有google里搜索到的相关图片. 因为内容比较多,虽然都是图片和示范,适合产品了解相关的产品流程图细节,但是不容易短时间内把内容串起来理解.
推荐一个简单易懂的应用介绍:
What is a Digital Signature?
http://www.youdzone.com/signature.html
看完之后对整体概念有介绍, 然后再把下面的内容作为逐个的细节进行深入的了解.

1. 对称密码(共享秘钥密码)

对称密码(symmetric cryptography)是指在加密和解密时使用同一秘钥的方式.

1.1 对称秘钥

加解密展示:
image_1busqc4ka1tr8bin1tri1kh81htg3t.png-148.5kB
加解密过程:
image_1buspgoe2dbh1rkj1gut1m4n1lph26.png-38.4kB

1.2 中间人攻击引发的对称秘钥配送问题

如果要在2个不同的人之间进行加密的通讯,那么秘钥配送就是一个问题,会引发中间人的窃取.
秘钥配送问题
image_1busopidoa451v8o18f21ppago39.png-76.9kB
公钥的意义在于,解决了中间人攻击,共享秘钥的配送问题.

2. 公钥密码

公钥密码(public-key cryptography)是指再加密和解密时使用不同秘钥的方式. 因此又称为非对称密码(asymmetric cryptography).
加解密展示:
image_1busp3une4uco4q1qgb1stq75tm.png-52.6kB
加解密过程:
image_1buspifrsc77ebjbmu1pph4302j.png-41.2kB

通过公钥加密发送消息过程:
image_1busovqnp1g1d5n4ommi5e1qfl9.png-78.8kB

2.1 RSA

RSA的加密解密
image_1busqt1091il0lhchl67bnhki4n.png-36.8kB
RSA密钥对的生成
image_1busqv4tp4lrj31n6kdk81vj75h.png-42.1kB

image_1busqujcp6kq13kidgd1rmeheg54.png-41.1kB

2.1.1 RSA密钥对生成, 加密,解密的过程实例

...

2.1.2 RSA与质数

质数会不会用光呢?
512比特能容纳的质数数量比整个宇宙的原子还多, 生成质数组合撞车的可能性可以认为是没有的.

2.2 针对公钥的中间人攻击

公钥没有被破译, 但是仅靠公钥无法防御中间人攻击.
image_1busrr6olg9a10vo15js1v0312ou6o.png-89.4kB
所以需要认证对方的公钥来确认身份.

3. 单向散列(哈希)函数

单向散列函数可以获取消息数据的指纹,通过对比指纹,就可以知道两条消息是否一致.
特点:
1. 根据任意长度的消息计算出固定长度的散列值.
2. 计算时间必须要短.
3. 消息不同,散列值不同.哪怕只有1比特的变化,也要有很高的概率产生不同的散列值. (抗碰撞性, collision resistance).
4. 单向性, 无法通过散列值反算出消息的性质.

散列函数展示:
image_1busqn3gg1co11c8icnr1ekg1nik4a.png-73.4kB

散列函数应用于密码验证图示:
image_1but0hdv82pe14gf9fj1q4o1khd9.png-201.9kB
散列函数应用于软件未篡改验证图示:
image_1but11ms911qm1jslmteu2e7ltm.png-76.5kB

4. 数字签名

4.1 公钥密码与数字签名的关系

4.1.1 回顾公钥密码的机制:

image_1but17sn7nam1mmj6651fmp193r13.png-44.1kB

image_1but1cst2jff1lpv4ng1vinno52n.png-37.1kB

4.1.2 数字签名的机制:

image_1but18fqm1kro1tns12729rsiqu1g.png-43.7kB

image_1but1bo6rru41a5pulb19f42152a.png-36.5kB

加密相当于生成签名,解密相当于验证签名.

数字签名的应用:
image_1busr788712vp1gugaf27r6av5u.png-50kB

4.1.3 签名和验证过程:

签名与验证展示:
image_1busrmi2359m1pp1dijkgk1rm06b.png-184.8kB
签名与验证过程:
image_1but1isoftps1cej10f517qi17o34.png-76.7kB

对消息的散列值进行签名:
公钥密码算法比较慢, 通过生成消息的散列值,然后再签名, 比较轻松.
对消息的散列值签名和验证的时间过程:
image_1but1lj7jr8r1hqm13r61e5agnd3h.png-98.9kB

4.2 用RSA实现数字签名

image_1but20hj51u7hk821pe7eubsjh3u.png-39.1kB

针对公钥密码的中间人攻击(man-in-the-middle attack)对数字签名也颇具威胁.

5. 混合密码

用于加密内容的秘钥和用于加密秘钥的秘钥:
image_1but2a450paehoj7jn1d5f1j0155.png-42kB
混合密码加解密示意:
image_1busd2bt8nrh9150vpe11rgrm.png-107.4kB
用混合密码加密过程:
image_1but02p1vqgr1lb1f5a1laetep7l.png-83.7kB
用混合密码解密过程:
image_1but04mrm90s16kj19oo1ja31u9f82.png-81.6kB

基于口令的秘钥(password based encryption):
image_1but2ee1h13ot1u4mgi110ihvbm5i.png-92.1kB
PBE加密:
image_1but2f7rl1n1vlmck204r11ru15v.png-92.1kB
PBE解密:
image_1but2gb7a12v011k2vime33rqc6c.png-86kB
其中盐Salt是用于防止字典攻击的.
image_1but2kej9eie1d7sm01o2a1onq79.png-91.4kB

6. CA 与 PKI

6.1 CA认证机构协助完成认证与加密通讯的机制

认证机构必须是可信的.
image_1but2581q1gvokfs17l01vqdcp74b.png-73.6kB

6.2 PKI

PKI的组成要素与证书注册下载
image_1but27ad713klvjm1gfd12od1iau4o.png-45.6kB

7. PGP

PGP的加密过程:
image_1but2tnfa1uhv8n69tdovg170a86.png-101.3kB
PGP的解密过程:
image_1but2uvuc41j1tuv1hlk1nc81nc78j.png-99.6kB
PGP的签名过程:
image_1but30e6alpj1nh92g9ntubo90.png-89.5kB
PGP的验证签名过程:
image_1but31ci5d30cc61uft19ik1uqb9d.png-86.3kB

签名并加密过程:
image_1but32ejgc2r1n2h1ngq3hl72f9q.png-108kB
解密并验证签名过程:
image_1but33fub30pa11hs2k761ejva7.png-115.8kB

8. SSL/TLS 安全通信

image_1but36m1j2ot1idc1ub41e3i1u05bk.png-43.6kB
image_1but37f9vre61kf2nts2nk11pfc1.png-63.3kB

9. 密码技术与现代社会

9.1 密码学家的工具箱汇总

image_1but3ah12lun2fh5j142f1bmnce.png-107.2kB

9.2 密码技术就是压缩:

image_1but3c5uj4v1kml70v1iaier6cr.png-0.1kB
image_1but3evf71a41rmo1u5ffal1n7gdo.png-62kB

9.3 量子密码

总结

解决问题链:

问题: 机密性 秘钥配送 防止公钥伪造 证书本身合法 CA可信
解决办法: 秘钥 公钥私钥密码 证书证明 建立CA中心 对根CA的信任

最后追溯到对根CA的信任问题.

资料链接:

图解密码技术, 结城浩, 人民邮电出版社
google image

深入揭秘HTTPS安全问题&连接建立全过程
https://zhuanlan.zhihu.com/p/22142170

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注