HTTPS入门

xiaoxiao2021-02-28  81

HTTPS入门

在HTTP协议中有可能存在信息窃听或身份伪装等安全问题,使用HTTPS通信机制可以有效的防止这些问题。

一、HTTP的缺点

(1)通信使用明文,内容可能被窃听。 (2)不验证通信方的身份,可能遭遇伪装。 (3)无法证明报文的完整性,有可能已遭篡改。 由于http本身不具备加密功能,所以无法对通信整体进行加密。而TCP/IP协议族的工作机制,使得通信内容被窃听十分容易。

二、HTTPS=HTTP+加密+认证+完整性保护

我们把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure)。在浏览器端改用https:// ,浏览器会出现一个“锁”的标记。 HTTPS不是一种新的协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

三、SSL(Secure Sockets Layer 安全套接层)

通常,HTTP直接和TCP通信。 当使用SSL时,演变成和SSL通信,再由SSL和TCP通信了。在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。SLL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telent等协议也可以配合SSL使用。 可以说SSL是当今世界上应用最为广泛的网络安全技术。 SSL采用一种叫公开密钥加密(Public key cryptography)的加密处理方式。加密算法是公开的,密钥缺是保密的。通过这种方式得以保持加密方法的安全性。 (1)对称密钥加密(共享密钥加密):是指加密和解密用一个密钥的方式。 这种方式存在的问题是,密钥如果在网上发送,就有被窃听的可能。理论上如果能安全的发送密钥,就能安全的发送数据。 (2)公开加密:使用一对非对称的密钥。一把是私有密钥(private key),另一把是公开密钥(public key)。使用公开密钥加密方式:发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再用自己的私有密钥进行解密。【想要根据密文和公开密钥恢复到信息原文是异常困难的,因为解密的过程就是在对离散对数进行求值,这并非轻易能办到】

四、HTTPS加密机制

HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

公开密钥加密处理过程比共享密钥加密方式更复杂,在通信时使用公开密钥加密的方式会导致低效率。

公开密钥还存在一个问题,就是无法严明公开密钥本身就是货真价实的公开密钥。因为可能存在在通信过程中被攻击者替换的风险,所以要使用数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。

五、HTTPS的安全通信机制

HTTPS的通信步骤如下: (1)客户端通过发 Client Hello开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(加密算法和密钥长度)。 (2)服务器可进行SSL通信时,会以Server Hello报文作为应答,报文中包含SSL版本和加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。 (3)服务器发送Certificate报文。报文包含公开密钥证书。 (4)最后服务器发送Server Hello Demo报文通知客户端,最初的SSL握手协商部分结束。 (5)SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密使用的一种被称为Pre-master secret的随机密码串,该密码串已经被步骤3中的公开密钥加密。 (6)客户端继续发送 Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用pre-master sercet密钥加密。 (7)客户端发送finished报文。该报文包含连接至今全部报文的整体校验值。 (8)服务器同样发送Change Cipher Spec报文。 (9)服务器同样发送finished报文。 (10)服务器和客户端的finished报文交换完毕之后,SSL连接正式建立完成。从此处开始进行应用层的通信,即发送HTTP请求。 (11)应用层协议通信,发送HTTP响应, (12)最后由客户端断开连接。 断开时,发送close_notify报文。之后再发送TCP FIN报文来关闭与TCP的通信。

在以上流程中,应用层发送数据时会附加一种叫MAC(Message Authentication Code)的报文摘要。MAC能够查知报文是否被篡改。

六、为什么不一直使用HTTPS

为什么所有的web网站不一直使用HTTPS? 答:因为与纯文本通信相比,加密通信会消耗更多的CPU和资源。对于访问量巨大的web网站,加密处理承担的负载太重。 此外,想要节约购买证书的开销也是原因之一。 如果是非敏感信息,使用HTTP通信即可,只有在包含个人信息等敏感信息的数据时,再采用HTTPS加密通信。

转载请注明原文地址: https://www.6miu.com/read-59786.html

最新回复(0)