美文网首页
SSL协议杂谈

SSL协议杂谈

作者: 末班车难忘忘川 | 来源:发表于2018-05-27 15:45 被阅读0次

概述

1. 安全套接字(Secure Socket Layer,SSL)协议客户端与服务器之间安全交换信息的协议

2. 允许重用已经协商过的会话

3. 协议位置:位于传输层和应用层之间

4. 子协议

(1) 握手协议

        协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)

        实现双方的身份验证

        在双方之间安全地交换密钥

 (2)密码变化协议

        通过此协议通知对方,后续报文将使用新协商的加密套件和密钥进行保护和传输。(起通知作用)

(3)警告协议

        向通信对端报告告警信息

 (4) 记录协议

        主要负责对上层的数据(SSL握手协议、SSL密码变化协议、SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密,并把处理后的记录块传输给对端

协议提供的安全机制

1. 数据传输的机密性

利用对称密钥算法(DES,AES等)对传输的数据进行加密

利用非对称密钥算法保证密钥本身的安全

2. 身份验证机制

CA签名过的数字证书,对服务器和客户端进行身份验证,其中客户端的身份验证是可选的

体现在SSL的握手过程

SSL利用PKI提供的机制保证公钥的真实性

3. 消息完整性验证

消息传输过程中使用MAC算法来检验消息的完整性

MAC算法要求通信双方具有相同的密钥,同样利用非对称密钥算法保证密钥本身的安全

握手过程

1. 只验证服务器的SSL握手过程

流程图

具体步骤

(1)SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器

(2)SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。

(3)SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。

(4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。

(5)SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服务器

(6)SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算

(7)SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则服务端证明了密钥和加密套件协商成功

(8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算

(9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则客户端证明了密钥和加密套件协商成功。

注:Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息

2. 恢复原有会话的SSL握手过程

流程图

具体步骤

(1)SSL客户端发送Client Hello消息,消息中的会话ID设置为计划重用的会话的ID

(2)SSL服务器如果允许重用该会话,则通过在Server Hello消息中设置相同的会话ID来应答。这样,SSL客户端和SSL服务器就可以利用原有会话的密钥和加密套件,不必重新协商

(...)后面四个步骤和前面一样,起验证作用

TLS协议

Transport Layer Security 安全传输层协议

互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版

消息摘要(Message Digest)

What

将长度不固定的消息(message)作为输入参数,运行特定的Hash函数,生成固定长度的输出,这个输出就是Hash,也称为这个消息的消息摘要(Message Digest)

Why

传统的checksum是弱校验。可以将一些位翻转校验出来,但是却无法校验出一些复杂的数据错误、人为制造的数据篡改

How

计算出消息摘要,附在原始数据的尾部。到达目的地,先将原始数据(message)与消息摘要(message digest)分离,然后运行同样的Hash算法,生成自己的消息摘要,比较两个消息摘要,相同则校验通过。

算法不可逆

常见算法

CRC(循环冗余校验) 算法族

CRC32 ----32位的校验值

MD(Message-Digest Algorithm)算法族

MD2、MD4、MD5 ----128位的校验值

SHA(Secure Hash Algorithm) 算法族

SHA1 ---- 160位

SHA256 ---- 256位

SHA384 ---- 384位

SHA512 ---- 512位

MAC(Message Authentication Code)

是基于密钥和消息摘要所获得的一个值

在发送数据之前,发送方首先使用通信双方协商好的散列函数计算其摘要值。在双方共享的会话密钥作用下,由摘要值进一步生成消息验证码。

HMAC(Hash-based Message Authentication Code)

密钥参与消息摘要的运算,比MAC更安全

上文提到的常规Hash算法,如MD5、SHA,只有一个输入参数:消息

如果输入参数有两个,一个是原始数据,另外一个是密钥(Key),将会生成一个加密的消息摘要HMAC。那第三方即使篡改数据,由于没有密钥,很难生成一个全新的加密摘要而不被终点主机发现并丢弃。

应用场景---数字证书签名

将主机(服务器)的数字证书(明文)作为输入参数,生成Message Digest

然后用CA的私钥加密,这个加密过的Message Digest就变成了CA的数字签名,附在原始数字证书(明文)的末尾,成为一个整体,此整体即为CA签名过的数字证书(数字证书明文+私钥加密过的摘要)

PKI(Public Key Infrastructure)

公开密钥基础设施,也就是利用公开密钥机制建立起来的基础设施

三要素

数字证书

本质是是一个包含用户的公钥及其身份信息的文件

证书的格式和验证方法普遍遵循X.509 国际标准

由权威机构——CA签发,并由CA保证数字证书的真实性

认证机关CA

本质是一个网络应用程序

在技术上,伪造证明书是非常简单的。认证机关的可信度,直接与证书的可信度挂钩。在很多国家认证机关都是由政府在主导建设,常常被视作一个社会性基础设施的一个环节。

证书库

证书信任链

证书之间的信任关系,是可以嵌套的

根证书

除了根证书C,其它证书都要依靠上一级的证书来证明自己

根证书不需要被证明

相关文章

网友评论

      本文标题:SSL协议杂谈

      本文链接:https://www.haomeiwen.com/subject/dkvbjftx.html