最近在看HTTPS,觉得有一些东西需要系统化一下,这个博客系列打算分成以下几部分:
1. 常识:对称加密和非对称加密
2. HTTPS的细节
3. RSA算法的细节、证明、实例
这一篇谈谈基础的一些加密通信的常识。
对称加密
在通信中,双方的加密规则是相同的,即用同一种加密方法和同一个密钥来解析数据。
这样的做法存在的很大的问题是:怎么让对方知道自己的加密规则?
走路过去跟对方说悄悄话?(那不用干活了……)
给密钥加密,再发送过去?(那你要用什么可靠的方法来给密钥加密?)
如果郁于对称加密,就会陷入了“鸡生蛋,蛋生鸡”的循环论证了……
此路不通。
如何解决“分发密钥给接收数据的一方的”这个问题呢?
其实解决问题最好的方法就是——不要这样做。
如果双方可以拥有不同的密钥,然后有一份是公开的,大家都知道,那接收数据的一方自然也知道,就不存在“分发密钥”的问题了!
不对称加密
秘钥分为公私两份,公钥是公开的,私钥只被自己拥有(当然,自己泄露了,那就是自己的锅了)。
不对称加密方法的基本约束(个人总结)为:
- 私钥和公钥是数学相关的,但是只知道公钥,是几乎不可能推导出私钥的;
- 一份数据经过公钥加密,只能用私钥解密ÿ