`

ssl工作原理

阅读更多

SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信。  

在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

SSL协议的三个特性

  ① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。

  ② 鉴别:可选的客户端认证,和强制的服务器端认证。

  ③ 完整性:传送的消息包括消息完整性检查(使用MAC)。

SSL的位置

  SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

SSL的工作原理

  握手协议(Handshake protocol)

  记录协议(Record protocol)

  警报协议(Alert protocol)

1、握手协议

握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。

2、记录协议 

  记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:

  (1)保密性:使用握手协议定义的秘密密钥实现

  (2)完整性:握手协议定义了MAC,用于保证消息完整性

3、警报协议

  客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。

 

故事叙述

我们假设A与B通信,A是SSL客户端,B是SSL服务器端,加密后的消息放在方括号[]里,以突出和明文消息的区别。双方的处理动作的说明用圆括号()括起。

 A:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。  

B:我们用DES-RSA-SHA这对组合好了。这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给A)。目前没有别的可说的了。  

A:(查看证书上B的名字是否无误,并通过手头早已有的CA的证书验证了B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性)

(产生一份秘密消息,这份秘密消息处理后将用作加密密钥,加密初始化向量和hmac的密钥。将这份秘密消息-协议中称为per_mas ter_secret-用B的公钥加密,封装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法窃ting)  

我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchange发给B)  

注意,下面我就要用加密的办法给你发消息了!  

(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)  [我说完了]  

B:(用自己的私钥将C lientKeyExchange中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)。  

注意,我也要开始用加密的办法给你发消息了!  [我说完了]  

A:[我的秘密是……]  B:[其它人不会听到的……]

SSL 握手  

SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。  图 SSL的客户端与服务器端的认证握手

 

 

 

 

 

(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法。消息也包含 28 字节的随机数。  

(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。  

  注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。  (3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)  

    如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。  (4) 服务器发出服务器“您好完成”消息并等待客户端响应。  

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。  

   如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。  

(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret (一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码 ( MAC )密钥(用服务器的公用密钥加密的)。  

   如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。  

   注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。  

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret ,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。

 (8) 服务器以自己的“更改密码规范”和“已完成”消息响应。  

(9) SSL 握手结束,且可以发送加密的应用程序数据。

 

 

 

  • 大小: 51.9 KB
分享到:
评论

相关推荐

    SSL工作原理详解

    SSL的工作原理涉及到多个关键概念和技术。 首先,SSL的核心在于加密,它使用了公钥加密算法,如RSA,这是一种非对称加密技术。在公钥密码系统中,每个用户有一对密钥:公钥和私钥。公钥是可以公开的,用于加密数据...

    SSL工作原理详解说明

    综上所述,SSL工作原理的核心是通过公钥/私钥加密技术,结合数字签名和证书机制,确保了网络通信的机密性、完整性和用户身份的真实性。这一技术对于保障在线交易、电子邮件等敏感信息的安全至关重要。

    SSL工作原理详解[参照].pdf

    SSL 工作原理详解 SSL(Secure Sockets Layer,安全套接层)是一种安全协议,用于保护在Internet上传输的数据的安全。SSL工作原理是在浏览器和Web服务器之间建立一个安全的连接,以确保数据的机密性、完整性和认证...

    HTTPS协议详解(二):TLS:SSL工作原理1

    HTTPS协议详解(二):TLS:SSL工作原理1

    HTTPS(SSL)工作原理

    ### HTTPS(SSL)工作原理详解 #### 一、引言 HTTPS(超文本传输安全协议)作为现代互联网安全通信的基础,对于保护用户隐私和数据安全至关重要。本文将深入探讨HTTPS的工作原理及其背后的SSL/TLS机制。 #### 二...

    ssl原理及应用实用.pdf

    SSL工作原理中,数据加密使用的是对称加密算法,如DES或RC4,而密钥交换和数字签名则依赖于非对称加密算法,如RSA。在SSL握手过程中,客户端首先发送其支持的加密算法列表,服务器则选择最安全的算法进行通信。在SSL...

    WebLogic 配置SSL详解

    1.2 SSL 工作原理 SSL 协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同的 SSL 协议版本包括 SSL 2.0、SSL 3.0 和 TLS 1.0 等。TLS ...

    tomcat+SSL

    【描述】:本文档将详细介绍如何在Apache Tomcat服务器上实现SSL双向认证的配置过程,包括基础概念、SSL工作原理及具体的配置步骤。 【标签】:Tomcat, SSL, 配置SSL, 双向认证 【正文】: 一、SSL基础 1. **...

    SSL.zip

    下面我们将详细探讨SSL的工作原理、C#中如何使用SSL以及相关的注意事项: 1. **SSL工作原理:** - 握手过程:当客户端(如浏览器)试图连接到服务器时,它们首先进行SSL握手。这个过程包括客户端发送一个“Client...

    java_ssl.rar_JAVA SSL _The Client_ssl_ssl java

    Java SSL(Secure Socket Layer)是Java平台中用于实现安全网络通信的重要组成部分,它提供了一种在互联网上...通过这个压缩包的学习,开发者可以深入理解SSL工作原理,从而更好地在实际项目中应用和调试SSL连接问题。

    SSL网络编程范例,服务器端

    首先,理解SSL工作原理至关重要。SSL协议分为握手阶段和数据传输阶段。握手阶段包括: 1. 客户端向服务器发送一个连接请求(ClientHello),包含支持的SSL版本和加密套件。 2. 服务器回应(ServerHello),选择最高...

    WebLogic SSL 安全服务器设置

    #### 1.2 SSL工作原理 SSL协议主要包含以下几个关键步骤: - **整体结构概览**:SSL位于应用层与传输层之间,为TCP/IP连接提供加密处理。 - **加密基础知识**:SSL使用公钥和私钥加密机制,公钥用于加密,私钥用于...

    ssl原理及应用ssl原理及应用

    总的来说,SSL原理及应用是互联网安全的基础,对于保护用户隐私、确保企业信息安全具有至关重要的作用。理解和掌握SSL的工作原理,对于从事网络开发、运维、安全等相关工作的专业人士来说,是必备的知识技能。

    SSL工作原理详解.docx

    SSL的工作原理涉及到多个层面,包括加密技术、身份验证和数据完整性保护。 首先,SSL工作在TCP/IP协议栈中的应用层和传输层之间,即Socket层,为上层应用如HTTP、FTP等提供安全服务。当用户通过浏览器访问网站时,...

    SSL相关资料

    SSL(Secure Sockets Layer)是安全套接层的缩写,是互联网上广泛采用的一种网络安全协议,用于在客户端和...通过学习压缩包中的"SSL工作原理详解.pdf"和"SSL工作原理.pdf",可以更全面地掌握这一关键的网络安全概念。

    说明性文档有关于SSL

    在这个文档中,我们将深入探讨SSL的工作原理、重要性以及如何使用它。 一、SSL工作原理 SSL通过建立一个安全的连接来保障数据传输的安全。这个过程分为几个步骤: 1. **握手协议**:当客户端(如浏览器)尝试连接...

    SSL原理及应用

    SSL/TLS工作在传输层之上,其作用在于为传输层的数据提供安全保护,使得即使在网络层和数据链路层的数据传输过程中被拦截,也无法解读应用层的敏感信息。这主要通过公钥和私钥加密技术实现,公钥用于加密,私钥用于...

Global site tag (gtag.js) - Google Analytics