目录
HTTPS是一个应用层协议,是在HTTP协议的基础上引入了一个加密层,进一步来保证用户的信息安全。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
为什么要这样子呢?
因为如果没有这个加密,HTTP协议内容都是按照文本的方式明文传输的,这就导致传输中会出现一些被篡改的情况!
例如:
“加密”就是把明文进行一系列变换,生成密文
解密就是把密文再进行一系列变换,还原成明文
在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为秘钥
HTTPS引入的加密层,称为SSL/TLS,在SSL中加密的机制主要有两种:
对称加密就是客户端使用相同的密钥对密文进行加密和解密
很显然的一点是:不同客户端需要拥有不同的密钥,如果不同客户端使用的是相同的密钥,那这就和没加密一样,黑客只要自己启动一个客户端或服务器就能拿到密钥
另外,需要进行密钥的网络传输,密钥传输如果是明文传输的话,很容易被黑客拦截获取,黑客拿到了密钥,那么加密就等于白加了。
为了解决密钥被黑客获取篡改,需要对密钥也进行加密,显然对密钥曹勇加密是不可行,那就真的是无限套娃了,所以引入了非对称加密
对于非对称加密,他拥有两个密钥,一个公钥一个私钥,其中呢,公钥是大家都可以获取到的,而私钥是只有构造私钥的那一方才会知道。相当于我们现实生活中的锁与钥匙,而这个锁相当于公钥,钥匙就相当于私钥。
接下来,我们可以使用非对称加密,首先客户端会向服务器询问服务器的公钥是什么,然后服务器会向客户端发送一个公钥,客户端收到公钥后会使用这个公钥对客户端构造的密钥进行加密,然后会把密文请求与密钥传输给服务器,服务器使用私钥解密得到客户端的密钥,然后使用这密钥对密文请求进行解密。
问题——“中间人”,这个中间人对于服务器伪装成“客户端”,对于客户端,中间人会伪装成“服务器”,换句话说,当服务器发送公钥给客户端时,中间人也生成一对公钥与私钥,中间人把服务器的公钥换成自己的公钥,然后服务器使用中间人的公钥加密密钥,并发送对称密文请求与密钥请求,再然后中间人再次拦截,使用自己的私钥获得密钥,使用密钥解密获得客户端的请求,为了防止服务器察觉,中间人会将获得的密文请求与密钥使用服务器的公钥加密,并发送给服务器,这样这位中间人神不知鬼不觉就截取到了客户端的请求数据。
中间人问题的解决方案,引入一个第三方工信机构,服务器先提供资质证明给工信机构,工信机构通过审核后,会给服务器发送一个证书,该证书不是普通的证书,里面含有一些校验机制,然后服务器会把自己的公钥放入证书中,客户端也不再询问公钥,而是询问服务器证书,得到证书后会去查该证书是否合法,如果合法才会使用服务器证书中的公钥去进行对密文请求与密钥的加密,并发送给服务器,如果不合法浏览器就会弹窗警告。
下期见咯~