https建立连接加解密原理

news2024/9/27 21:23:38

https建立连接加解密原理

本文目录

    • https建立连接加解密原理
      • 加密并建立连接过程
      • CA的作用
        • 服务器获取数字证书过程
        • 客户端认证证书过程
        • 如何防止中间人攻击
      • 解决问题的方法

加密并建立连接过程

1.客户端发起HTTPS请求

  • 用户在浏览器里输入一个https网址,然后连接到server的443端口,客户端会把安全协议版本号、客户端支持的加密算法列表、随机数C发给服务端。

2.服务端配置数字证书,发送给客户端

  • 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面
  • 服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人
  • 把数字证书、选定的加密算法和随机数S发送给客户端

3.客户端验证证书的合法性

  • 由客户端的SSL/TLS来完成,如果发现异常,则会弹出一个警示框,提示证书存在的问题,HTTPS传输就无法继续

4.客户端生成随机数,并使用公钥加密

  • 如果证书没有问题,那么客户端会用服务器公钥来生成一个预主秘钥(Pre-Master Secret,PMS),并通过该预主秘钥和随机数C、S来组装成会话秘钥

5.客户端将此加密过的预主秘钥发送给服务端

  • 目的就是让服务端得到这个随机值(预主秘钥),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了

6.服务端解密信息

  • 服务端用私钥解密后,得到了客户端传过来的随机数,服务端通过预主秘钥和随机数C、S生成最终的会话秘钥
  • 至此,服务端和客户端都已经知道了用于此次会话的主秘钥
  • 然后把明文内容通过该值进行对称加密

7.服务端传输加密后的信息

  • 这部分信息是服务端用密钥加密后的信息,可以在客户端被还原

8.客户端解密信息

  • 客户端通过对称加密和密钥解密密文,获取明文信息

总结

  • 会话秘钥 = server random + client random + per master
  • 采用 非对称加密 + 对称加密 的方式
  • HTTPS连接建立过程使用非对称加密,而非对称加密是很耗时的一种加密方式,后续通信过程使用对称加密,减少耗时所带来的性能损耗
  • 对称加密加密的是实际的数据,非对称加密加密的是对称加密所需要的客户端的密钥。

CA的作用

为了确保客户端能够确认公钥就是想要访问的网站的公钥,需要找到一种策略来证明这把公钥就是唯一标识服务器的公钥,解决方式就是使用数字证书。

有一些专门的权威机构用来颁发数字证书,我们称这些机构为认证中心(CA Certificate Authority)。服务器可以向这些CA来申请数字证书。

服务器获取数字证书过程

  1. 服务器本地先生成一对密匙,然后拿着自己的公匙以及其他信息(比如企业名称)去CA申请数字证书。
  2. CA在拿到这些信息T后,会选择一种单向Hash算法(比如说常见的MD5)对这些信息进行加密,加密之后的东西称之为摘要。单向Hash算法有一种特点就是单向不可逆的,这样就防止了信息被篡改。
  3. 生成摘要后,CA还会用自己的私匙对摘要进行加密,摘要加密后的数据称之为数字签名S
  4. 然后,CA将会把服务器的申请信息(包含服务器的公钥)和数字签名S整合在一起,由此而生成数字证书
  5. 最后,CA将数字证书通过https传递给服务器。

客户端认证证书过程

  1. 客户端收到服务器的数字证书,包含明文T签名S,用CA的公钥解密数字证书S,得到S’,如果解密成功则说明证书来源于合法的认证机构。
  2. 客户端按照和CA一样的Hash算法将明文T进行hash生成摘要得到T’,并和通过CA公钥解密出来的摘要做对比(S’和T’),如果相同则说明内容完整,没有被篡改。
  3. 最后,客户端安全的从证书中拿到服务器的公匙就可以和服务器进行安全的非对称加密通信了;服务器想获得客户端的公匙也可以通过相同方式。

如何防止中间人攻击

  1. 其他的中间人如果进行伪造并篡改签名,因为证书是使用权威机构的私钥生成的,浏览器使用权威机构的公钥解密后和信息不匹配,从而不会信任该服务器。
  2. 如果第三方同样获取到了权威机构颁发的证书和签名,他可能进行重放攻击,但是解密后的信息和证书的信息也不会匹配。
  3. hash的作用是为了保证证书信息的完整性。在上面在签名之前有一个hash的操作,看上去不进行hash同样可以实现。这里的hash与加密的开销有很大关系,因为非对称加密是很耗时的,对hash后的数据进行加密会大大减少加密开销。
  4. 权威机构的公钥也可以通过其父权威机构来证明它的可信性,CA根证书和CA根公钥内置在浏览器,CA根证书内置在客户端的操作系统。

解决问题的方法

解决内容被窃听—加密

  • 对称加密+非对称加密

解决报文被篡改—数字签名

  • 验证发送者身份
  • 确定消息完整性

解决通信方身份认证—数字证书

  • 数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EEG- gan:用于脑电图(EEG)大脑信号的生成对抗网络2018

EEG-GAN: Generative adversarial networks for electroencephalograhic (EEG) brain signals Abstract 生成对抗网络(GANs)最近在涉及图像的生成应用中非常成功,并开始应用于时间序列数据。在这里,我们将EEG- gan描述为生成脑电图(EEG)大脑信号的框架…

18-19-20 - 深入特权级转移

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 初识任务状态段(TSS,Task State Segment)1.1 TSS中不同特权级的栈信息1.2 特权级转移时的栈变化1.3 问题一1.4 目标实验(操作系统雏形)1.5 编程实验(特权级转…

QT系列第3节 QT中混合UI设计

QT开发过程中,经常使用Qt designer设计器和代码方式结合来及进行ui设计,本节将介绍这两种方式混合进行ui开发。 目录 1.工程添加图片资源 2.添加菜单 3.添加工具栏 4.简单文本编辑器实现 5. QT Creator常用快捷键 1.工程添加图片资源 (…

javaee之MyBatis框架1

什么是MyBatis框架 先来说一下,什么是框架,框架就是不断升级的半成品软件 框架主要解决的问题:就是应用自身的设计与具体实现解耦,重点放到应用自身的设计上,而不是具体技术实现,具体的技术实现是由底层支…

【JVM知识】插入式注解处理器实现java编程规范检测

【JVM知识】插入式注解处理器实现java编程规范检测一、前言二、Java 规范提案三、注解分类四、java编译器五、插入式注解处理器六、代码规范检测实现(代码示例)七、项目版本统一控制实现(代码示例)一、前言 最近在看**《深入理解…

人人都能看懂的Spring原理,看完绝对不会懵逼

人人都能看懂的Spring原理,绝对不会懵逼为什么要使用Spring?Spring的核心组件Spring是如何实现IOC和DI的?定义了BeanDefinition扫描加载BeanDefinition根据BeanDefinition进行Bean的实例化和初始化实例化属性赋值保存到单例缓冲池一个Bean从创…

【Java开发】 Staffjoy 01 :项目目标及案例需求

Staffjoy 是 Spring Boot & Kubernetes 云原生微服务实践,是一个贴近生产的微服务云原生教学案例,本文依波波老师的课程。新开了一个坑,希望能搞懂微服务框架,感兴趣的同学也欢迎讨论~ 目录 1 Staffjoy 项目目标 2 Staffjoy…

【Java寒假打卡】Java基础-StringBuilder类

【Java寒假打卡】Java基础-StringBuilder类一、概述二、构造方法三、常用方法四、StringBuilder提高效率的原理五、StringBuilder实现字符串反转一、概述 也就是使用String 拼接字符串每一次都要开辟新的堆内存空间,使用StringBuilder不需要开辟新的内存空间 String…

软件架构设计的七大原则

学习设计原则是学习设计模式的基础。千万不能形成强迫症。当碰到业务复杂的场景时,需要随机应变。 在实际开发过程中,并不是一定要求所有代码都遵循设计原则,而是要在适当的场景遵循设计原则,就可以帮助开发者设计出更加优雅的代…

glibc内存管理那些事儿

Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: 进程虚拟地址空间分布 图中,0xC0000000开始的最高1G空间是内核地址空间,剩下3G空间是用户态空间。用户态空间从上到下依次为stack栈(向下增长)、mmap(匿名文件映射区)、Heap堆(向上增长…

网络编程之IO多路复用

目录 一. 同步与阻塞 1.1 同步阻塞 1.2 同步非阻塞 1.3 异步阻塞 1.4 异步非阻塞 1.5 I/O多路 二.多路复用的技术 2.1 UNIX I/O Models 2.1.1 blocking I/O 2.1.2 nonblocking I/O 2.1.3 I/O Multiplexing Model 2.1.4 SIGIO 2.1.5 asynchronous I/O 2.2 IO多路复…

【拓扑排序】课程表问题

一、拓扑排序问题描述 给定:一系列任务 (A,B,C …) 任务间的依赖关系 (B 和 C 必须在 A 之前完成, …) 输出:这些任务间的合法执行顺序 (C – B – A – …) 总之&am…

「图文讲解」浏览器原理与页面渲染过程

相信大家在面试的时候面试官总是会问一个问题:“可以说下浏览器从输入url到渲染页面完成过程吗?”,非官方标准答案来啦~ 那我们首先需要先来讲一下浏览器是什么,浏览器其实就是一个应用软件,在学习操作系统…

《数据结构、算法与应用C++语言描述》线性表-数组描述

《数据结构、算法与应用C语言描述》线性表-数组描述 5表示在 数据结构算法与应用C语言描述 书中所在章节。 本文包含了《数据结构、算法与应用C语言描述》第五章主要练习题答案,给出了线性表数组描述完整测试代码。 5.1 数据对象 5.1.1 定义 数据对象(data obj…

java开发的师生评教小程序学生对老师评价老师对班级评价打分题单选题意见框系统选课系统

简介 源码1.0(源码2.0选课功能,请往下看) 师生评教小程序,学生可以对老师进行评价,老师可以对班级行进评级。管理员可以创建不同的评教模板(单选题0分或者10分,打分题0-10分,意见框…

三分钟彻底搞懂paint,repaint,update!

最近总结了一下java中的paint,repaint和updata三者之间的关系,首先咱们都知道用paint方法来绘图,用repaint重绘,用update来写双缓冲。但是他们之间是怎么来调用的呢,咱们来分析一下(想直接看结果,请跳过分析…

2022卡塔尔世界杯感想

一、概述 说说我个人吧!在体育活动上面真是没什么兴趣,篮球,足球...等等竞技运动不敏感! 今年稍微关注了点世界杯比赛!什么原因呢?我有一个爱买彩票/赌球的一个同事!随着世界杯的进行&#xf…

风力发电机组机械功率Pm与转子转速Wm关系(Matlab实现)

目录 1 数学模型 2 代码 3 结果 1 数学模型 风力机空气动力学模型 风力涡轮机的动态输出机械扭矩表示为: 其中是空气密度 , A是叶片扫掠面积 , R是风力涡轮机的转子半径 (m), 是风速 (m/s)。是叶片的功率系数,它是叶片桨距…

linux内网渗透:docker逃逸

Docker逃逸 前言 Docker 逃逸在渗透测试中面向的场景大概是这样,渗透拿到shell后,发现主机是docker环境,要进一步渗透,就必须逃逸到“直接宿主机”。甚至还有物理机运行虚拟机,虚拟机运行Docker容器的情况。那就还要…

基于VUE.JS的招聘系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):本文是基于Vue.js对招聘系统的设计与实现,对招聘系统管理员、个人用户、企业用户三个模块功能的完善…