网络原理-HTTPS
HTTPS是什么
HTTPS也是一个应用层协议,在HTTP的基础上引入了加密.HTTP的传输是明文传输的,这就导致了在传输过程中可能会被人恶意篡改.在互联网上,明文传输是比较危险的事.HTTPS进行了加密,进⼀步的来保证⽤⼾的信息安全.
加密是什么
加密就是把明文通过一系列的转变,变成密文.解密就是把密文通过一系列的转变,变成明文.在这个过程中,往往需要一个或者多个中间数据辅助一个过程,这个数据称为密钥.
HTTPS的工作过程
在网络传输中,不再传输明文,而是传输加密后的密文.加密的方法大体分为两类:对称加密与非对称加密.
对称加密
对称加密是通过使用同一个密钥进行加密和解密.能通过密钥把明文加密成密文,也能使用密钥把密文解密成明文.
引入对称加密后,即使黑客拦截了数据,但是不知道密钥是什么,就无法对数据解密,这样就保证了安全.但是,服务器一次会和多个客户端进行通信,这些客户端和服务器之间使用的密钥肯定是不相同的(如果相同,那么密钥就形同虚设了).这样,就需要在一开始沟通,这次通信的密钥是什么,这一次通信是没有加密的.如果,黑客拦截到这次通信,那么黑客就知道密钥是多少,就能对后续的通信进行解密.
如果是这种情况,就要对密钥的密钥进行加密,这样就变成了一个套娃问题,密钥的密钥也可能会被拦截,此时对称加密就无法解决这样的问题.
非对称加密
由于对称加密无法解决,密钥传输过程是明文的问题,于是就引入了非对称加密.
非对称加密是什么?非对称加密中会有两个密钥,一个叫"公钥"一个叫"私钥".
如果使用公钥对数据加密,那么就只能使用私钥对数据进行解密.
如果使用私钥对数据加密,那么就只能使用公钥对数据进行解密.
但是非对称加密是非常消耗性能的,如果通信过程全程使用非对称加密,很可能导致服务器崩溃,在HTTPS的通信中,只对对称密钥加密即可.如果对称密钥是安全的,那么对称加密就是安全的.公钥需要先从服务器获取.
这种情况,客户端无法得知获取到的公钥是否是伪造的.黑客使用中间人攻击,让客户端以为在和服务器通信,实际是客户端在和黑客通信.
像这样,黑客设备在中间充当一个转发服务器,就可以知道通信过程中的所有信息.
引入证书
为了防止出现上述的中间人攻击,就引入了证书.证书是服务器在运营前,向公证机构申请的一份标识.证书中包含:证书发布机构,有效期,证书持有者,公钥,Host,签名等待信息.客户端在访问服务器时先获取证书,就能获取到公钥.那么,证书是如何防止篡改的呢?
证书中有一个重要的信息:签名,签名是基于非对称算法的,是一个经过加密的校验和.签名的加密是公证机构使用私钥进行的加密,而公钥一般是内置在操作系统中的.
在中间人攻击中,黑客如果篡改了证书的信息,如公钥,那么在客户端收到证书后,使用签名中的校验和对证书进行判断真伪,就能发现证书被篡改.黑客修改签名来篡改证书呢?显然是不行的,因为签名是由公证机构的私钥加密的,当黑客修改签名后,只能通过其他方法对签名加密.客户端收到后,无法使用公钥正确解密签名,也能知晓证书被篡改.
如果中间人选择调包证书,也是行不通的.因为证书中包含Host,当客户端发现证书中的Host与目标Host不同时,也能知晓服务器证书被调包.
一次通信的完整流程