目录
1.什么是https
首先,https不是http的复数形式
1.1.https概念
(1)产生背景
为什么会出现https,是因为http协议在传输数据的时候,数据容易被窃取和篡改,为了安全性,就产生了https协议,也就是在http协议的基础上加上一个加密层。
最重要的原因是:由于万恶的运营商,篡改里面的一些重要数据,成为运营商劫持。
(2)https是什么?
https是http协议加上一个加密层即可,剩下的和http协议一样,没有区别。
要学习https,就需要先学习http协议,在此基础上,只需要学习加密的过程即可
1.2.一些术语
既然需要加密,那就需要去了解关于加密的一些术语,来自《密码学》
把情书用木箱保护起来,送给女神,女神再用打开木箱,拿到情书。
(1)明文
表示真正要传输的数据,不做任何的掩饰或者加密
(2)密文
就是经过掩饰或者加密后的数据
(3)密钥
用来对明文进行加密的道具或者数据
(4)加密
将明文变成密文的过程称为加密
(5)解密
将密文变成明文的过程称为解密
(6)对称加密
加密和解密,使用同一个密钥
优缺点:加密解密速度快,但是安全性较低
(7)非对称加密
加密和加密,使用不同的密钥。其中分为公钥和私钥,都可以进行加密或者解密
优缺点:加密解密的过程较慢,但是安全性高
2.https如何加密
2.1.使用对称加密
https假设采用对称加密的方式
步骤:
(1)每个客户端向服务器发送自己采取的对称加密的密钥(明文传输)
(2)后续发送的数据都采取密文传输
缺点:
(1)密钥采取明文传输,黑客很容易获取到,信息从而被泄漏
(2)所以,都是采取非对称加密的方式
2.2.使用非对称加密
引入非对称加密,并不是直接对数据进行加密,而是在对称加密的基础上,对"对称密钥"的传输进行加密。
(1)普通非对称加密
原理:当客户端连接上服务器后,服务器就会告诉客户端自己的公钥(私钥由自己保存),客户端就可以使用服务器的公钥对自己的"对称密钥"进行加密发送给服务器,服务器就可以拿着自己的私钥知道客户端的对称密钥是啥;后续客户端使用对称密钥对数据进行加密,服务器也可以解密。
这里即使黑客获取到了中间的数据,也是无法解密的。
(2)存在中间人攻击
上述的过程却存在一个问题,也就是存在中间人攻击问题。
问题介绍:
当客户端向服务器询问公钥,服务器并且返回时,中间人就会截获并篡改。将服务器返回的公钥替换成自己的;当客户端收到后,就会拿着中间人的公钥对自己的对称密钥进行加密发送出去,中间人就可以拿着自己的私钥而拿到对称密钥,再把对称密钥使用服务器的公钥发送给服务器;后续客户端发送给服务器的加密数据,中间人都可以解密了。
中间人要拿着服务器的公钥加密的原因就是为了隐藏自己的存在,发送这一切的问题就是客户端没有办法鉴别公钥是否为服务器的。
(3)解决方法
上述的问题也是有解决方案的,那就是引入公证机构,那么中间人就无法伪造公钥了。
解决方案:服务器会向公证机构申请一个"证书"(类似一个字符串),后续客户端第一次连接上服务器时,就不是询问公钥是啥,而是询问证书是啥?从而可以解决问题。
证书是啥:
证书里面会包含这些内容
其中:第六项"数字签名"是由:前面五项内容计算出来的校验和,并且使用公证机构自己的私钥进行加密而成。
客户端拿到证书后如何验证真假:
客户端拿到证书后,就会拿着证书的前五项数据进行计算校验和,得到校验和1;再拿着数字签名使用公证机构的公钥进行解密,得到校验和2,比较两个校验和,如果相等,说明是正确的,否是是假的。(原因:数字签名是公证机构的私钥对校验和1加密得到的,拿着对应的公钥解密就可以得到对应的校验和)
上述做法真正做到安全的原因:
1)如果黑客修改的是证书中服务器的公钥,而不修改数字签名?
在客户端拿着自己计算出来校验和1和自己对数字签名解密出来的校验和2进行对比,就会发送不一致,从而发现证书非法
2)如果黑客修改了证书中服务器的公钥,并且重新计算校验和再得到数字签名是否可以?
黑客无法拿到公证机构的私钥,只能使用其他的私钥进行加密;当客户端使用公证机构的公钥进行加密,就会解密失败,从而判断证书非法
为了保证下载证书的安全性,一般所有公证机构的证书都会直接安装在电脑硬盘上了。