关于 HTTPS 的加密流程

简介: 关于 HTTPS 的加密流程

HTTP 与 HTTPS 的区别


其实 HTTPS 与 HTTP 一样都是应用层协议, HTTPS 只是在 HTTP 的基础上再加上了一个加密层.


为啥要对 HTTP 进行加密呢?

HTTP 协议内容都是按照文本格式明文传输的, 这就导致在传输过程中可能会被篡改. (明文传输的各种信息会被别人一览无余, 没有隐私)


曾经就发生过一个大事件 : “运营商劫持”.

就好比我现在进入官网下载一个官方软件, 点击下载后弹出的是其他软件的下载, 这过程就是我发送一个HTTP请求给服务器, 服务器返回一个带有下载链接的HTTP响应, 结果被运营商修改了响应里的下载链接, 这样我得到的就是换掉的链接了.


为啥运营商能劫持数据呢 ?

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出你传输的数据报的内容, 并进行篡改.

其实不止运营商能得到用户与服务器交互的数据报, 黑客也可以.


HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全.


加密方式


网络传输中不再直接传输明文了, 而是加密之后的 “密文”.

加密的方式有很多, 但是整体可以分成两大类: 对称加密 和 非对称加密


对称加密 :

只有一个密钥 key, 通过这个 key 可以将明文加密成密文, 同样的也可以用 key 将密文解密为明文.

对称加密的特点 : 计算起来比较快.


非对称加密 :

非对称加密要用到两个密钥, 一个叫做公钥(pub), 一个叫做私钥(pri). 公钥和私钥是配对的.

非对称加密的使用 :


通过私钥对明文加密, 变成密文, 再通过公钥对密文解密, 变成明文.

也可以反着来 : 通过公钥对明文加密, 变成密文, 再通过私钥对密文解密, 变成明文.


非对称加密缺点 : 运算速度非常慢,比对称加密要慢很多.


HTTPS 基本工作过程


注意 : 加密是针对 HTTP 的各种 header 和 body.


1. 仅使用对称密钥

6b87330aff7b4be480bc942786859d62.png


注意 : 以上交互的前提是服务器存储了客户端的 key.


但实际上服务器所要服务的客户端非常多, 不可能将客户端的 key 都存储下来, 而客户端也不可能都使用一个 key, 如果所有客户端都使用一个 key, 那黑客就直接知道 key 了, 可以对数据报进行修改.


那咋办呢 ?

我们可以通过客户端自己生成一个 key, 在与服务器进行交互时, 提前告诉服务器我的 key 是多少, 然后客户端和服务器就用 key 来对数据加密解密.


那客户端总不能明文传输 key 吧, 这时候就要用到 非对称密钥 来对 key 加密了.


2. 引入非对称密钥对 key 进行加密


首先明确目标 : 客户端要将 key 安全送达到服务器, 不被黑客拿到.


先是客户端随机自己生成了一个 key, 服务器自己则有一对非对称密钥.

具体加密过程如下图 :


6c6e93e15a024566b4a697185a58a25e.png


这样难道就真的安全吗? 黑客就没办法破解吗?


其实黑客可以通过欺骗手段来获取 key, 简称 “中间人攻击”.

原理如下 :

8679799bbbdb43f2b10536d829aef5cf.png


中间人攻击的关键在于客户端信任公钥, 同时这也是破解中间人攻击的关键.


3. 引入证书, 破解中间人攻击


证书就好比人的身份证, 作为这个网站的身份标识. 搭建一个 HTTPS 网站要在CA机构先申请一个证书. (类似于去公安局办个身份证).


证书可以理解为一个对象, 这个对象包含了 :

服务器的 url, 证书的有效期, 颁布证书的机构, 服务器自己的公钥 pub, 签名等等.

注意, 签名前面的都是明文展示的, 签名是进行加密了的.

这个签名其实就是一个校验和, 证书颁布机构会针对所有属性计算一个校验和, 然后用机构自己的私钥对其进行加密.


注意 : 每个机构的非对称密钥都不一样, 每个机构的公钥都内置在操作系统中, 不需要去机构拿.


客户端访问服务器时就询问服务器公钥, 服务器就直接把证书发给客户端.

客户端拿到证书后, 首先就是对证书进行校验.


  1. 得到初始的签名 : 客户端使用系统内置的权威机构的公钥, 对证书中的加密的签名进行解密, 得到初始签名(sum1)
  2. 计算现在签名 : 客户端使用同样的算法计算证书中的各种属性, 得到sum2.
  3. 比较两个sun值是否相同, 如果相同则说明是未被篡改的数据(安全), 如果不同, 则说明证书被篡改了(不安全), 客户端的浏览器就报错.


注意 : 这里为啥黑客就不能破解呢?

黑客也是可以破解签名的, 但是黑客不能对签名进行加密, 黑客没有机构的私钥, 既然无法加密, 那自然无法伪造签名了, 就不能破解了.


其实上述这一套 :

对称加密 + 非对称加密 + 证书, 也是一个协议, 叫 SSL 或者 TLS .

HTTPS 也就等于 HTTP + SSL.


相关文章
|
2月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
134 0
|
Java 数据安全/隐私保护
java实现加密电话号码,有具体的加密流程注释
java实现加密电话号码,有具体的加密流程注释
21 0
|
14天前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
11 0
|
1月前
|
存储 安全 开发工具
oss加密的工作流程
阿里云OSS提供服务器端(SSE-KMS BYOK、SSE-KMS默认密钥)和客户端(CSE)加密。SSE-KMS通过KMS托管密钥或默认密钥在服务器端自动加密/解密对象,减轻用户负担。CSE则在客户端加密数据,使用SDK和用户密钥,灵活性高但管理复杂。两者均保障数据传输和存储的安全。用户可依据安全需求和合规性选择加密方式。
26 4
|
1月前
|
存储 网络安全 数据安全/隐私保护
Windows Server 2019 IIS HTTPS证书部署流程详解
Windows Server 2019 IIS HTTPS证书部署流程详解
|
1月前
|
安全 网络安全 CDN
阿里云CDN HTTPS 证书配置流程
阿里云CDN HTTPS 证书配置流程
174 1
|
1月前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
123 0
|
1月前
|
安全 网络协议 算法
是时候理解下HTTPS的原理及流程了
是时候理解下HTTPS的原理及流程了
23 0
|
1月前
|
安全 搜索推荐 数据安全/隐私保护
深入探讨HTTPS协议的原理和工作流程
【2月更文挑战第10天】
36 4
深入探讨HTTPS协议的原理和工作流程
|
2月前
|
安全 算法 Java
【JavaEE初阶】 详解HTTPS协议加密过程
【JavaEE初阶】 详解HTTPS协议加密过程