浅谈HTTPS安全传输原理

  今天分享的内容是HTTPS安全传输的原理。大家都知道HTTP有很多缺点,比如:

  • 通信使用明文,内容可能会被盗窃。
  • 不验证通信方身份,因此有可能遭遇伪装。
  • 无法验证报文的完整性,所以有可能已经遭到篡改。

如果使用HTTP,就感觉人在大街上裸奔一样,会被任何人看到,任何想拦截的人都可以将其拦截下来。所以为了解决这些问题,HTTPS就应运而生了。

披着SSL外套的HTTP

  HTTPS并不是取代了HTTP的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer,安全套接层)和TLS(Transport Layer Security,安全传输层协议)协议代替而已。如下图所示:(左边为HTTP,右边为HTTPS)

  原来直接通过TCP/IP进行传输,后来则必须经过SSL,SSL为传输提供了加密数据通道。不过具体介绍HTTPS安全传输原理之前,先要介绍SSL加密的两种技术:

共享密钥加密(对称加密)

  顾名思义,共享密钥就是客户端和服务器利用同一把密钥进行加密,解密。如果密钥被别人拿了,设置密钥就毫无意义。那么问题来了,以共享密钥加密传输时必须将密钥也一并发过去,但是如果有攻击者监视了通信,那就存在了盗取密钥,然后解密查看内容的可能。例:A,B同学相互通信,A利用自己或自己信任的单位做出来的密钥对文件加密,然后将加密后的文件以及密钥一并发过去,B收到后用得到的密钥进行解密。但是这个过程也被隔壁宿舍的C同学利用公钥看到了通信内容。

使用两把密钥的加密(RSA:非对称加密)

  非对称加密使用的是一对非对称的密钥(即两把密钥不相同)。一把叫私有密钥,另一把是公开密钥。顾名思义,私有密钥是个人知道,不能让别人知道的,而公开密钥则是地球人都可以知道的。(这两个密钥是自己或者自己信任的单位做出来。)例:A,B同学相互通信,A同学利用B传过来的公钥对文件进行加密后发送,B同学利用自己手中的私钥进行解密。同理,A将公钥传给B,B利用公钥加密文件后将文件传给A,A再用自己私钥解密。

HTTPS使用混合加密机制

  HTTPS将这两种加密混合一起用,用RSA加密方式复杂,所以速度会变慢,就上面的例子来说,A传给B的公钥就是利用共享密钥加密(对称加密)进行传输,反正公钥大家都知道,所以用共享密钥加密,速度快,然后B传输文件时,就利用刚A传输过来的公钥进行加密传输,A得到文件后就用私钥解密文件。这样一来就确保了传输的安全。利用两种加密速度会较快,也会更安全。

证明公开密钥正确性的证书

  看起来利用非对称加密似乎使通信变得十分的安全,然而不然,公钥在传输中可能被替换,我们也无法验证公钥是否是货真价实的公钥。例:A,B同学互相通信,隔壁老C同学觉得不爽他们两个大老爷们天天在网上叽叽歪歪,但是自己无法破解他们传输的内容,于是C同学监听了他们的通信,将A,B相互通信使用的公钥替换掉,让A,B以为自己还处于安全之中。

  于是为了解决这个问题, 数字认证机构以及其相关的颁布的公开密钥证书就出现了。首先我们介绍下数字认证机构业务流程:服务器运营人员向证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份后,对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

  服务器会将这份由数字签名证书认证的的证书发给客户端。客户端收到后使用认证机构的公开密钥(这个公开密钥必须安全转移到客户端,通信时安全转交很难,所以一般多数浏览器会事前植入常用的认证机关公开密钥)进行验证证书上的数字签名,一旦通过客户端就知道这个密钥可以用,没有被篡改。
  

中间人攻击

  中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。也就是我之前说到的那个不爽的C同学,C同学利用自己电脑将其置于A,B同学通信之间,就可以发生中间人攻击。所以日常通信时很有可能有人“拦在了路中间”而且我们很可能不知道。这个中间人可能篡改数据,盗取数据等等。如下图所示:

为啥不一直用HTTPS?

  虽然HTTPS优点很多,也更安全,但是缺点也很明显:

  • 慢,HTTPS需要做服务器,客户端的加密解密处理,所以消耗CPU和内存等硬件资源。而且SSL通信部分消耗网络资源,并且其对通信进行处理,所以时间大大加长。
  • 非敏感信息并不需要使用HTTP,只有在访问个人信息等敏感数据才利用HTTPS。
  • 买证书也要钱,一些小网站还真买不起。

总结

  最后一张简洁版图总结一下HTTPS是如何运作的,相信懂了之前的原理应该不难理解了(不对之处,欢迎指教)。

你可能感兴趣的:(计算机网络)