确保web安全的HTTPS

这里有一份简洁的前端知识体系等待你查收,看看吧,会有惊喜哦~若是以为不错,恳求star哈~前端


事物皆有两面性,HTTP也有不足,好比:git

  • 通讯使用明文,内容可能被窃听
  • 不验证通讯方的身份,可能被假装
  • 没法证实报文的完整性,可能被篡改

为了有效防止这些弊端,HTTPS就应运而生了。github

HTTPS

开门见山吧,HTTPS = HTTP + 加密 + 认证 + 完整性保护算法

HTTPS究竟是如何实现的,这是咱们要重点关注的。安全

首先,HTTPS不是应用层的新协议。只是HTTP通讯接口部分用SSL和TLS协议代替而已。服务器

一般,HTTP直接和TCP通讯,当使用SSL时,则演变成先和SSL通讯,再由SSL和TCP通讯了。简言之,所谓HTTPS,就是身披SSL协议这层外壳的HTTP。网络

这里不得不提一下SSL协议,他是独立于HTTP的协议,因此其余运行在应用层的协议均可以跟SSL配合使用。SSL是当今世界上应用最普遍的网络安全技术。加密

在采用SSL后,HTTP就拥有了HTTPS加密、证书、完整性保护这些功能。3d

谈谈加密

共享密钥加密

近代加密方法中加密算法是公开的,而密钥是保密的,加密和解密都会用到密钥,没有密钥就没法对密码解密。cdn

加密和解密同用一个密钥的方式称为共享密钥加密(Common Key crypto system),也叫作对称密钥加密。

若是发生密钥就有被窃听的风险,但不发送,对方就不能解密,再说,密钥若可以安全发送,那数据也应该能安全送达——这是矛盾的地方。

由于上述的矛盾,共享密钥加密是不安全的。

公开密钥加密技术

SSL采用一种叫作公开密钥加密的加密处理方式。

公开密钥加密使用一对非对称的密钥。一把叫作私有密钥,一把叫作公开密钥。私有密钥保密,公开密钥能够随意发布,任何人均可以得到。发送密文的一方使用对方的公开密钥进行加密处理。对方收到被加密的信息后,在使用本身的私有密钥进行解密。无需发送私有密钥,也就断绝了被盗走的可能。

从上图能够看到,私有密钥一直存在发送密文一方的服务器上,没有发送到网络中,因此就不会被窃听。

但这样作也是有局限的,由于公开密钥加密与私有密钥加密相比,其处理速度要慢。

HTTPS采用混合加密机制

HTTPS采用共享密钥和公开密钥加密二者并用的混合加密机制。

在交换密钥环节使用公开密钥加密方式,以后的创建通讯交换报文阶段则使用共享密钥加密方式。

公开密钥加密处理起来比共享密钥加密方式更为复杂,所以若在通讯时使用公开密钥加密方式,效率就很低。

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

HTTPS的加密机制看似很完美,但仍是存在一个致命的缺陷,那就是公开密钥是放在网上的,使用者证实公开密钥就是货真价实的公开密钥。

好比,正准备和某台服务器创建公开密钥加密方式的通讯时,如何证实收到的公开密钥就是本来预想的那台服务器发行的公开密钥。或许在公开密钥交换途中,真正的公开密钥已经被攻击者替换掉了。

数字证书认证机构

这就要借助第三方机构了,并且这个机构,必须是你们都信任的,这就轮到数字证书认证机构上场。

服务器的运营人员向数字证书认证机构提出公开密钥的申请,数字证书认证机构在判明提出申请者的身份后,会对已申请的公开密钥作数字签名,而后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一块儿。

接到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证经过,客户端能够明确两件事:

1、认证服务器的公开密钥是真实有效的数字证书认证机构的。

2、服务器的公开密钥是值的信赖的。

这样以来,你就能够放心使用HTTPS了。

相关文章
相关标签/搜索