SSL协议

文章目录

  • 1. 前言
  • 2. 基础概念
  • 3. SSL协议结构
    • 3.1 概述
    • 3.2 SSL握手协议
    • 3.3 修改密码说明协议
    • 3.4 报警协议
    • 3.5 SSL记录协议
  • 4. SSL安全性
    • 4.1 安全机制分析
    • 4.2 脆弱性分析
  • 5. SSL证书

1. 前言

参考《应用系统安全基础》

2. 基础概念

安全套接字层协议(Security Socket Layer,SSL)是基于web应用的安全协议,主要采用公开密钥体制X.509数字证书技术,其目标是保证两个应用间通信的保密性、完整性和可靠性,可在服务器和客户端两端同时实现支持。

SSL的安全服务位于TCP和应用层之间,可为应用层(如HTTP、FTP、SMTP)提供安全业务,服务对象主要是Web应用,即客户浏览器和服务器。

基于SSL技术,TLS包含了许多安全增强功能并最终被大多数应用所采用,替换了SSL。早期版本的TLS在通信双方都不支持TLS时可以降级支持SSL V3.0,然而,在2011年TLS v1.2不再支持向后兼容性。

尽管TLS已经存在十多年,许多人仍将其误称为SSL,由于这个原因,TLS也获得了SSL 3.1的昵称。

3. SSL协议结构

3.1 概述

SSL是一个两层协议,包括SSL握手层协议和SSL记录层协议。SSL握手层有SSL握手协议、SSL更改密码说明协议、SSL报警协议;SSL记录层协议有SSL记录协议,它为更高层提供基于客户/服务器模式的安全传输服务

画板

SSL协议提供的服务可以归纳为三个方面:

  1. 用户和服务器的合法性认证:使得用户和服务器能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都有各自的识别号,由公开密钥编排。为了验证用户,SSL协议要求在握手交换数据中做数字认证,以此来确保用户的合法性。
  2. 加密数据以隐藏被传送的数据:SSL协议采用的加密技术既有对称密钥,也有公开密钥。具体来说,就是客户机与服务器交换数据之前,先交换SSL初始握手信息。在SSL握手信息中采用了各种加密技术,以保证其机密性和数据的完整性,并且经数字证书鉴别。这样就可以防止非法用户破译。
  3. 维护数据的完整性:维护数据的完整性 SSL协议采用Hsh函数和机密共享的方法,提供完整信息性的服务,来建立客户机与服务器之间的安全通道,使所有经过SSL协议处理的业务在传输过程中都能完整、准确无误地到达日的地。

两个状态:连接状态、会话状态

会话状态要素:会话标识符;对方证书;压缩方法;密码规范;主密码;可重用否

连接状态要素:服务器和客户端的随机数;服务器写MAC密码;客户端写MAC密码;服务器写密钥;客户端写密钥;初始向量;序列号

通信步骤:建立TCP连接;SSL握手,建立SSL会话;通过会话传送加密数据包;释放连接,会话过期

3.2 SSL握手协议

SSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接受数据之前互相认证、协商加密算法和密钥。在初次建立SSL连接时服务器与客户机交换一系列信息。

SSL握手协议报文头包括三个字段:

  1. 类型(1字节):该字段指明使用的SSL握手协议报文类型。SSL握手协议报文包括10种类型。

  1. 长度(3字节):以字节为单位的报文长度。
  2. 内容(≥1字节):使用的报文的有关参数。

当一SSL客户和服务器首次开始通信时,就协议版本、加密算法的选择、是否验证对方及公钥加密技术的应用进行协商以产生共享的秘密,这一处理是由握手协议完成的

  1. 建立安全能力:客户机向服务器发送client hello报文,服务器向客户机回应server hello报文,建立如下的安全属性:协议版本、会话D、密文族、压缩方法,同时生成并交换用于防止重放攻击的随机数。密文族参数包括密钥交换方法(Defe-Hellman密钥交换算法、基于RSA的密钥交换和另一种实现在Fortezza chip上的密钥交换)、加密算法(DES、RC4、 RC2、3DES等)、MAC算法(MD5或SHA-1)、加密类型(流或分组)等内容。
  2. 认证服务器和密钥交换:在hello报文之后,如果服务器需要被认证,服务器将发送其证书。如果需要,服务器还要发送server key_exchange。然后,服务器可以向客户发送certificate request请求证书。服务器总是发送server hello done报文,指示服务器的hello阶段结束。
  3. 认证客户和密钥交换:客户一旦收到服务器的server hello done报文,客户将检查服务器证书的合法性(如果服务器要求),如果服务器向客户请求了证书,客户必须发送客户证书,然后发送client key_exchange报文,报文的内容依赖于client helloserver_hello定义的密钥交换的类型。最后,客户可能发送client verify报文来校验客户发送的证书,这个报文只能在具有签名作用的客户证书之后发送。
  4. 结束:客户发送change_cipher_spec报文并将挂起的CipherSpec复制到当前的CipherSpec。.这个报文使用的是改变密码格式协议。然后,客户在新的算法、对称密钥和MAC秘密之下立即发送finished报文。finished报文验证密钥交换和鉴别过程是成功的。服务器对这两个报文响应,发送自己的change_cipher_spec报文、finished报文。握手结束,客户与服务器可以发送应用层数据了。

CipherSpec包括以下字段:加密算法,MAC算法,加密类型,可输出的,散列大小,密钥素材,IV大小


📖当客户从服务器端传送的证书中获得相关信息时,需要检查以下内容来完成对服务器的认证:时间是否在证书的合法期限内;签发证书的机关是否是客户端信任的;签发证书的公钥是否符合签发者的数字签名;证书中的服务器域名是否符合服务器自己真正的域名。服务器被验证成功后,客户继续进行握手过程。

📖同样的,服务器从客户传送的证书中获得相关信息认证客户的身份,需要检查:用户的公钥是否符合用户的数字签名;时间是否在证书的合法期限内;签发证书的机关是否是服务器信任的;用户的证书是否被列在服务器的LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)里用户的信息中;得到验证的用户是否仍然有权限访问请求服务器资源。

3.3 修改密码说明协议

表示密码策略的变化,在完成握手协议前客户端和服务器端都要发送这一消息,以便通知对方其后的记录将用刚刚协商的密码规范及相关的密钥来保护。所有的更改密码规范消息都将产生一个意外消息警告。

3.4 报警协议

当握手过程或数据加密等操作出错误或发生异常情况时,向对方发出警告或终止当前连接。

报警协议的组成:第一个字节的值为warning或fatal,第二个字节是具体的告警消息。

waring:对发送方和接收方之间的连接没有影响,例如:错误证书、无证书、整数过期、证书未知、关闭通知,证书不支持、证书已撤销
fatal:会中断发送方和接收方之间的连接,例如:握手失败、减压失败、非法参数、错误记录MAC、意外消息

3.5 SSL记录协议

SSL记录协议为SSL连接提供两种服务:机密性报文完整性

在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和长度不为0的记录数据组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、报警协议、更改密码说明协议和应用数据协议。SSL记录协议包括了记录头和记录数据格式的规定。

SSL记录协议位于SSL协议的底层,用于定义传输数据的格式,加密/解密、压缩/解压缩、MAC计算等操作。SSL记录协议将高层的协议数据分成较小的单元,并对它进行压缩、附加消息认证码MAC、加密、附加SSL记录头,然后通过低层的传输层协议发送,其过程如下图所示。

接收消息的过程正好与发送消息的过程相反,即解密、验证、解压、拼装,然后送给高层协议。

  1. 分段:把上层传送来的数据信息块切分为小于或等于214字节的SSL明文记录。记录中包含类型、版本号、长度和数据字段。

  2. 压缩:使用当前会话状态中定义的压缩算法对被切分后的记录块进行压缩。压缩算法将SSL明文记录转化为SSL压缩记录。压缩是可选的,且必须是无损压缩,且对原文长度的增加不能超过1024字节。

  3. 增加MAC:在压缩数据上计算消息认证MAC。所有的记录均采用在当前的加密约定中定义的加密算法和报文验证MAC算法加以保护。当握手结束后,参与双方共享一个用于加密记录和计算消息认证码MAC的公开密钥。

  4. 加密:对压缩数据及MAC进行加密。加密和消息认证码(MAC)函数将一SSL压缩记录加密转换为一SSL密文记录。传输时将包含一序列号,这样即使包丢失、被改变或包被重复收到时也可以及时发现。

  5. 增加SSL记录头: SSL记录头由5个字节组成,第一个字节说明使用SSL记录协议的高层协议类型,如:20表示更改密码说明协议、21表示报警协议、22表示握手协议、23表示应用数据协议;第二个字节表示主要版本号,如:对于SSLv3.0,值为3:第三个字节表示次要版本号,如:对于SSLv3.0,值为0:第四、第五个字节表示明文数据(如果选用压缩则是压缩数据)的长度。

4. SSL安全性

4.1 安全机制分析

  1. 鉴别机制:通过使用公开密钥技术数字证书实现客户端和服务器端的身份鉴别。SSL协议建立会话时,客户端(也是TCP的客户端)在TCP连接建立之后,发出一个client hello发起握手,这个消息里面包含了自己可实现的算法列表和其他一些需要的消息。SSL的服务器端会回应一个server hello,里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。默认情况下,客户端可以根据该证书的相关内容对其认证链路进行确认,最终实现对服务器端身份的鉴别,同样在需要时也可以采用类似的方法对客户端进行身份鉴别。
  2. 加密机制:混合密码体制的使用提供了会话和数据传输的加密性保护。在SSL握手时,使用非对称密码体制协商出本次要使用的会话密钥,并选择一种对称加密算法应用于此后数据传输的机密性保护;此外,SSL使用的加密算法和会话密钥可适时变更,如果某种算法被破解,只要选择另外的算法即可
  3. 完整性机制:SSL握手协议定义了共享的、可用来形成消息认证码MAC的密钥
  4. 抗重放攻击:使用序列号来保护通信方免受报文重放攻击

4.2 脆弱性分析

SSL协议是为解决数据传输的安全问题而设计的,实践也证明了它针对窃听和其他的被动攻击相当有效,但是由于协议本身的一些缺陷以及在使用过程中的不规范行为, SSL协议仍然存在不可忽略的安全脆弱性。

  • 客户端假冒:为了减少网络性能的下降,SSL协议并不是默认要求进行客户鉴别
  • SSL协议无法提供基于UDP应用的安全保护,SSL协议在握手之前需要建立TCP连接,因此不能对UDP应用进行包含
  • SSL协议不能对抗通信流量分析,SSL只对应用数据保护,数据包的IP和TCP头仍然暴露在外
  • 进程中的主密钥泄露:除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主密钥

5. SSL证书

参考:What is an SSL Certificate: Definition, Types, Benefits and Validation Levels、Secure Socket Layer (SSL) - GeeksforGeeks

SSL(安全套接字层)证书是一种数字证书,用于保护和验证网站或在线服务的身份。该证书由受信任的第三方(称为证书颁发机构 (CA))颁发,该机构在颁发证书之前会验证网站或服务的身份。

SSL 证书分为三种验证类别:域验证、组织验证和扩展验证。

域验证:主要的验证类型,其中通过电子邮件、CNAME 或 HTTP 验证来验证域名所有权。网站所有者只需验证域名,证书颁发机构就会颁发SSL 证书。但是,域名验证缺乏深入的验证。
组织验证:组织验证比域验证类型更进一步。证书颁发机构 (CA) 需要业务和法律文件来验证业务身份。因此,证书所有者必须验证域名并向 CA 提交文件。验证后,证书颁发机构会颁发应安装在服务器上的 SSL证书。
扩展验证:扩展验证或EV SSL是最高级别的验证类型,其中包括域和组织验证流程。扩展验证流程为网站所有者提供经过验证的合法企业身份,以确保最终用户的安全。网站访问者可以在浏览器中查看经过验证的企业名称。在此过程中,CA可以拨打注册号码进行进一步验证。

SSL证书类型可分为单域SSL证书、多域名SSL证书、UCC证书和通配符SSL证书

单域SSL证书:单域名 SSL 证书仅保护单个域名。它可以是域名验证、组织验证或 EV SSL 证书。单域名 SSL是中小型企业的理想选择。
多域名SSL证书:多域名SSL可在单个证书中保护不同的域名和子域名。这是一种经济高效的证书,可节省开支。例如,domain.com 和 example.com可以使用多域名 SSL 进行保护。您可以在此证书中包含不同级别的子域名。
UCC证书:UCC 或统一通信证书的工作方式类似于多域 SSL证书。但是,它最适合用于 Microsoft Exchange服务器或服务。站点所有者可以使用此证书保护多个域和子域。它可以使用单个证书保护许多域和子域。
通配符SSL证书:旨在保护带有星号 ()的主域及其第一级子域。例如,.domain.com 可以保护 mail.domain.com、payment.domain.com 和example.domain.com。在 EV 验证下无法颁发通配符,因为每个子域都需要验证,而在通配符下,只需验证主域。但是,多域通配符SSL 可以覆盖不同级别的子域。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink-Source的使用

Data Sources 是什么呢?就字面意思其实就可以知道:数据来源。 Flink 做为一款流式计算框架,它可用来做批处理,也可以用来做流处理,这个 Data Sources 就是数据的来源地。 flink在批/流处理中常见的source主要有两大类…

Linux线程_线程控制_线程库

一.线程控制 在Linux操作系统的视角,Linux下没有真正意义上的线程,而是用进程模拟的线程(LWP)。所以,Linux不会提供直接创建线程的系统调用,而是提供创建轻量级进程的接口。但是由于用户只认线程&#xff0…

计算机网络:运输层 —— TCP 的超时重传机制

文章目录 TCP 的超时重传超时重传时间的选择重传策略与拥塞控制的关联 TCP 的超时重传 TCP 的超时重传是保证数据可靠传输的重要机制之一 保证数据可靠性:通过超时重传机制,即使在网络状况不佳,出现数据包丢失等情况时,也能够确保…

C嘎嘎探索篇:和stack,queue的相遇

C嘎嘎探索篇:和stack,queue的再次相遇 前言: 小编在前几日刚完成了关于list容器的介绍,中间由于我牙齿出现了问题所以断更了不少天,如今我牙齿已经恢复,我也要开始继续新内容的讲解了,各位读者…

GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性

产品描述 GPTZero 是一款先进的AI文本检测工具,专为识别由大型语言模型(如ChatGPT、GPT-4、Bard等)生成的文本而设计。它通过分析文本的复杂性和一致性,判断文本是否可能由人类编写。GPTZero 已经得到了超过100家媒体机构的报道&…

MyBatis Plus 项目的创建和使用

1. 快速上手 1.1. 项目的创建和配置 首先&#xff0c;创建一个 Spring Boot 工程&#xff0c;添加 MyBatis Plus 和 MySQL 对应的依赖&#xff0c;然后&#xff0c;和 MyBatis 一样&#xff0c;需要在 yml 文件中配置数据库连接信息 <dependency><groupId>com.b…

IDEA 2024.3 版本更新主要功能介绍

IDEA 2024.3 版本提供的新特性 IntelliJ IDEA 2024.3 的主要新特性&#xff1a; AI Assistant 增强 改进的代码补全和建议更智能的代码分析和重构建议Java 支持改进 支持 Java 21 的所有新特性改进的模式匹配和记录模式支持更好的虚拟线程调试体验开发工具改进 更新的 UI/UX 设…

Java编程,配置mongoUri连接mongodb时,需对特殊字符进行转义

一、背景 java程序连接mongo有两种方式&#xff1a; 用户名和密码方式uri方式 1、用户名和密码 以用户数据库为例&#xff0c;注意看它的密码 spring:data:mongodb:host: 192.168.10.17database: db_user_serviceport: 3717username: user_servicepassword: user_service3…

学习笔记|MaxKB对接本地大模型时,选择Ollma还是vLLM?

在使用MaxKB开源知识库问答系统的过程中&#xff0c;除了对接在线大模型&#xff0c;一些用户出于资源配置、长期使用成本、安全性等多方面考虑&#xff0c;还在积极尝试通过Ollama、vLLM等模型推理框架对接本地离线大模型。而在用户实践的过程中&#xff0c;经常会对候选的模型…

Python 快速入门(上篇)❖ Python基础知识

Python 基础知识 Python安装**运行第一个程序:基本数据类型算术运算符变量赋值操作符转义符获取用户输入综合案例:简单计算器实现Python安装** Linux安装: yum install python36 -y或者编译安装指定版本:https://www.python.org/downloads/source/ wget https://www.pyt…

【1.2 Getting Started--->Installation Guide】

NVIDIA TensorRT DOCS 此 NVIDIA TensorRT 10.6.0 安装指南提供安装要求、TensorRT 包中包含的内容列表以及安装 TensorRT 的分步说明。 安装指南 摘要&#xff1a; 本 NVIDIA TensorRT 10.3.0 安装指南提供了安装要求、TensorRT 软件包中包含的内容列表以及安装 TensorRT 的…

RT_Thread内核源码分析(三)——线程

目录 1. 线程结构 2. 线程创建 2.1 静态线程创建 2.2 动态线程创建 2.3 源码分析 2.4 线程内存结构 3. 线程状态 3.1 线程状态分类 3.2 就绪状态和运行态 3.3 阻塞/挂起状态 3.3.1 阻塞工况 3.4 关闭状态 3.4.1 线程关闭接口 3.4.2 静态线程关闭 3.4.3 动态线程关…

Unity图形学之CubeMap立方体贴图

1.CubeMap&#xff1a;有六个面的贴图组成 2. 假反射&#xff1a;反射天空盒子 &#xff08;1&#xff09;正常UV采样&#xff1a; &#xff08;2&#xff09;Cube的采样&#xff1a;利用反射角采样&#xff0c;反射角X和Cube的交点采样 Shader "Custom/TestReflect"…

C语言基础学习:抽象数据类型(ADT)

基础概念 抽象数据类型&#xff08;ADT&#xff09;是一种数据类型&#xff0c;它定义了一组数据以及可以在这组数据上执行的操作&#xff0c;但隐藏了数据的具体存储方式和实现细节。在C语言中&#xff0c;抽象数据类型&#xff08;ADT&#xff09;是一种非常重要的概念&…

Qt-多元素控件

Qt中的多元素控件 Qt提供的多元素控件有&#xff1a; 这里的多元素控件都是两两一对的。 xxWidget和xxView的一个比较简单的理解就是&#xff1a; xxView是更底层的实现&#xff0c; xxWidget是基于xxView封装来的。 可以说&#xff0c;xxView使用起来比较麻烦&#xff0c;但…

2023年9月GESPC++一级真题解析

一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 题号 123456789101112131415 答案 CDBCDBACACBBDDA 1. 我们通常说的 “ 内存 ” 属于计算机中的&#xff08;&#xff09;。 A. 输出设备 B. 输 ⼊ 设备 C. 存储设备 D. 打印设备 【答案】 C 【考纲知识点】…

wend看源码-APISJON

项目地址 腾讯APIJSON官方网站 定义 APIJSON 可以定义为一个面向HTTP 协议的JSON 规范&#xff0c;一个面向数据访问层的ORM 框架。其主要工作流程包括&#xff1a;前端按照既定格式组装 JSON 请求报文&#xff0c;通过 APIJSON-ORM 将这些报文直接转换为 SQL 语句&#xff0c…

VMware虚拟机Ubuntu桥接模式突然连接不上网络解决办法

在Linux环境进行开发时突然发现虚拟机中的Ubuntu突然连接不上网络&#xff0c;图形化界面也找不到有线连接选项。在此记录解决办法。 解决办法 1. 在终端命令行输入以下命令&#xff1a; sudo service network-manager stop2. 然后编辑以下文件将其中NetworkingEnable fals…

丹摩征文活动|摩智算平台深度解析:Faster R-CNN模型的训练与测试实战

目录 文章前言Faster R-CNN的简介Faster RCNN的训练与测试提前准备1.1 mobaxterm&#xff08;远程连接服务器&#xff09;1.2 本文的源码下载 目标检测模型 Faster-Rcnn2.1云服务器平台 数据上传内置JupyterLab的使用本地连接使用DAMODEL实例获取实例的SSH访问信息通过SSH连接通…

【数据结构】归并排序 —— 递归及非递归解决归并排序

归并排序 一、归并排序1、归并排序的思想2、归并排序代码实现&#xff08;递归&#xff09;<1> 归并排序的递归区间<2> 归并排序的稳定性<3> 拷贝 3、归并排序代码实现&#xff08;非递归&#xff09;<1> 循环区间溢出问题 二、总结 一、归并排序 1、…