首页 > 编程知识 正文

ssl证书工作原理(SSL原理简要)

时间:2023-05-05 19:24:30 阅读:124040 作者:356

在SSL的发展历史1994年,NetScape公司设计了SSL协议(安全套接字层) 1.0版,但尚未发布。

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

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

1999年,互联网标准化组织ISOC宣布了SSL升级版TLS 1.0版,接替NetScape公司。

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协议和各种APP应用层协议之间,以提高数据通信的安全支持。

SSL加密知名协议:HTTP over SSL:

简称HTTPs,加密网络浏览是设计SSL的初衷,http也是第一个使用SSL保障安全的APP应用层协议。

当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也可以通过SSLSMTP over TLS的标准文档RFC2487POP3和IMAP overTLS的标准文档RFC2595. SSL原理详细理解SSL协议结构图:

ssl子协议说明ssl握手(重点) :

1 .身份验证,客户端和服务器确认对方与其连接,不是第三方欺骗,而是凭凭证实现

2 .客户端与服务器交换会话密钥,用于连接后数据的传输加密和哈希检查

SSL日志记录协议(重点) :

它构建在可靠的传输(如TCP )之上,为高级协议提供基本功能,如数据封装、压缩和解压缩、加密以及完整性检查。

每个ssl记录都包含以下信息

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

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

警告协议

客户端和服务器发现错误,向对方发送警告消息,如果是致命错误,算法立即关闭ssl连接,双方先删除相关会话和密钥

ssl协议创建过程

在使用SSL进行通信之前,首先使用SSL的Handshake协议在通信的两端握手,协商用于数据传输的相关安全参数,包括加密算法、共享密钥和生成密钥所需的资料

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

SSL包的具体分析:

握手阶段如上图所示,分为五个步骤。 diffie使用hellman算法。

在第一步中,浏览器提供协议版本号、客户端生成的随机数(客户端随机)和客户端支持的加密方法。

在第2步中,服务器确认双方使用的加密方法、使用的tls版本号和随机数。

第三,它提供数字证书和由一个服务执行Diffie-Hellman算法生成的参数,例如pubkey。

第四,浏览器获取服务器发送来的pubkey,计算另一个pubkey并将其发送到服务器。

第五,服务器向浏览器发送会话工具包。

客户端hello :客户端向服务端问好,携带支持的合同、支持的安全工具包,供服务端选择

Server Hello :服务端回应客户客户端的问候; 根据客户端信息选择合适的加密套件;

Certificate :服务器向客户端发送自己的数字证书,其中包含服务器公钥以进行认证。

Server Key Exchange :服务器端将基于所选加密套件生成的公钥发送到客户端。 此公钥是椭圆曲线的公钥,用于协商对称加密的密钥。

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

客户端密钥交换(客户端将自己生成的公钥发送到服务端)公钥是椭圆曲线的公钥,用于协商对称加密的密钥);

变更密码规格:变更密码规格; 告知服务端/客户端今后的通信均基于AES加密;

加密手持消息:基于协商生成

成的密钥,用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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。