HTTPS 加密简析

news/2024/7/12 2:51:22 标签: https, 安全, 网络协议, 对称加密, 密码学

1 前言

        HTTPS采用的是对称加密和非对称加密的混合加密方法。

        密码学知识可以查看我的这篇博客

CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲_晓翔仔的博客-CSDN博客

2.HTTPS加密过程

        https在建立链接时是非对称加密,建立链接后是对称加密

https://img-blog.csdnimg.cn/424b9663c2104ff9bb3d1391dafc21b0.png" />

 

步骤1

客户端先向服务端发送加密通信(https)请求,这次请求中包括:

  • SSL/TSL版本号
  • 加密套件,也就是客户端支持的加密算法列表
  • 产生一个随机数,我们叫他为第1随机数
  • 有一个Client Hello字符串
  • 步骤2

步骤2

服务器收到请求后,向客户端发出响应:

  • 确认SSL/TSL版本号,如果客户端不支持,那么就关闭通信
  • 确认的加密算法列表
  • 生成一个随机数,我们叫第2随机数

步骤3

        服务器再向客户端发送数字证书,服务器会把自己的公钥注册到CA(第三方证书机构),然后CA拿自己的私钥对服务器的公钥进行处理并颁发数字证书。                

步骤4

        服务器将公钥发送给客户端

步骤5

        服务器发送Hello Done,表示发送完毕

步骤6

        客户端收到服务端一系列响应后,确认数字证书和公钥,没有问题后向服务端发送:

  • 生成一个随机数,我们叫第3随机数或者预主密钥,此预主密钥会通过公钥进行加密
  • 客户端握手结束通知,表示客户端的握手结束

步骤7

        服务端收到客户端数据后,使用私钥对加密后的预主密钥进行解密,没有其他人知道预主密钥,因为它加密了,除非服务器私钥泄漏。然后服务端通过第一、二、预主密钥计算出会话密钥。客户端也计算出了会话密钥。

步骤8

        服务端向客户端发送:

  • 加密通信算法改变通知,以后通过会话密钥通信
  • 服务端握手结束

        到此为止,SSL/TSL握手结束,在此之后都会通过会话密钥来进行加密和解密,也就是对称加密

3. 关于证书篡改

假设我们的证书只是一个简单的字符串 hello, 对这个字符串计算hash值
结果为:

BC4B2A76B9719D91


如果 hello 中有任意的字符被篡改了, 比如变成了 hella, 那么计算的 hash 值就会变化很大
结果为:

BDBD6F9CF51F2FD8

但如果黑客把 hello 篡改了, 同时也把哈希值重新计算下, 客户端就无法分辨了。

所以被传输的哈希值不能传输明文, 需要传输密文;
(1)这个哈希值在服务器端通过另外一个私钥加密(这个私钥是申请证书的时候,证书发布机构给服务器的, 不是客户端和服务器传输对称密钥的私钥);
(2) 然后客户端通过操作系统里已经存的了的证书发布机构的公钥进行解密,还原出原始的哈希值, 再进行校验;
以上内容可以用下图直观表示

https://img-blog.csdnimg.cn/a1f182ec62be40e699c633bc5c308212.png" />

4 最后

        我认为,HTTPS最大的有点在于可以有效的确保服务器的真实性和传输数据的保密性。

参考资料

硬核!30 张图解 HTTP 常见的面试题

HTTPS加密过程详解_兴涛的博客-CSDN博客

HTTPS 加密过程详解_https加密过程_编程小菜鸟~的博客-CSDN博客


http://www.niftyadmin.cn/n/233690.html

相关文章

MathType+MicrosoftWord

MathTypeMicrosoftWordMathType的安装Microsoft WordMathType的安装 链接:https://pan.baidu.com/s/1bEd41GF-yRCRw2tb1XH8og?pwd1234 提取码:1234 语言选择英文!!! 安装好之后,按win键,可以…

redis实现延时队列

1.什么是延时队列? 延时队列是一种特殊类型的消息队列,它允许把消息发送到队列中,但不立即投递给消费者,而是在一定时间后再将消息投递给消费者。 2.延迟队列的使用场景 延迟队列的常见使用场景有以下几种: 在淘宝、…

FFmpeg 编译静态库

1. 使用工具 1.1 FFmpeg 官网: 1.2 FFmpeg macOS 官方安装教程: 1.3 Homebreaw 安装网站: 2. Homebreaw 介绍 2.1 简称 brew,在 Mac 平台终端上管理软件包,安装,更新,卸载等软件 2.2 安装 brew,终端执行指令(内部安装…

工厂模式概述

通常有三种形态: 简单工厂模式,不属于23种设计模式之一 工厂方法模式,是23种设计模式之一 抽象工厂模式,是23种设计模式之一 1.简单工厂模式是工厂模式的一种特殊实现,又被称为静态工厂方法模式 2.简单工厂模式解决的问题:客户端不…

pytorch 38 对tensorRT、openvino、onnxruntime推理速度进行对比

tensorRT与openvino部署模型有必要么?本博文对tensorRT、openvino、onnxruntime推理速度进行对比,分别在vgg16、resnet50、efficientnet_b1和cspdarknet53四个模型进行进行实验,对于openvino和onnxruntime还进行了cpu下的推理对比。通过实验得出:openvino GPU < onnxrun…

【OCR】CTC loss原理

1 CTC loss出现的背景 在图像文本识别、语言识别的应用中&#xff0c;所面临的一个问题是神经网络输出与ground truth的长度不一致&#xff0c;这样一来&#xff0c;loss就会很难计算&#xff0c;举个例子来讲&#xff0c;如果网络的输出是”-sst-aa-tt-e’, 而其ground truth…

如来十三掌(与佛论禅、Rot13编码)

下载附件打开是一串... 佛经 666 这个编码方式还真是第一次遇见----与佛论禅 对文本进行与佛论禅密码解密 得到 MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9 根据题目提示&#xff0c;如来十三掌&#xff0c;猜测是rot13加密&#xff0c;进行rot13解码 得到 Z…

第七天 CUDA Stream

CUDA Stream的理解 CUDA的程序一般需要处理海量的数据&#xff0c;内存带宽经常会成为主要的瓶颈 在Stream的帮助下&#xff0c;CUDA程序可以有效地将内存读取和数值运算并行&#xff0c;从而提升数据的吞吐量 由于GPU和CPU不能直接读取对方的内存&#xff0c;CUDA程序一般会…