SSL握手协议相关概念
下图为握手协议的流程图,具体的解释参考博客:
【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS_tenfyguo的博客-CSDN博客
下面梳理一下SSL协议中的一些细节。首先是相关名词:证书、签名、非对称加密、预主秘钥。
签名和非对称加密
非对称加密是一类加密算法,使用两个不同的秘钥,公开的称之为公钥,不对外公开的叫私钥,公钥-私钥是成对的,公钥加密的数据可以用私钥解密,私钥加密的数据可以用公钥解密,但是公钥加密的不能用公钥解密。非对称加密的RSA算法可以参考我之前写的一篇博客,算法非常简单。
SSL-RSA加密算法实践_腾昵猫的博客-CSDN博客
证书
证书包含3种:根证书、中间证书、服务器证书。
根证书是顶层的证书,这个证书就是一个私钥和一个公钥。公钥发布安装给各个客户端和浏览器,也就是客户端的根证书。
中间证书是CA生成的,服务器提交CSR文件(这个接下来介绍)以后服务器会针对这个服务器生成一对非对称加密的秘钥,然后将公钥写到中间证书中,并用根证书的私钥对中间证书进行签名(客户端根证书有相关CA的公钥,通过公钥可以解开中间证书上根证书的签名,使得中间证书可信)。接着,通过中间证书的私钥对服务器证书进行签名(用户在SSL握手时会得到中间证书,其中包含中间证书公钥,用户可以通过该公钥解开服务器证书上的签名,使得服务器证书可信)。也就是形成一个“根证书->中间证书->服务器证书”的信任链。
服务器证书是服务器生成的一个证书,里面包含了一些标明身份的信息。并且这个服务器证书使用了服务器自己的私钥进行了签名(这个服务器证书在SSL握手过程中也会发给用户,里面包含公钥,通过公钥可以验证签名,保证服务器证书不被篡改)。
证书的生命过程包括:申请和使用。
在申请证书时,服务器会生成一个CSR文件,其中包含了服务器的公钥和相关信息。服务器将这个CSR文件发送给CA,以请求签发证书。CSR文件的具体生成过程如下:
生成密钥对:服务器首先会生成一对密钥,包括公钥和私钥。通常使用非对称加密算法,如RSA或ECDSA生成密钥对。
生成CSR文件:服务器使用生成的密钥对,以及服务器的相关信息,生成CSR文件。具体的生成步骤如下:
主题信息:CSR文件中包含了服务器的主题信息,包括组织名称、通用名称(域名)、国家/地区、州/省、城市等。
公钥:CSR文件中也包含了服务器的公钥信息。
数字签名:CSR文件会使用服务器的私钥对上述主题信息进行数字签名,以确保CSR的完整性和真实性。
提交CSR文件:生成CSR文件后,服务器会将该文件提交给证书颁发机构(CA),以请求签发数字证书。
SSL协议并不是所有阶段都使用非对称加密的,而是只在握手阶段进行非对称加密,而在接下来使用的都是对称加密。对称加密就得协商怎么生成一个秘钥,其中会用到一种秘钥协商算法是Diffie-Hellman算法,如下:
Diffie-Hellman密钥协商算法是一种用于在不安全的通信渠道上协商共享密钥的方法,它的基本原理如下:
密钥协商参数生成: 选择一个大素数p和一个原根g,将它们作为公开的全局参数。 发送者(通常是客户端)选择一个私密的随机数a,并计算发送者的公钥A = g^a mod p。 接收者(通常是服务器)选择一个私密的随机数b,并计算接收者的公钥B = g^b mod p。 发送者和接收者分别将自己的公钥发送给对方。
密钥协商过程: 发送者收到接收者的公钥B后,计算共享密钥K = B^a mod p。 接收者收到发送者的公钥A后,计算共享密钥K = A^b mod p。
发送者和接收者计算得到的共享密钥K是相同的,可以作为后续通信的对称密钥。 Diffie-Hellman密钥协商算法的关键在于,即使在不安全的通信渠道上,攻击者可以截获公开的参数和公钥,但由于无法轻易计算出私密的随机数a和b,无法直接推导出共享密钥K。因此,Diffie-Hellman算法具有前向安全性。 为了增加安全性,通常还会对生成的共享密钥K进行进一步的处理,如通过密钥派生函数生成会话密钥,用于后续的加密和解密操作。 需要注意的是,Diffie-Hellman密钥协商算法本身并不提供身份验证和数据完整性保护,通常需要与其他安全机制(如数字签名和消息认证码)结合使用,以确保通信的安全性。
相关文章:

SSL握手协议相关概念
下图为握手协议的流程图,具体的解释参考博客: 【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS_tenfyguo的博客-CSDN博客 下面梳理一下SSL协议中的一些细节。首先是相关名词:证书、…...

idea 打开java项目后新建的模块中,java文件夹需要变成蓝色,以及resources文件夹变成三条杠的
idea 打开java项目后新建的模块中,java文件夹需要变成蓝色,以及resources文件夹变成三条杠的方法 再选择modules,找到需要变蓝的文件夹,点击sources即可 同理resources文件夹变成三条杠也只需要找到对应文件夹,点击re…...

【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解
🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...

滑模控制器理论推导和matlab/simulink实例分享
滑模控制的运动轨迹主要分为两个方面:(1)系统的任意初始状态向滑模面运动阶段;(2)系统到达滑模面后并且慢慢趋于稳定的阶段。所以,对于滑模变结构控制器的设计,对应于系统运动的两个阶段,可以分为两个部分:…...
git 操作
git切换ssh和http协议 切换协议: 查看当前remote git remote -v 切换到http: git remote set-url https://github.com/username/repository.git 切换到ssh: git remote set-url gitgithub.com:username/repository.git 某些文件不想提交…...

自建hexo博客并将原有的文章发布其上
1、保存粘贴到memo9中的博客文章,并将txt转换成word文档 varPowerShellPath, CommandLine: string; // , ScriptPath begin//save to txtMemo9.Lines.SaveToFile(test.txt);memo10.Lines.SaveToFile(txt2word.ps1);//save as docxPowerShellPath : powershell.exe…...

【双指针_和为 s 的两个数_C++】
和为s的两个数字 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();int left 0;int right n-1;while(left<right){if(nums[left]nums[right]>target) right--;else if(nums[left]nums[right]<tar…...

HTML5的介绍和基本框架
目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.ht…...

代码随想录算法训练营第58天|动态规划part15|392.判断子序列、115.不同的子序列
代码随想录算法训练营第58天|动态规划part15|392.判断子序列、115.不同的子序列 392.判断子序列 392.判断子序列 思路: (这道题也可以用双指针的思路来实现,时间复杂度也是O(n)) 这道题应该算是编辑距…...

日常BUG——普通页面跳转tabbar页面报错
😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 微信小程序页面跳转的时候出现下面的问题: wx.redirectTo({url: /pages/index/i…...

SpringBoot复习:(48)RedisAutoConfiguration自动配置类
RedisAutoConfiguration类代码如下: 可以看到在这个类中配置了2个bean: redisTemplate和stringRedisTemplate. 而它通过EnableConfigurationProperties(RedisProperties.class)注解,把配置文件中配置的Redis相关的信息引入进来了,RedisPrope…...

软硬件免费,服务收费:网络安全商业模式正在被颠覆
大数据产业创新服务媒体 ——聚焦数据 改变商业 从元宇宙到造汽车,重回国内A股市场五年的360一路苦追热点。一直到大模型横空出世,360才算真正找到感觉,经历一次战略上的回归。 在8月9日的互联网安全大会上,一袭红衣的红衣教主周…...

变形金刚:从零开始【01/2】
一、说明 在我们的日常生活中,无论你是否是数据科学家,你都在单向地使用变压器模型。例如。如果您使用的是 ChatGPT 或 GPT-4 或任何 GPT,那么在为您回答问题的框中是变压器的一部分。如果您是数据科学家或数据分析师,则可能正在使…...

Opencv特征检测之ORB算法原理及应用详解
Opencv特征检测之ORB算法原理及应用详解 特征是图像信息的另一种数字表达形式。一组好的特征对于在指定 任务上的最终表现至关重要。视觉里程 (VO) 的主要问题是如何根据图像特征来估计相机运动。但是,整幅图像用来计算分析通常比较耗时,故而转换为分析图像中的特征点的运动…...

【es6】函数柯里化(Currying)
柯里化(Currying):把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数。 柯里化由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,它是 Mos…...
线上多域名实战
本文博主给大家分享线上多域名实战,当线上主域名不可用的情况下,启用备用域名完成网站高可用保障。 网站的高可用性一直是网站运维的重中之重。一旦网站宕机,不仅会造成巨大的经济损失,也会严重影响用户体验。备份域名就是一种实现…...
【C语言】上手实验
实验1 顺序、分支结构 程序填空 1. 题目描述:输入三个整数存放在变量a、b、c中,找出三个数中的最大值放于max中,并将其输出。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上…...

设计HTML5表单
HTML5基于Web Forms 2.0标准对HTML4表单进行全面升级,在保持简便、易用的基础上,新增了很多控件和属性,从而减轻了开发人员的负担。表单为访问者提供了与网站进行互动的途径,完整的表单一般由控件和脚本两部分组成。 1、认识HTML…...

使用Kaptcha生成验证码
说明:验证码,是登录流程中必不可少的一环,一般企业级的系统,使用都是专门制作验证码、审核校验的第三方SDK(如极验)。本文介绍,使用谷歌提供的Kaptcha技术,制作一个简单的验证码。 …...

【vue】vue中的插槽以及使用方法
插槽 普通插槽 1、在父组件中直接调用子组件的标签,是可以渲染出子组件的内容;如果在子组件标签中添加了内容,父组件就渲染不出来了; ParentComponent.vue: <template><div><h1>Parent Componen…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...