SSL协议,一文带你了解

news2024/9/23 13:15:59

SSL简介

 

SSL(Secure Sockets Layer)是一种安全协议,用于保护互联网上的数据传输安全。SSL协议最初由网景公司开发,现在已经被TLS(Transport Layer Security)协议所取代。SSL协议和TLS协议都是为了保护数据传输的安全而设计的,TLS协议是SSL协议的继承者,TLS协议的版本号是SSL协议的版本号加1。

SSL和TLS:

SSL协议是一种安全协议,用于保护互联网上的数据传输安全。TLS协议是SSL协议的继承者,TLS协议的版本号是SSL协议的版本号加1。TLS协议和SSL协议的目的都是为了保护数据传输的安全,TLS协议比SSL协议更加安全,因为TLS协议修复了SSL协议的一些安全漏洞。

SSL协议介绍:

SSL协议是一种安全协议,用于保护互联网上的数据传输安全。SSL协议最初由网景公司开发,现在已经被TLS协议所取代。SSL协议的主要功能是提供数据加密、身份认证和数据完整性保护。SSL协议通过使用公钥加密技术和对称加密技术来保护数据传输的安全。SSL协议的加密过程是在传输层进行的,因此可以保护所有应用层协议的数据传输安全。

SSL加密知名协议:

 

SSL协议使用的加密算法有很多种,其中比较知名的有以下几种:

1. RSA加密算法:RSA是一种非对称加密算法,用于加密和解密数据。RSA算法的安全性基于大数分解问题,即将一个大的合数分解成两个质数的乘积的问题。

2. AES加密算法:AES是一种对称加密算法,用于加密和解密数据。AES算法的安全性基于密钥的保密性,只有知道密钥的人才能解密数据。

3. SHA加密算法:SHA是一种哈希算法,用于生成消息摘要。SHA算法的安全性基于哈希算法的不可逆性,即无法从消息摘要反推出原始消息。

SSL原理详解

 

SSL协议结构:

SSL协议由四个子协议组成,分别是握手协议、记录协议、警告协议和应用数据协议。握手协议用于建立SSL连接,记录协议用于传输应用层数据,警告协议用于传输警告信息,应用数据协议用于传输应用层数据。

SSL建立阶段与IPSec 类比的话:

SSL协议的建立过程可以类比于IPSec协议的建立过程。IPSec协议是一种安全协议,用于保护IP层数据传输的安全。IPSec协议的建立过程包括安全关联建立、密钥协商和数据传输三个阶段。SSL协议的建立过程也包括三个阶段,分别是握手协议、记录协议和应用数据协议。

SSL原理(SSL建立)握手协议总过程:

SSL建立过程包括握手协议、记录协议和应用数据协议三个阶段。握手协议用于建立SSL连接,记录协议用于传输应用层数据,应用数据协议用于传输应用层数据。

SSL建立第一阶段:

在SSL建立的第一阶段,客户端向服务器发送ClientHello消息,包括SSL版本号、加密算法列表、随机数等信息。服务器收到ClientHello消息后,向客户端发送ServerHello消息,包括SSL版本号、加密算法、随机数等信息。

ClientHello

ClientHello消息包括SSL版本号、加密算法列表、随机数等信息。SSL版本号用于指定SSL协议的版本号,加密算法列表用于指定客户端支持的加密算法,随机数用于生成密钥。

ServerHello

ServerHello消息包括SSL版本号、加密算法、随机数等信息。SSL版本号用于指定SSL协议的版本号,加密算法用于指定服务器选择的加密算法,随机数用于生成密钥。

SSL建立第二阶段:

在SSL建立的第二阶段,服务器向客户端发送Certificate消息、Server Key Exchange消息、Certificate Request消息和Server Hello Done消息。Certificate消息用于传输服务器的证书,Server Key Exchange消息用于传输服务器的公钥,Certificate Request消息用于请求客户端提供证书,Server Hello Done消息用于告知客户端握手协议的第二阶段已经结束。

Certificate消息(可选)—第一次建立必须要有证书

Certificate消息用于传输服务器的证书,证书包括服务器的公钥和服务器的身份信息。客户端收到Certificate消息后,会验证服务器的证书是否合法。

Server Key Exchange(可选)

Server Key Exchange消息用于传输服务器的公钥,服务器的公钥用于加密数据。如果服务器的证书中已经包含了服务器的公钥,那么Server Key Exchange消息就可以省略。

Certificate Request(可选)------可以是单向的身份认证,也可以双向认证

Certificate Request消息用于请求客户端提供证书,证书用于客户端的身份认证。如果服务器不需要对客户端进行身份认证,那么Certificate Request消息就可以省略。

Server Hello Done

Server Hello Done消息用于告知客户端握手协议的第二阶段已经结束。

SSL建立第三阶段:

在SSL建立的第三阶段,客户端向服务器发送Certificate消息、Client Key Exchange消息和Certificate Verify消息。Certificate消息用于传输客户端的证书,Client Key Exchange消息用于传输客户端的公钥,Certificate Verify消息用于验证客户端的证书是否合法。

Certificate(可选)

Certificate消息用于传输客户端的证书,证书包括客户端的公钥和客户端的身份信息。服务器收到Certificate消息后,会验证客户端的证书是否合法。

Client Key exchange

Client Key Exchange消息用于传输客户端的公钥,客户端的公钥用于加密数据。

Certificate verify(可选)

Certificate Verify消息用于验证客户端的证书是否合法。客户端使用自己的私钥对证书进行签名,服务器使用客户端的公钥对签名进行验证。

SSL建立第四阶段:

在SSL建立的第四阶段,客户端和服务器交换ChangeCipherSpec消息、Finished消息和消息验证代码(HMAC)。ChangeCipherSpec消息用于告知对方加密算法已经生效,Finished消息用于告知对方握手协议已经完成,消息验证代码(HMAC)用于保证数据传输的完整性。

ChangeCipherSpec :

ChangeCipherSpec消息用于告知对方加密算法已经生效,客户端和服务器都会发送ChangeCipherSpec消息。

Clinet Finished:

Client Finished消息用于告知服务器握手协议已经完成,客户端会计算出Finished消息的消息验证代码(HMAC)。

Server Finished:

Server Finished消息用于告知客户端握手协议已经完成,服务器会计算出Finished消息的消息验证代码(HMAC)。

消息验证代码(HMAC)和TLS数据完整性:

消息验证代码(HMAC)用于保证数据传输的完整性,HMAC是一种消息认证码,用于验证消息的完整性和真实性。TLS数据完整性是指在数据传输过程中,数据没有被篡改、删除或者插入。

几个重要的secret key:

在SSL协议中,有几个重要的secret key,包括PreMaster secret、Master secret、Client write secret和Server write secret。PreMaster secret是客户端和服务器协商生成的一个随机数,用于生成Master secret。Master secret是客户端和服务器协商生成的一个密钥,用于生成Client write secret和Server write secret。Client write secret和Server write secret是用于加密和解密数据的密钥。

SSL会话恢复:

SSL会话恢复是指在SSL连接已经建立的情况下,客户端和服务器可以重复使用之前协商生成的密钥,从而避免重新进行密钥协商的过程。SSL会话恢复可以提高SSL连接的性能和安全性。

SSL记录协议:

 

SSL记录协议用于传输应用层数据,SSL记录协议将应用层数据分成若干个记录,每个记录包括记录头和记录体两部分。记录头包括记录类型、记录长度和协议版本号等信息,记录体包括应用层数据。

应用数据传输:

应用数据传输是指在SSL连接建立成功后,客户端和服务器可以通过SSL记录协议传输应用层数据。应用数据传输过程中,数据会被加密和解密,从而保证数据传输的安全性。

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

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

相关文章

一文带你弄懂【时间复杂度】

文章目录 算法时间复杂度时间复杂度计算常见的时间复杂度时间复杂度的差异 总结 算法 算法(Algorithm)是求解一个问题需要遵循的,被清楚指定的简单指令的集合。 一个算法的评价主要从时间复杂度和空间复杂度来考虑。而时间复杂度是一个函数…

Netty核心技术四--Netty概述

1. 原生NIO存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为NIO编程涉及到Reactor模式,…

从tomcat说起全面理解Java web开发原理

从tomcat说起全面理解Java web开发原理 简介:Java开发分为Java ME,Java SE,Java EE。回顾过去这些的开发工作基本上都是围绕着Java EE的,在开发经历中分别经历了Java EE开发框架从jsp servlet一路经历了ssh, ss…

存储笔记8 ipsan

Module Objectives IP SAN的组件 IP SAN的好处 描述SAN中的IP融合及其影响 描述的基本架构 –iSCSI –FCIP –FCoE 讨论IP SAN技术的市场驱动因素 列出IP SAN技术 列出iSCSI的组件和连接选项 描述iSCSI体系结构和拓扑结构 解释iSNS操作 描述FCIP的体系结构 IP SAN互联…

Springboot整合第三方登录

文章目录 Springboot整合第三方登录为什么采用第三方登录整合第三方登录创建应用导入依赖创建controller类 Springboot整合第三方登录 为什么采用第三方登录 ​ 采用第三方登录可以避免重新注册账号的繁琐,也不需要再为密码和昵称发愁,而第三方登录有一…

Linux命令——top相关之Load Average平均负载

Linux 平均负载 Load Average 详解_系统1f分钟负载_欧晨eli的博客-CSDN博客 一、什么是Load Average? 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。…

2-JVM运行流程

JVM 是 Java 运行的基础,也是实现一次编译到处执行的关键,那么 JVM 是如何执行的呢? 程序在执行之前先要把java源代码(.java)转换成字节码文件(.class)。JVM 首先需要通过一定的方式类加载器&a…

如何做好前端性能优化

前端推荐官网: http://luckycola.com.cn/ 前言: 前端性能优化一直是一个前端开发人员必须关注的经典话题,虽然现在随着技术的不断发展,网页容器(浏览器、webview)性能也越来越强大,但是网站应用的功能也不断丰富,体积不可避免的增加,当网络环境等因素不好时,仍然会存在白屏时…

【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

【后端面经】MySQL主键、唯一索引、联合索引的区别和作用 0. 简介1. 主键2. 唯一索引3. 联合索引4. 索引对数据库操作的影响5. 其他索引5.1 普通索引5.2 全文索引5.3 前缀索引 6. 总结7. 参考资料 0. 简介 索引是一类特殊的文件,用来存储检索信息,使数据…

数值天气预报期末复习

数值天气预报期末复习 文章目录 数值天气预报期末复习(零)重点需要掌握知识点(一)什么是数值天气预报(二)数值模式的分类(三)各坐标系下的大气运动方程组3.1 局地直角坐标系3.2 球坐…

绩效跃升地图读书笔记20130618

绩效跃升地图,从5月份开始看,每天中午吃完饭休息的时候,坐在工位上,把看手机刷视频看八卦的时间,换成看书的时间,直到6月15日看完一本书。发现其实利用好碎片时间,还是可以读不少书的。 “绩效…

网络端口地址转换 NAPT 配置

你是某公司的网络管理员,公司办公网需要接入互联网,公司只向 ISP 申请了一条专线,该专线分配了一个公司 IP 地址,配置实现全公司的主机都能访问外网。 技术原理 NAT 将网络划分为内部网络和外部网络两部分,局域网主机…

Java集合详解

目录 友情提醒第一章、集合体系概述1.1)集合是什么?与数组的区别在哪1.2)集合体系与分类 第二章、集合体系中的Collection和List接口/Set接口2.0)List接口/Set接口两者区别2.1)Collection接口中的常用方法2.2&#xff…

【系统开发】尚硅谷 - 谷粒商城项目笔记(一):项目准备工作

文章目录 项目准备工作人人开源搭建后台管理系统数据库搭建前端项目搭建后端模块代码生成 项目准备工作 人人开源搭建后台管理系统 码云搜索人人开源 renren-fast-vue:前端 renren-generator:代码生成器 renren-fast:后台管理系统 用git…

系统设计蓝图:终极指南

系统设计蓝图:终极指南 设计开发一个健壮的、可扩展的、高效的系统可以是令人望而生畏. 但是,了解关键概念和组件可以使流程更易于管理。在这篇博文中,我们将探索基本的系统设计组件,例如 DNS、负载平衡、API 网关等,以…

python详解(7)——进阶(1):排序算法

目录 🏆一、前言 🏆二、什么是算法(简单) 🚩1、算法 🚩2、排序算法 🏆三、冒泡排序(中等) 🏆四、快速排序(困难) 🏆五&…

Android Studio 提高SDK下载速度

我们在下载Android SDK的时候,经常会出现下载失败的情况, 报android sdk manager not installing components之类的错误。 要如何加快SDK的下载速度呢 ? 我们可以通过修改Host来实现 关闭Android Studio的代理 首先,我们要关闭Android Stu…

华为HCIA备考 易错题整理 PART1

1.IEEE802.1Q定义的 VLAN 帧格式中VLAN ID总共有多少bit 答:12 2.NAPT允许多个私有IP地址通过不同的端口号映射到同一个公有IP地址上,且不需要做任何关于端口号的配置。 3.IEEE802.1Q定义的VLAN帧总长度为多少字节? 答:4 4.关于…

10种实用的Prompt技巧图解

收集整理了prompt engineering的10种实用技巧,以图解的方式解释了它们的主要原理。 本文追求以极简风格逼近这些方法的第一性原理,把黑话翻译成人话,并使用图片范例进行说明。 同时也加入了一些自己的理解,如有出入欢迎指正。 一&…

掌握Python的X篇_3_Python的两种编程方式:交互式与脚本式

掌握Python的X篇_3_Python的两种编程方式:交互式与脚本式 1. 交互式编程2. 脚本式编程3. 其他补充3.1 python源码文件后缀的问题3.2 关于原生工县和开发工具的选择 Python有两种编程方式: 交互式编程:写一行python语句,马上运行一行&#xf…