4000字详解HTTPS与HTTP的区别

HTTP简介

再说HTTPS之前我们先来了解一下HTTP吧

HTTP协议就是Hyper Text Transfer Protocal(超文本传输协议)的缩写,是用于万维网服务器传输超文本到本地浏览器的协议。
HTTP是基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。
HTTP协议工作于客户端-服务器构架上,浏览器作为HTTP客户端通过URL向HTTP服务端web端发送所有请求。Web服务器接收到请求后,就会想客户端发送响应的信息。
HTTP 是一个属于应用层的面向对象协议,用于及其简捷,适用于超媒体信息系统。

  • 那么HTTP有什么优缺点呢?

1.可以灵活使用:HTTP允许传输任意类型的对象。
2. 简单快捷:客户端向服务器发送请求时,只需要传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单, 使得 HTTP 服务器的程序规模小,因而通信速度很快。
3. 无连接:所谓的无连接就是每次只能限制处理一个请求,服务器处理完请求后并收到应答后,即断开连接了,这种方式及其的节省传输时间。

  • 那么HTTP 协议有什么弊端么,还需要一个叫做 HTTPS 协 议的安全协议。这里先说一下 HTTP 协议有什么样弊端?

  • 无法保证消息的秘密性

    一般情况下我们想服务器发送隐私数据。很简单的例子比如登录注册时 我们填写的手机号,个人信息,等 如果使用HTTP进行通信,那么很不安全。

  • 无法保证信息的完整性和准确性

因为我们在传输数据的过程中 ,数据很有可能被他人抓包拿到,那么数据就会被窃取,那么如果被他人串改了,服务端接受到数据后,无法确定有没有被修改或者替换,那么很不安全。

  • 无法保证消息来源的可靠性

所以服务器无法判断数据真的来源于客户端。

HTTPS概念

HTTPS就是为了HTTP而生的,他就是为了解决HTTP的弊端而生。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全 为目标的 HTTP 通道,简单讲是 HTTP 的安全版。
即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 现 在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTPS 通过非对称加密算法可以使得我们传的明文信息,无法通过逆推得出明文。接下来 我们来看看在具体的工作流程是怎么样的?
工程原理:
https 的建立


这里把 https 建立到断开分为 6 个阶段,12 过程。下面将对 12 个过程一 一做解释

这里把 https 建立到断开分为 6 个阶段,12 过程。下面将对 12 个过程一 一做解释

  1. 客户端—Hello:客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户 端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密匙长 度等)。
  2. 服务器—Hello:服务器可进行 SSL 通信时,会以 Server Hello 报文作为应答。和客 户端一样,在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容时从接收到的客 户端加密组件内筛选出来的。
  3. 服务器—发证书:服务器发送证书报文。报文中包含公开密匙证书。
  4. 服务器—我说完了:最后服务器发送 Server Hello Done 报文通知客户端,最初阶段 的 SSL 握手协商部分结束。
  5. 客户端—发送秘钥:SSL 第一次握手结束之后,客户端以 Client Key Exchange 报文作 为回应。报文包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报 文已用步骤 3 中的公开密匙进行加密。
  6. 客户端—就用这个秘钥了:该报文会提示服务器,在此报文之后的通信会采用 Premaster secret 密匙加密。
  7. 客户端—我说完了:该报文包含连接至今全部报文的整体校验值。这次握手协商是否 能够成功,要以服务器是否能够正确解密该报文作为判定标准。
  8. 服务器—发送 Change Cipher Spec 报文(我正在接收秘钥)
  9. 服务器—发送 Finished 报文(我收完秘钥了)
  10. 客户端—开始发送正文:服务器端发送 HTTP 请求,发送相关内容。
  11. 服务器—开始接收正文:客户端接收 HTTP 请求,并处理相关内容。
  12. 客户端—断开链接:最后由客户端断开连接。断开连接时,发送 close_notify 报 文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
    另外,在以上流程图中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保证报文的 完整性。
    下面再用图解来形象的说明一下,此图比上面数字证书的图更加的详细一些(图片来源于 《图解 HTTP》)

在上面说明了 HTTPS 的建立以及通信中的过程。既然实际工作流程是这个样子的,是怎样 的算法能实现这样的功能,是怎样的方式能做到非对称加密?在数学角度是如何计算的? 那么对应的理论基础是什么?是什么支撑的 HTTPS 使得他能进行加密传输?
HTTPS 的理论原理:
https 采用了一些加解密,数字证书,数字签名的技术来实现。下面先介绍一下这些技术 的基本概念
对称加密与非对称加密

为了保证消息的保密性,就需要用到加密和解密。加解密算法目前主流的分为对称加密和 非对称加密。

1.对称加密(共享密匙加密)

客户端和服务器公用一个密匙用来对消息加解密,这种方 式称为对称加密。客户端和服务器约定好一个加密的密匙。客户端在发消息前用该密匙对 消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。
图示加密过程:


这里采用的对称加密算法,

这里 M 指的是明文,我们本意要传输的内容。
这里 C 指的是秘钥,在对称加密算法中需要用秘钥加密,用秘钥解密(加密算 法可以很简单,加减乘除,也可以很复杂)。
这里 N 指的是密文,明文用秘钥加密得到的内容,被称为密文,在网络上传输 的也是密文。
比如客户端向服务器传输 1(明文),1 + 3 (3 是秘钥) = 4 得到密文,进行传输,服 务器得到 密文 4, 4-3(3 是秘钥)=1 得到明文,使得客户端和服务器端进行通信,反 之亦然
对称加密的优点:

  • 对称加密解决了 http 中消息保密性的问题
    对称加密的缺点:
  • 对称加密虽然保证了消息保密性,但是因为客户端和服务器共享一个密匙,这样就 使得密匙特别容易泄露。
  • 因为密匙泄露风险较高,所以很难保证消息来源的可靠性、消息的完整性和准确 性。
    对称加密秘钥泄露风险很高,秘钥固定,导致很容易被解密,那么有没有更好的方式去进 行加密传输,比如说每次用的秘钥都不相同,每次解密的秘钥也都不相同,或者其他的情 况来增加安全性呢?

2.非对称加密(公有密匙加密)

:既然对称加密中,密匙那么容易泄露,那么我们可以采 用一种非对称加密的方式来解决。
采用非对称加密时,客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以 对外暴露,而私有密匙只有自己可见。
采用非对称加密时,客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以 对外暴露,而私有密匙只有自己可见。
使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来,使用私有密匙加密的 消息,只有公有密匙才能解开。这样客户端在发送消息前,先用服务器的公匙对消息进行 加密,服务器收到后再用自己的私匙进行解密。
图示加密过程:


这里 M 指的是明文,我们本意要传输的内容。
这里 D 指的是公钥,在非对称加密算法中需要用公钥加密。
这里 E 指的是私钥,在非对称加密算法中需要用私钥解密。
这里 N 指的是密文,明文用秘钥加密得到的内容,被称为密文,在网络上传输 的也是密文。
在服务器这一次生成公钥 D 以及私钥 E,私钥自己留存。然后将公钥 D 进行对外 公开,想与服务器端通信的客户端用公钥 D 进行加密发送给具有私钥 E 的服务器,服务器 用私钥 E 就可以进行密文解密,最终拿到明文。

下一篇文章我们来介绍一个非对称加密算法 RSA:

  • 注:本片文章部分参考于渡一前端开发者中心
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值