关于 HTTPS 的加密流程

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 关于 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.


相关文章
|
13天前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
16天前
|
域名解析 算法 安全
免费申请https加密全攻略
访问JoySSL官网注册账号,申请免费SSL证书。选择证书类型,填写域名信息,生成CSR文件,验证域名所有权。下载并部署证书至服务器,测试HTTPS连接。注意定期续期,确保兼容性和安全性。如有问题,可联系JoySSL客服。
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
2月前
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
1月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
33 0
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTPS的执行流程是什么
【8月更文挑战第15天】HTTPS的执行流程是什么
116 0
|
3月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
320 0
|
Java 数据安全/隐私保护
Java中请求HTTPS加密的源代码
 HTTPS访问方法的代码,抄一个能用的DEMO吧,我测试过的,可以用、,希望对大家也有用   import java.io.*;import java.net.*;import java.security.*;import java.security.cert.*;import java.util.*;import javax.net.ssl.*;public class Http
1047 0
|
Java 数据安全/隐私保护
Java中请求HTTPS加密的源代码
import java.io.*;import java.net.*;import java.security.*;import java.security.
777 0
|
2月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性