【HTTP图解】7-确保Web安全的HTTPS

HTTP缺点

HTTP主要有以下这些不足:

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

使用Java和PHP等语言开发的Web应用也可能会存在安全漏洞

HTTPS

HTTP加上加密处理和认证以及完整性保护后即是HTTPS

image-20200726205949188

HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。

通常,HTTP直接和TCP通信,但使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。HTTPS就是身披SSL协议这层外壳的HTTP。

image-20200726210248215

SSL是独立于HTTP的协议,所以不光是HTTP协议其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。

SSL采用一种叫做公开秘钥加密的加密处理方式。近代的加密方法中加密算法是公开的,而密钥确实保密的,通过这种方式得以保持加密的安全性。

加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。如果密钥被攻击者获得,那加密也就失去意义了。

共享密钥加密的困境

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

image-20200726210959056

使用两把密钥的公开密钥加密

公开密钥加密方式很好地解决了共享密钥加密的困难。

公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥。

使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

另外,根据密文和公开密钥,恢复到信息原文是异常困难的。因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到的。image-20200726211637485

HTTPS采用共享密钥加密公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。

所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

image-20200726212035426

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

公开密钥加密方式无法证明公开密钥就是货真价实的公开密钥。为了解决这个问题,可以使用由数字证书机构(CA,Certificate Authority)和其相关颁发的公开密钥证书。

数字证书机构的业务流程:

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

服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接称为证书。

接到证书的客户端可使用赎罪证书机构的公开密钥,对那张证书上面的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一、认证服务器的公开密钥的是真实有效的数字证书认证机构。二、服务器的公开密钥是值得信赖的。

image-20200726213231441

下图为仅使用服务端的公开密钥证书(服务器证书)建立HTTPS通信的整个过程。

image-20200726213621875

HTTPS相较HTTP速度要慢

image-20200726213730978

而且要进行HTTPS通信,证书是必不可少的。要使用证书必须向认证机构CA购买。

猜你喜欢

转载自www.cnblogs.com/realzhaijiayu/p/13382197.html