HTTPS其实就是secure http的意思,也就是HTTP的安全升级版。HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。
https加密数据方式
对称加密:加密用的密钥和解密用的密钥是一样的
优点:加密,解密效率比较高
缺点:数据发送方和数据接收方需要共享同一把密钥,(如果多个数据需求交换需求的个体很多),成本较高
非对称加密:加密用的密钥(公钥),解密用的密钥(私钥)不一样,又叫公开密钥加密;(私钥一般由网站管理员拥有)
公钥和私钥二者之间的关系?
通过公钥加密的数据,只有私钥才能打开,通过私钥加密的数据,只能通过公钥解开.
用非对称加密,就能解决数据传输安全的问题了吗?前面特意强调了一下,私钥加密的数据,公钥是可以解开的,而公钥又是加密的。也就是说,非对称加密只能保证单向数据传输的安全性。
公钥一般都是公开的(百度,或者其他途径都可以查到);
公钥的获取
网站向CA(证书颁发机构)提交了申请,CA审核通过后,将证书(里面包含了公钥)颁发给网站,用户访问网站的时候,网站将证书给到用户。
大致流程
概括来说,整个简化的加密通信的流程就是:(XX代表一个网站)
小明访问XX,XX将自己的证书给到小明(其实是给到浏览器,小明不会有感知)
浏览器从证书中拿到XX的公钥A
浏览器生成一个只有自己自己的对称密钥B,用公钥A加密,并传给XX(其实是有协商的过程,这里为了便于理解先简化)
XX通过私钥解密,拿到对称密钥B
浏览器、XX 之后的数据通信,都用密钥B进行加密
证书可能存在的问题
证书非法存在的两种情况
1. 证书是伪造的:压根不是CA颁发的
2. 证书被篡改过:比如将XX网站的公钥给替换了
最后还有最后两个问题:
网站是怎么把证书给到用户(浏览器)的
上面提到的对称密钥是怎么协商出来的(握手协议)
握手:证书下发,密钥协商(这个阶段都是明文的)
数据传输:这个阶段才是加密的,用的就是握手阶段协商出来的对称密钥
握手协议:
第一次:浏览器会向网站发送数据请求(产生一个随机数A)
第二次:网站接受到请求后,会向浏览器回应,(产生随机数B)
第三次:浏览器会向网站再发送一次回应(产生随机数C)
整个流程称为三次握手,随机产生的随机数,会通过一定的算法和编码,生成密钥,
网友评论