SSL协议体系结构[通俗易懂]

SSL协议体系结构[通俗易懂]SSL原理及应用(1)SSL协议体系结构SSL(SecureSocketsLayer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。由Netscape研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。从图8-1中可以看到,

大家好,又见面了,我是你们的朋友全栈君。

SSL原理及应用(1)SSL协议体系结构

SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。Netscape研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。

当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。从图8-1中可以看到,IE同时支持SSL 2.0和SSL 3.0两个版本。

 

SSL协议体系结构[通俗易懂]

 

图8-1            IE支持的SSL版本

事实上各位读者已经明白了SSL的工作原理,回顾我前面博客讲到的公钥加密的通信原理,而SSL使用的就是公钥加密系统。现在完全可以构想基于SSL的数据通信流程。前面说过,SSL是一种协议,本节重点在于协议本身和它是如何工作在各种协议之间来提供安全通信的。

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。

SSL协议体系结构如图8-2所示。

SSL协议体系结构[通俗易懂]

图8-2            SSL协议体系结构

从体系结构图可以看出,SSL协议可分为两层:

q  SSL记录协议(SSL Record Protocol):建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

q  SSL握手协议(SSL Handshake Protocol):建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议实际上是SSL握手协议、SSL修改密文协议SSL警告协议和SSL记录协议组成的一个协议族。下面分别进行介绍。

SSL记录协议

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

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

SSL记录协议定义了要传输数据的格式,它位于一些可靠的传输协议之上(如TCP),用于各种更高层协议的封装。主要完成分组和组合、压缩和解压缩,以及消息认证和加密等。

SSL记录协议主要操作流程如图8-3所示。

SSL协议体系结构[通俗易懂]

图8-3            SSL记录协议的操作流程

图中的五个操作简单介绍如下:

1)每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。

2)压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。

3)在压缩数据上计算消息认证MAC。

4)对压缩数据及MAC进行加密。

5)增加SSL记录。

SSL记录协议字段的结构如图8-4所示。

SSL协议体系结构[通俗易懂]

图8-4            SSL记录协议字段的结构

如图8-4 SSL记录协议字段结构主要由内容类型、主要版本、次要版本、压缩长度组成,简介如下:

1)        内容类型(8位):封装的高层协议。

2)        主要版本(8位):使用的SSL主要版本。对于SSL v3已经定义的内容类型是握手协议、警告协议、改变密码格式协议和应用数据协议。

3)        次要版本(8位):使用的SSL次要版本。对于SSL v3.0,值为0。

4)        压缩长度(16位):明文数据(如果选用压缩则是压缩数据)以字节为单位的长度。

说明 已经定义的内容类型是握手协议、警告协议、修改密文协议

SSL报警协议

SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:

q   Fatal错误,如传递数据过程中发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录。

q  Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

SSL修改密文协议

为了保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。所以有了SSL修改密文协议SSL修改密文协议是3个高层的特定协议之一,也是其中最简单的一个。在客服端和服务器完成握手协议之后,它需要向对方发送相关消息(该消息只包含一个值为1的单字节),通知对方随后的数据将用刚刚协商的密码规范算法和关联的密钥处理,并负责协调本方模块按照协商的算法和密钥工作。

SSL握手协议

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

这些消息交换能够实现如下操作:

q  客户机认证服务器

q  允许客户机与服务器选择双方都支持的密码算法

q  可选择的服务器认证客户

q  使用公钥加密技术生成共享密钥

q  建立加密SSL连接

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

q  类型(1字节):该字段指明使用的SSL握手协议报文类型。

q  长度(3字节):以字节为单位的报文长度。

q  内容(≥1字节):使用的报文的有关参数。

SSL握手协议的报文类型如表8-1所示。

表8-1  SSL握手协议报文类型

报文类型

参数

hello_request

client_hello

版本、随机数、会话ID、密文族、压缩方法

server_hello

版本、随机数、会话ID、密文族、压缩方法

certificate

x.509V3证书链

server_key_exchange

参数、签名

certificate_request

类型、授权

server_done

certificate_verify

签名

client_key_exchange

参数、签名

finished

Hash

SSL握手协议过程如图8-5所示。

SSL协议体系结构[通俗易懂]

图8-5            SSL握手协议的过程(带*的传输是可选的,或者与站点相关的,并不总是发送的报文)

现在看图8-5,分步说明SSL握手协议的全过程:

步骤1      建立安全能力。

客户机向服务器发送client_hello报文,服务器向客户机回应server_hello报文。建立的安全属性包括:协议版本、会话ID、密文族、压缩方法,同时生成并交换用于防止重放攻击的随机数。密文族参数包括密钥交换方法(Deffie-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_hello与server_hello定义的密钥交换的类型。最后,客户可能发送client_verify 报文来校验客户发送的证书,这个报文只能在具有签名作用的客户证书之后发送。

步骤4      结束。

客户发送change_cipher_spec报文并将挂起的CipherSpec复制到当前的CipherSpec。这个报文使用的是修改密文协议。然后,客户在新的算法、对称密钥和MAC秘密之下立即发送finished报文。finished报文验证密钥交换和鉴别过程是成功的。服务器对这两个报文响应,发送自己的change_cipher_spec报文、finished报文。握手结束,客户与服务器可以发送应用层数据了。

当客户从服务器端传送的证书中获得相关信息时,需要检查以下内容来完成对服务器的认证:

q   时间是否在证书的合法期限内;

q   签发证书的机关是否客户端信任的;

q   签发证书的公钥是否符合签发者的数字签名;

q   证书中的服务器域名是否符合服务器自己真正的域名。

服务器被验证成功后,客户继续进行握手过程。

同样地,服务器从客户传送的证书中获得相关信息认证客户的身份,需要检查:

q   用户的公钥是否符合用户的数字签名;

q   时间是否在证书的合法期限内;

q   签发证书的机关是否服务器信任的;

q   用户的证书是否被列在服务器的LDAP里用户的信息中;

q   得到验证的用户是否仍然有权限访问请求的服务器资源。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140607.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • c++ findwindow函数_matlab中怎么查找函数的用法

    c++ findwindow函数_matlab中怎么查找函数的用法FindWindow用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。如果要从一个窗口的子窗口中查找需要使用FindWindowEX。 函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。   函数原型:HWNDFindWindowEx

  • STM32之HAL库的串口接收丢字节_stm32标准库还有更新吗

    STM32之HAL库的串口接收丢字节_stm32标准库还有更新吗1STM32的三种开发方式通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发方式彼此之间的区别,所以笔者想以一种非常直白的方式,用自己的理解…

  • win10的pagefile.sys是什么文件?pagefile.sys文件太大如何移动到D盘中?

    win10的pagefile.sys是什么文件?pagefile.sys文件太大如何移动到D盘中?    在C盘系统下,有一个命名为pagefile.sys的文件占用C盘太大的空间,不少用户怕删除pagefile.sys文件之后会对系统造成影响,而不少用户想要将pagefile.sys文件移动到D盘中。那么pagefile.sys是什么文件?Win10系统下pagefile.sys文件太大如何移动到D盘中?pagefile.sys是什么文件?pagefile.sys文件是操作系…

  • UVA – 12130 Summits

    UVA – 12130 Summits

  • SqlSessionTemplate源码解析「建议收藏」

    SqlSessionTemplate源码解析「建议收藏」简介SqlSessionTemplate是mybatis-spring中最核心的一个类,我们知道MyBatis暴露出的最外层接口是SqlSession,所有的操作都是借助SqlSession接口的方法来完成的。MyBatis本身有一个默认实现类,也是我们在单独使用MyBatis时最常见的一个实现类DefalutSqlSession。而当我们将MyBatis与Spring整合时,便不再使用这个默认…

  • ValidateRequest 属性[通俗易懂]

    ValidateRequest 属性[通俗易懂]               在ASP.NET1.1中,@Page指令上的ValidateRequest属性被打开后,将检查以确定用户没有在查询字符串、Cookie或表单域中发送有潜在危险性的HTML标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许HTML标记通过,必须主动禁用该属性。  Valida

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号