Https协议

看完这篇 HTTPS,和面试官扯皮就没问题了

1. HTTPS 解决了什么问题

HTTP 不安全

明文传输方面
HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;

身份鉴别方面
HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是没有用户验证;在 HTTP 的传输过程中,接收方和发送方并不会验证报文的完整性,综上,为了结局上述问题,HTTPS 应用而生

2. 什么是Https

HTTPS 的全称是 Hypertext Transfer Protocol Secure,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication),它相当于在 HTTP 的基础上加了一个 Secure 安全的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)安全套接字层(SSL)对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS
在这里插入图片描述

3. Https做了什么

加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。

数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。

身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任,这个不仅有服务器认证,还有客户端认证

TTPS 协议其实非常简单,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名,默认端口号443至于其他的应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。

也就是说,除了协议名称和默认端口号外(HTTP 默认端口 80),HTTPS 协议在语法、语义上和 HTTP 一样,HTTP 有的,HTTPS 也照单全收。那么,HTTPS 如何做到 HTTP 所不能做到的安全性呢?关键在于这个 S 也就是 SSL/TLS

所以说HTTPS 并不是一项新的应用层协议,只是 HTTP 通信接口部分由 SSL 和 TLS 替代而已。通常情况下,HTTP 会先直接和 TCP 进行通信。在使用 SSL 的 HTTPS 后,则会先演变为和 SSL 进行通信,然后再由 SSL 和 TCP 进行通信。也就是说**,HTTPS 就是身披了一层 SSL 的 HTTP**

在这里插入图片描述

4. SSL/TSL

TLS(Transport Layer Security)SSL(Secure Socket Layer) 的后续版本,它们是用于在互联网两台计算机之间用于身份验证和加密的一种协议

5. 如何解决问题

5.1 对称加密

首先想到的肯定是使用对称加密对服务器和客户机之间的数据进行加密
加密和解密时使用的密钥都是同样的密钥。只要保证了密钥的安全性,那么整个通信过程也就是具有了机密性
公钥pk 加密算法x=f(pk,data) 解密算法f(pk,x)=data`
在这里插入图片描述
但是我们在这里并不能直接使用对称加密对数据进行加密进行传输,因为服务端去制定key的时候不可能去为每一个客户端制定一个key,这样的话所需要维护的key太多,所以很多时候服务端都是使用同一个key去和不同的客户端通信;

那么问题来了,如果存在一个黑客,他也是客户端,获得了向服务器发送的请求的响应自然也可以拿到这个key,由于所以客户端的key都是一样的,那么自然也可以破解其他客户的密文,保证不了私密性
在这里插入图片描述

5.2 非对称加密

那如果我们使用非对称加密呢
非对称加密(Asymmetrical Encryption) 也被称为公钥加密,相对于对称加密来说,非对称加密是一种新的改良加密方式。密钥通过网络传输交换,它能够确保即使密钥被拦截,也不会暴露数据信息。非对称加密中有两个密钥,一个是公钥,一个是私钥,公钥进行加密,私钥进行解密。公开密钥可供任何人使用,私钥只有你自己能够知道
在这里插入图片描述
如果使用非对称加密是这样的场景**(公钥谁都能拿到,私钥只有服务端有)**
① 客户端使用公钥对数据加密,传输给服务端
② 服务端使用私钥进行解密,完成传输

这样中间即使有黑客读客户端发送的数据进行了拦截,由于没有私钥,也就无法破解加密后的数据
在这里插入图片描述
**但是对于服务端往客户端发送数据?**由于客户端只有公钥,那服务端只能使用私钥对数据加密向客户端传输

这个时候如果黑客劫持了我们发送的数据,那么由于谁都拥有公钥,自然黑客也能破解数据
在这里插入图片描述

5.3 混合加密

上面的问题在于
① 对于对称加密,如果能给每个客户端分配一个不同的key,那么可以实现安全的传输
② 非对称加密,客户端向服务端发送数据是安全的,但是服务端向客户端发送数据时不安全

TLS 是使用对称加密非对称加密 的混合加密方式来实现机密性
在会话刚开始的时候,客户端与服务端使用非对称加密直接协商出一个唯一的key,这样不同的客户端都能拿到不同的key
之后使用拿到的key进行对称加密完成传输
在这里插入图片描述

对于这个场景,看似安全,但是思考下面的场景;
黑客在客户端向服务器最开始请求公钥的时候就拦截,黑客向客户端发送了自己的fake公钥,进一步获取了客户端和服务端协商的公钥num,这样以后充当一个中间人,数据都能被黑客破解
在这里插入图片描述
为了解决这个问题,就有了CA,只有通过CA认证的PK才是安全的PK,这样中间黑客的fpk就无法使用了
CA 的全称是 Certificate Authority,证书认证机构,你必须让 CA 颁布具有认证过的公钥,才能解决公钥的信任问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值