图解https原理
序
一般来说,在使用http协议进行数据交换时,数据都是明文传输的,这就给数据的安全性带来了很大隐患,中间很容易被截获,中间人很容易查看到里面的内容和篡改内容,所以,https出现了,它会对传输的内容进行加密,让数据传输变得更安全,减少遭受中间人攻击的可能。
人物介绍
王尼玛:单身汪,打算今天和他的女神王尼美表白(客户端)
王尼美:王尼玛喜欢的人(服务器)
隔壁老王:喜欢搞事的人(中间人)
不用加密的后果
王尼玛给尼美发了条我爱你的信息,但被隔壁老王截获了,老王心生一计,于是把信息替换成了我恨你,尼美看到后非常生气,于是把尼玛拉黑了
这个故事告诉我们数据传输一定要好好加密,确保两人之间的交流只有自己和对方能看懂,同时别人也不能乱改,那么怎么加密呢
https如何加密
对称加密
对称加密:产生一个密钥,可以用其加密内容,也可以用它来解密内容
在这种加密方式中,王尼玛会先向王尼美询问密匙,然后王尼美告知密匙,之后的内容都会使用这个密匙加密
但这种方式并不靠谱,因为中间人一样可以拿到密钥,依然可以进行加密和解密,也依然可以篡改内容
因为老王保存了秘钥,所以成功的替换了内容
所以这种加密方式并不靠谱,那么其他方式呢
非对称加密
非对称加密是指产生一对密钥,一个用于加密,一个用于解密
通讯方式如下
王尼美会先生成一对秘钥,假设其中公钥用来加密,私钥用来解密,王尼玛用这个公钥来加密,这样只有保存私钥的王尼美能解密,保证了王尼玛的信息不会被其他人读懂
但是问题是,王尼美的回复王尼玛却看不懂了,因为他没有私钥不能解密
非对称加密+对称加密
为了解决尼玛同学看不到女神回复的问题,又有了第三种加密通讯方式
在这个通讯方式里,王尼玛生成一个秘钥(用于对称加密),尼美生成一组秘钥(用于非对称加密),在开始通信时,尼美先把自己的公钥发给尼玛,尼玛收到后,把自己的秘钥通过尼美的公钥加密后,再发回给尼美,之后双方就使用王尼玛的秘钥进行通信
这种加密虽然安全性上升了不少,但是也会被破解
首先,隔壁老王拦截王尼美的公钥,然后把自己的公钥发给王尼玛
然后王尼玛会用隔壁老王的公钥进行加密,老王有对应的私钥,所以可以进行解密,然后老王再用尼美的公钥重新加密信息,重新发给尼美
然后现在情况就和只用对称加密的一样了,老王依旧可以查看,篡改信息
CA为中介的加密
为了能顺利把王尼美的公钥交给王尼玛,这时就轮到CA出场了,CA的全称是Certificate Authority,即证书颁发机构,是可以信任的第三方机构。
CA会生成一对秘钥,其中公钥用于解密,私钥用于加密,CA机构的公钥是公开的,也就是说任何人都可以解密,操作系统和浏览器都会内置常见受信任的CA机构的公钥。
如果要使用CA机构,首先需要生成一张数字证书(Digital Certificate)
一般来说,数字证书会包括下面的内容
- 网站域名
- 证书颁发机构
- 用认证机构私钥加密过的服务器公钥
- 用认证机构私钥加密过的证书签名
其中证书签名会通过证书里的一些信息生成出来
证书签名的算法是公开的,它的目的,是为了让每一个拿到证书的终端,可以验证签名是否被篡改
因为证书中的服务器公钥、证书签名是通过CA的私钥加密的,所以其他终端只能通过CA的公钥解密读取,但是无法篡改和伪造证书,因为其他终端没有颁发机构的私钥,所以无法对篡改过后的证书进行再次加密,如果篡改了,证书签名就会不一致从而验证失败。
浏览器会先对服务器的CA证书进行验证
如果证书被篡改会验证失败
后续的交流
因为后续交流时,中间人拿不到用于加密的对称加密的秘钥,所以后续的通讯都无法被解密和篡改