HTTPS

HTTPS

HTTPS : Hypertext Transfer Protocol Secure
因为HTTP明文传输数据不安全。所以HTTPS通过使用TLS协议对数据进行对称加密来保证数据传输的安全性。
HTTPS更安全,相应的效率比http低一点
HTTPS 协议规定了新的协议名https和端口号(443),至于其他的请求-应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP。

TLS协议
Transport Layer Security 传输安全层
TLS在 OSI 七层网络模型中处于第五层(会话层),是一个独立的协议,不只有 HTTP 可以使用,其他应用层协议也可以使用。用于加密数据进行安全的数据传输
HTTPS中,HTTP 会先和 TLS 进行通信,然后再由 TLS 和 TCP 进行通信。

HTTPS七次握手

HTTPS的通信包括:七次握手阶段+数据传输阶段

  • 握手阶段利用非对称加密计算出对称加密的密钥
  • 数据传输阶段利用对称加密的密钥对数据进行加密,保证数据安全。

为什么要混合加密?
对称加密比非对称加密快。
非对称加密比对称加密安全。

HTTPS七次握手=TCP三次握手+TLS四次握手

TLS四次握手的目标是建立连接+生成对称密钥,对称密钥用于数据传输阶段对数据进行加密,对称密钥只有服务器和客户端知道,别人都不知道

TLS四次握手核心流程

每次握手传输的数据很多,下面只介绍其中最核心的用于生成对称密钥的数据,其他的省略、

TLS 第一次握手
客户端发给服务器Client Random

TLS 第二次握手
服务器发给客户端Server Random证书

TLS 第三次握手
客户端校验证书合法性,以确认服务器的身份(比如百度真的是百度不是黑客)
然后生成pre_master,并利用Client Random、Server Random、pre_master这三个随机数生成对称密钥
利用从证书中得到的服务器公钥将对称秘钥和pre_master加密之后传给服务器

TLS 第四次握手
服务器用自己的私钥解密得到对称秘钥和pre_master
同样利用Client Random、Server Random、pre_master这三个随机数生成对称密钥
二者生成的对称密钥如果相同则握手成功。

用Client Random、Server Random、Pre-Master这三个参数生成对称密钥,前面两个参数明文传输。但是Pre-Master是加密的,黑客拿不到Pre-Master,所以不用担心最终的密钥不安全

在这里插入图片描述

为什么要用证书?

服务器需要证明自己的身份,比如现在用户访问百度,百度需要向用户证明自己真的是百度而不是黑客,所以向大家公认的第三方机构申请证书,把证书传给用户来证明自己真的是百度。

证书内容如下:

在这里插入图片描述
最核心的就是最后一行的数字签名,下面介绍数字签名的作用以及是怎么生成的

数字签名:验证证书的真伪

用户怎么知道这个证书是否是真的呢?
类比企业如何认定你提供的学历证书是真的呢?答案是用学历编号,企业拿到证书后用学历编号在学信网上一查就知道证书真伪了,学历编号就是数字签名,可以防止证书造假。

同样的,这里利用数字签名来验证证书的正确性

签名生成过程:

步骤一、 首先使用一些摘要算法为证书明文生成摘要,然后再用第三方权威机构的私钥对生成的摘要进行加密生成数字签名
在这里插入图片描述

为啥要先生成摘要再加密呢,不能直接加密?——节约时间
因为使用非对称加密是非常耗时的,如果把整个证书内容都加密生成签名的话,客户端验签也需要把签名解密,证书明文较长,客户端验签就需要很长的时间,而用摘要的话,会把内容很长的明文压缩成小得多的定长字符串,客户端验签的话就会快得多。

步骤二、
客户端拿到证书后也用同样的摘要算法对证书明文计算摘要,两者一笔对就可以发现报文是否被篡改了,验签过程如下:
在这里插入图片描述
如果客户端收到一个假的数字签名,使用 CA 的公钥是无法解密的
如果客户端收到了真的数字签名,但证书上的内容被篡改了,摘要比对也不会成功的,客户端还是会认定此证书非法。
所以可以解决安全问题了。

那CA 公钥如何安全地传输到 client ?
预先内置在操作系统上的,无需传输。

完整流程

在这里插入图片描述

加密算法

  • 对称加密: 加密和解密的秘钥使用的是同一个.
  • 非对称加密: 公开密钥和私有密钥

对称加密

优点:
算法公开、计算量小、加密速度快、加密效率高

缺点:
安全性稍低,秘钥容易在传输过程中泄露
在这里插入图片描述
有人说对这个密钥加密不就完了,但对方如果要解密这个密钥还是要传加密密钥给对方,依然还是会被中间人截获的,这么看来直接传输密钥无论怎样都无法摆脱俄罗斯套娃的难题,是不可行的。

非对称加密

公开密钥与私有密钥是一对,

  • 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
  • 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法

非对称加密算法实现机密信息交换的基本过程是:
甲方生成一对密钥并将其中的一把作为公用密钥向大家公开;乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用私钥对加密后的信息进行解密。

优点:安全

缺点:

  • 速度较慢
  • server 怎么把公钥安全地传输给 client 呢?
    如果直接传公钥,也会存在被中间人调包的风险,解决办法就是证书

在这里插入图片描述

常见的非对称加密算法有: RSA、Diffie-Hellman

CA 机构

全世界具有认证的 CA 就几家,分别颁布了 DV、OV、EV 三种,区别在于可信程度。DV 是最低的,只是域名级别的可信,EV 是最高的,经过了法律和审计的严格核查,可以证明网站拥有者的身份(在浏览器地址栏会显示出公司的名字,例如 Apple、GitHub 的网站)。不同的信任等级的机构一起形成了层级关系。
在这里插入图片描述

  • 18
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值