HTTP与HTTPS | 青训营笔记

100 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

HTTP与HTTPS

1、通信明文传输,内容可能会被监听

2、不验证对方身份,对方可能是假的

3、无法确定报文的完整性,报文可能已经被篡改

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

HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

1️⃣共享密钥加密:以共享密钥加密时必须把密钥也发送出去,但是发送密钥的过程可能会被监听使得密钥会黑客获取

2️⃣两把密钥的公开密钥加密:谁都可以拿到公开密钥,但是私有密钥只能由自己知道,客户端使用公开密钥加密,服务器使用私有密钥解密,这种方式很安全但是给服务器带来了很大压力,因为非对称加密很复杂

3️⃣混合加密方式:客户端使用公开密钥加密把自己的共享密钥发送给服务器,服务器使用私有密钥解密拿到客户端的共享密钥,之后使用共享密钥加密方式通信,这样也存在问题,那就是无法证明公开密钥的真实性,公开密钥可能是坏人服务器的,当客户端发送给坏服务器之后,坏服务器就拿到了共享密钥

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

数字证书机构流程:首先、服务器运营人员向数字证书认证机构提出公开密钥的申请,数字证书认证机构识别申请者的身份之后,会对以公开的公开密钥进行数字签名,然后分配这个已签名的公开密钥,并把公开密钥放入公钥证书后绑定在一起。服务器会将这份公钥证书发送给客户端,接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书 上的数字签名进行验证,一旦验证通过,客户端便可明确两件事: 一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二, 服务器的公开密钥是值得信赖的。此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式 时,如何安全转交是一件很困难的事,多数浏览器开发商发布 版本时,会事先在内部植入常用认证机关的公开密钥。

完整性保护:客户端在发送之前通过摘要算法算出明文的指纹,发送给服务器之后,服务器会使用相同的摘要算法算出明文的指纹通过自己算出的指纹与客户端发送的指纹对比,来保证数据的完整性

为什么不一直使用HTTPS

1、HTTPS慢,加密通信会消耗更多的CPU以及内存资源,因为每次都要加解密

2、只有使用敏感信息时才使用HTTPS通信,

\