HTTPS科普

首先为什么要启用HTTPS

  • HTTP的传输是明文的,因此我们提交的,我们加载的任何内容都会被第三方所监测到(涉及到有些用户名、密码等是非常危险的),用户也完全可以使用抓包工具进行数据的抓取,所有信息都是明文传输的,没有任何加密和保障措施。
  • 任何人都可以伪造来源,劫持服务器相应回来的数据。或是直接伪造你所查看的页面,例如银行网站
  • 服务器响应的数据可能会在中间被劫持后篡改,你所看到的就是一个伪造的数据

使用HTTPS

HTTPS诞生于网景公司,经历了多次改版后来终于有了成熟版本
HTTPS很好的解决了HTTP的三个缺点(被监听、被篡改、被伪装),但是它并不是新的协议,而是HTTPS + TSL(SSL)结合使用,简单来说就是改变了我们的明文传输的现状,将传输的内容加密,然后在传输过程中利用了一个暗号能够防止第三方恶意地篡改我们的内容和伪造身份。

主要的工作原理

  1. 首先是客户端(不限于你的手机APP和浏览器,电脑浏览器和一些窗体软件)和服务端(也就是服务器啦)都拿着一个密钥,这两个密码是一对(公钥和私钥)这对密钥是比较经典的密码算法生成的,用的比较多的是RSA,你访问的这个网站的服务器拿着这对密码中的私钥,你的客户端拿着的公钥,这种成对出现的密钥被称为非对称加密,特点是公钥加密,私钥解密;私钥加密,公钥解密,而且不会被破解,这是目前很安全的一个算法。
  2. 接下来针对传输数据的过程做一个简单点的介绍。。。

客户端:hello~ 服务器~(1)
服务器: hello~ 客户端~ 我给你看我的服务端证书,里面有我的公钥好啦(2)
客户端:OK,我先确认下你的证书是不是有什么问题,没问题我们可以继续,我会取出你证书里面的公钥;有问题我会提醒用户有潜在危险,是否继续(3)
服务器:接下来我们可以进行内容的传输了~(4)

(1)过程中还发生了以下的事情:
1.  支持的协议版本,比如TLS 1.0版。
2.  一个客户端生成的随机数,稍后用于生成"对话密钥",这是第一个随机数
3.  支持的加密方法,比如RSA公钥加密。
4.  支持的压缩方法。

(2)过程中还有这些信息的交换
1. 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
2. 一个服务器生成的随机数,稍后用于生成"对话密钥",这是第二个随机数
3. 确认使用的加密方法,比如RSA公钥加密。

(3)过程仍然有一些信息的交换
1.  生成一个随机数,稍后用来生成"对话密钥",也就是第三个随机数
2. 取出的公钥是用来加密刚刚生成的第三个随机数的
3. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

(4)过程是最后一步
1. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
2. 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

主要就是以上的几次确认过程,在这四次信息交换过程中,双方就都有了3个随机数,最后一个利用服务器公钥加密的随机数被称为"pre-master key";接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。就是用这个会话密钥来加密传输内容的。

关于服务器给客户端所展示的证书,也就是CA(Certificate Authority)证书,证书一般包含:公钥(记住证书中是带有公钥的),公钥的数字签名,公钥拥有者的信息。这个证书可以申请,由特定的组织颁发给你,一般来讲有付费,也有部分免费的,需要一定的时间间隔内去提交相关信息,比如公司名称,域名等相关信息。、
CA证书是如何防止第三方伪造而导致关键信息泄露呢,答案是:数字签名。首先,CA证书是保留了企业或个人提交的公钥的,其次,CA证书自己有一套非对称加密的公钥和私钥;然后,数字签名的生成过程是这样的:

  1. 服务器将公钥A给CA(公钥是服务器的)
  2. CA用自己的私钥B给公钥A加密,生成数字签名A
  3. CA把公钥A,数字签名A,附加一些服务器信息整合在一起,生成证书,发回给服务器。
客户端如何验证数字签名证书?
  1. 客户端得到证书
  2. 客户端得到证书的公钥B(通过CA或其它途径)
  3. 客户端用公钥B对证书中的数字签名解密,得到哈希值
  4. 客户端对公钥进行哈希值计算
  5. 两个哈希值对比,如果相同,则证书合法。

参考:

  1. http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
  2. https://www.cnblogs.com/handsomeBoys/p/6556336.html
  3. https://www.zhihu.com/question/65464646
  4. https://zhuanlan.zhihu.com/p/22142170
  5. https://www.zhihu.com/question/22779469
  6. https://www.fadada.com/notice/detail-451.html

你可能感兴趣的:(HTTPS科普)