SSL原理简要

SSL的发展历史

1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。

1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。

1996年,SSL 3.0版问世,得到大规模应用。

1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版 TLS1.0版。

2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的 修订版 。

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。

TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

SSL协议介绍:

SSL是一个不依赖于平台和运用程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持。
在这里插入图片描述

SSL加密知名协议:

HTTP over SSL:

简写https,加密网页浏览是设计SSL的初衷,HTTP也是第一个使用SSL保障安全的应用层协议。

​ 当Netscape(网景)在它的Navigator里面运用HTTP over SSL的时候,使用https://来标识HTTP over SSL,因此我常见的https的全称就是HTTP over SSL。后来HTTPS在RFC2818被标准化。HTTPS工作在443端口,而HTTP默认工作在80端口。

Email over SSL:
类似于HTTP over SSL,邮件协议例如:

  • SMTP,POP3、IMAP也能支持SSL
  • SMTP over TLS的标准文档在RFC2487
  • POP3和IMAP overTLS的标准化文档在RFC2595.

SSL原理详解

SSL协议结构图:

在这里插入图片描述

ssl子协议讲解

SSL握手协议(重点):
1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现
2.client与server交换session key,用于连接后数据的传输加密和hash校验

SSL记录协议(重点):
它建立在可靠的传输(如TCP)之上,为高层协议提供数据封装、压缩与解压缩、加解密以及完整性检查等基本功能。
每个ssl记录包含如下信息

  • 内容类型
  • 协议版本
  • 记录数据的长度
  • 数据有效载荷
  • HMAC

密码变化协议
这个协议只包含一条信息(ChangeCipherSpec)。客户端和服务器双方都可以发送,目的是通知对方后面发送的数据将启用新协商的算法和密钥。

告警协议
客户机和服务器发现错误是,向对方发送一个警报信息,如果是致命错误,则算法立即关闭ssl连接,双方还会先删除相关的会话和密钥

ssl协议建立过程

在这里插入图片描述
在用SSL进行通信之前,首先要使用SSL的Handshake协议在通信两端握手,协商数据传输中要用到的相关安全参数(如加密算法、共享密钥、产生密钥所要的材料等),并对对端的身份进行验证。

SSL的建立过程总共有13个包,第一次建立至少需要9个包。

SSL抓包具体分析:

在这里插入图片描述
握手阶段如上图所示,可分为5步(使用Diffie – Hellman算法):

第一步,浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。

第三部,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。

第四部,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。

第五部,服务器发给浏览器一个session ticket。

在这里插入图片描述
Client Hello:客户端向服务端打招呼;携带支持的协议、支持的安全套件供服务端选择;

Server Hello:服务端回应客户客户端的招呼信息;结合客户端的信息,选择合适的加密套件;

Certificate:服务端向客户端发送自己的数字证书(此证书包含服务端的公钥),以实现验证身份;

Server Key Exchange:服务端向客户端发送基于选择的加密套件生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

Server Hello Done:服务端向客户端表示响应结束;

Client Key Exchange:客户端向服务端发送自己生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

Change Cipher Spec:变更密码规范;告知服务端/客户端,以后的通信都是基于AES加密的;

Encrypted Handshake Message:基于协商生成的密钥,用AES加密验证信息让服务端/客户端进行认证;如果对方可以解密,则双方认证无误开始通信;

New Session Ticket:是优化SSL连接的一种方法,此处不做特别说明

身份验证过程:

  • 权威ca会用自己的私钥加密服务器认证信息;

    当客户端访问服务器的时候,服务端会向客户端发送自己的证书,由内置在浏览器的ca公钥进行解密,得到服务端的公钥;

    由此验证公钥,私钥,从而达到验证身份的目的;

客户端Client Hello阶段:

  • 作用:客户端向服务端发送建立连接请求;

    此时,客户端会携带支持的版本号、支持的加密套件(包括认证算法、交换密钥算法、数据加密算法、数据数据校验)、客户端随机数(用于协商对称加密的密钥)。
    在这里插入图片描述

服务端Server Hello阶段:

  • 作用:根据客户端所携带的内容,确定建立连接版本、加密套件,生成服务端随机数(用于协商对称加密的密钥)
    在这里插入图片描述

服务端Certificate, Server Key Exchange, Server Hello Done阶段:
在这里插入图片描述
Certificate:向客户端发送由权威ca签发的证书,以验证身份
在这里插入图片描述
Server Key Exchange:基于Server Hello阶段选择的ECDHE交换密钥算法,发送椭圆曲线生成的公钥
在这里插入图片描述
Server Hello Done:服务端结束打招呼阶段

协商对称加密密钥的过程说明:

  • ECDHE算法会根据自己的私钥、客户端/服务端传递过来的公钥、客户端/服务端的随机数生成密钥;

    客户端与服务端通过离散对数的幂运算生成的密钥是一样的;

    由此客户端/服务端生成的对称加密密钥是一致的,但还是会发送一条由此密钥加密的消息让对方进行验证;

客户端Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message阶段:
在这里插入图片描述

Client Key Exchange:基于协商选择的ECDHE交换密钥算法,发送它生成的椭圆曲线的公钥;
在这里插入图片描述
Change Cipher Spec:变更密码规范协议,它非常简单,就是一条通知消息,告知对方以后的通信都是加密的;

Enctypted Handshare Message:生成对称加密密钥之后,发送一条加密的数据,让服务端解密验证;

服务端New Session Ticket, Change Cipher Spec, Encrypted Handshake Message阶段:
在这里插入图片描述

New Session Ticket:TLS建立连接的优化方法,此处不说;

Change Cipher Spec:告诉客户端以后的通信是加密的;

Enctypted Handshare Message:发送一条经过密钥加密的数据,让客户端验证;验证通过则开始进行加密通信;

Applicatiion Data:表示客户端/服务端已经开始基于TLS进行通信了;
在这里插入图片描述
参考文章1
参考文章2
参考文章3
参考文章4

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值