【SSL】SSL工作原理
SSL技术白皮书
关键词:SSL,PKI,MAC
摘 要:SSL利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。本文介绍了SSL的产生背景、安全机制、工作过程及典型组网应用。
缩略语:
缩略语 |
英文全名 |
中文解释 |
AES |
Advanced Encryption Standard |
高级加密标准 |
CA |
Certificate Authority |
证书机构 |
DES |
Data Encryption Standard |
数据加密标准 |
HTTPS |
Hypertext Transfer Protocol Secure |
安全超文本传输协议 |
MAC |
Message Authentication Code |
消息验证码 |
MD5 |
Message Digest 5 |
消息摘要算法5 |
PKI |
Public Key Infrastructure |
公钥基础设施 |
RSA |
Rivest Shamir and Adleman |
非对称密钥算法的一种 |
SHA |
Secure Hash Algorithm |
安全散列算法 |
SSL |
Secure Sockets Layer |
安全套接层 |
VPN |
Virtual Private Network |
虚拟专有网络 |
1 概述
1.1 产生背景
Netscape公司提出的安全协议SSL,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。SSL可以为HTTP提供安全连接,从而很大程度上改善了万维网的安全性问题。
1.2 技术优点
l 提供较高的安全性保证。SSL利用数据加密、身份验证和消息完整性验证机制,保证网络上数据传输的安全性。
l 支持各种应用层协议。虽然SSL设计的初衷是为了解决万维网安全性问题,但是由于SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。
2 协议安全机制
l 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
l 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
l 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
2.1 数据传输的机密性
网络上传输的数据很容易被非法用户窃取,SSL采用在通信双方之间建立加密通道的方法保证数据传输的机密性。
所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方;接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证数据传输的机密性。
加解密算法分为两类:
l 对称密钥算法:数据加密和解密时使用相同的密钥。
l 非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据只能用相应的私钥(或公钥)才能解密。
与非对称密钥算法相比,对称密钥算法具有计算速度快的优点,通常用于对大量信息进行加密(如对所有报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法,目前主要支持的算法有DES、3DES、AES等,这些算法都可以有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥完全一致。因此,利用对称密钥算法加密传输数据之前,需要在通信两端部署相同的密钥。对称密钥的部署方法请参见“2.4 利用非对称密钥算法保证密钥本身的安全”。
2.2 身份验证机制
电子商务和网上银行等应用中必须保证要登录的Web服务器是真实的,以免重要信息被非法窃取。SSL利用数字签名来验证通信对端的身份。
非对称密钥算法可以用来实现数字签名。由于通过私钥加密后的数据只能利用对应的公钥进行解密,因此根据解密是否成功,就可以判断发送者的身份,如同发送者对数据进行了“签名”。例如,Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密,如果解密结果与固定信息相同,那么就能够确认信息的发送者为Alice,这个过程就称为数字签名。
SSL客户端必须验证SSL服务器的身份,SSL服务器是否验证SSL客户端的身份,则由SSL服务器决定。SSL客户端和SSL服务器的身份验证过程,请参见“3.2 SSL握手过程”。
使用数字签名验证身份时,需要确保被验证者的公钥是真实的,否则,非法用户可能会冒充被验证者与验证者通信。如图1所示,Cindy冒充Bob,将自己的公钥发给Alice,并利用自己的私钥计算出签名发送给Alice,Alice利用“Bob”的公钥(实际上为Cindy的公钥)成功验证该签名,则Alice认为Bob的身份验证成功,而实际上与Alice通信的是冒充Bob的Cindy。SSL利用PKI提供的机制保证公钥的真实性,详细介绍请参见“2.5 利用PKI保证公钥的真实性”。
图1 伪造公钥
2.3 消息完整性验证
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。
l 消息的任何改变,都会引起输出的固定长度数据产生变化。通过比较MAC值,可以保证接收者能够发现消息的改变。
l MAC算法需要密钥的参与,因此没有密钥的非法用户在改变消息的内容后,无法添加正确的MAC值,从而保证非法用户无法随意修改消息内容。
2.4 利用非对称密钥算法保证密钥本身的安全
对称密钥算法和MAC算法要求通信双方具有相同的密钥,否则解密或MAC值验证将失败。因此,要建立加密通道或验证消息完整性,必须先在通信双方部署一致的密钥。
l 实际上,SSL客户端发送给SSL服务器的密钥不能直接用来加密数据或计算MAC值,该密钥是用来计算对称密钥和MAC密钥的信息,称为premaster secret。SSL客户端和SSL服务器利用premaster secret计算出相同的主密钥(master secret),再利用master secret生成用于对称密钥算法、MAC算法等的密钥。premaster secret是计算对称密钥、MAC算法密钥的关键。
l 用来实现密钥交换的算法称为密钥交换算法。非对称密钥算法RSA用于密钥交换时,也可以称之为密钥交换算法。
利用非对称密钥算法加密密钥之前,发送者需要获取接收者的公钥,并保证该公钥确实属于接收者,否则,密钥可能会被非法用户窃取。如图1所示,Cindy冒充Bob,将自己的公钥发给Alice,Alice利用Cindy的公钥加密发送给Bob的数据,Bob由于没有对应的私钥无法解密该数据,而Cindy截取数据后,可以利用自己的私钥解密该数据。SSL利用PKI提供的机制保证公钥的真实性,详细介绍请参见“2.5 利用PKI保证公钥的真实性”。
2.5 利用PKI保证公钥的真实性
3 协议工作过程
3.1 SSL的分层结构
图4 SSL协议分层
如图4所示,SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层:
l 上层为SSL握手协议(SSL handshake protocol)、SSL密码变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol);
l 底层为SSL记录协议(SSL record protocol)。
其中:
l SSL握手协议:是SSL协议非常重要的组成部分,用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在服务器和客户端之间安全地交换密钥、实现服务器和客户端的身份验证。
l SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端,随后的报文都将使用新协商的加密套件和密钥进行保护和传输。
l SSL警告协议:用来向通信对端报告告警信息,消息中包含告警的严重级别和描述。
l SSL记录协议:主要负责对上层的数据(SSL握手协议、SSL密码变化协议、SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密,并把处理后的记录块传输给对端。
3.2 SSL握手过程
不同情况下,SSL握手过程存在差异。下面将分别描述以下三种情况下的握手过程:
3.2.1 只验证服务器的SSL握手过程
如图5所示,只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:
(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给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计算。
(8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
& 说明:
l Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。
l 计算Hash值,指的是利用Hash算法(MD5或SHA)将任意长度的数据转换为固定长度的数据。
3.2.2 验证服务器和客户端的SSL握手过程
(1) SSL服务器发送Certificate Request消息,请求SSL客户端将其证书发送给SSL服务器。
(2) SSL客户端通过Certificate消息将携带自己公钥的证书发送给SSL服务器。SSL服务器验证该证书的合法性。
(3) SSL客户端计算已交互的握手消息、主密钥的Hash值,利用自己的私钥对其进行加密,并通过Certificate Verify消息发送给SSL服务器。
3.2.3 恢复原有会话的SSL握手过程
协商会话参数、建立会话的过程中,需要使用非对称密钥算法来加密密钥、验证通信对端的身份,计算量较大,占用了大量的系统资源。为了简化SSL握手过程,SSL允许重用已经协商过的会话,具体过程为:
(1) SSL客户端发送Client Hello消息,消息中的会话ID设置为计划重用的会话的ID。
(2) SSL服务器如果允许重用该会话,则通过在Server Hello消息中设置相同的会话ID来应答。这样,SSL客户端和SSL服务器就可以利用原有会话的密钥和加密套件,不必重新协商。
(3) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用原有会话的密钥和加密套件进行加密和MAC计算。
(4) SSL客户端计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSL服务器,以便SSL服务器判断密钥和加密套件是否正确。
(5) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用原有会话的密钥和加密套件进行加密和MAC计算。
(6) SSL服务器计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSL客户端,以便SSL客户端判断密钥和加密套件是否正确。
4 典型组网应用
4.1 HTTPS
HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。
4.2 SSL VPN
5 参考文献
l draft-freier-ssl-version3-02:The SSL Protocol Version 3.0
参考网址:http://www.h3c.com.cn/Products___Technology/Technology/Security_Encrypt/Other_technology/Technology_book/200812/622834_30003_0.htm#_Toc212542730
【SSL】SSL工作原理相关推荐
- 蚂蚁区块链第9课 SSL/TLS工作原理及在蚂蚁BAAS中的应用
1,摘要 辉哥在学习蚂蚁BAAS系统时,发现了一堆证书或者公私钥名称,包括trustCa,ca.crt,client.crt,client.key,pub.txt,MyPKCS12.p12等等文件,不 ...
- SSL/TLS 双向认证(一) -- SSL/TLS工作原理
本文部分参考: https://www.wosign.com/faq/faq2016-0309-03.htm https://www.wosign.com/faq/faq2016-0309-04.ht ...
- SSL/TLS工作原理
一: SSL/TLS介绍 什么是SSL,什么是TLS呢?官话说SSL是安全套接层(secure sockets layer),TLS是SSL的继任者,叫传输层安全(transport layer se ...
- SSL/TLS 双向认证(一) -- SSL/TLS 工作原理
本文部分参考: https://www.wosign.com/faq/faq2016-0309-03.htm https://www.wosign.com/faq/faq2016-0309-04.ht ...
- https与ssl的工作原理
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure, ...
- TLS/SSL协议工作原理
1.TLS/SSL的功能实现原理简单介绍 HTTPS协议的主要功能基本都依赖于TLS/SSL协议,TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash.对称加密和非对称加密,其利用非对称 ...
- SSL 与 数字证书 的基本概念和工作原理
SSL是让人头大的东西,看起来很复杂,我学过信息安全课,但是对SSL仍然是模糊一片.对于数字证书也是一知半解,从来没有去认真研究过.只知道个大概,"反正就是对称加密和非对称加密", ...
- [转]SSL 与 数字证书 的基本概念和工作原理
源地址:http://www.linuxde.net/2012/03/8301.html ======================================================= ...
- 什么是 SSL 证书及其工作原理
什么是 SSL 证书? 了解 SSL 的用途.SSL 和 TLS 之间的区别.它们的工作方式以及何时应该使用它们. 什么是 SSL 证书? SSL(安全套接字层)是 TLS(传输层安全性)的通用名称, ...
- https ssl证书的工作原理及使用相关知识收集
https ssl证书的工作原理及使用相关知识收集 SSL 与 数字证书 的基本概念和工作原理 前言 SSL是让人头大的东西,看起来很复杂,我学过信息安全课,但是对SSL仍然是模糊一片.对于数字证书也 ...
最新文章
- python3安装cocos2d_(3)在Windows7上搭建Cocos2d-x
- mysql5.5不兼容5.6sql文件_为什么这段sql在我的电脑上可以执行,另外一台不可以。使用的mysql5.6 另一台是5.5...
- 基于ServletJsp的网上书店设计(一)
- mysql服务器性能剖析,高性能MySQL–服务器性能剖析
- Linux下使用Nexus搭建Maven私服
- oracle 讲师费用,20080929--ORACLE培训笔记未整理版(讲师:ORA-600)
- C#学习(6)——LINQ学习
- java IO流的一些操作方法
- F-Stack KNI配置注意事项
- matlab计算轮廓曲率半径,用matlab求出最小曲率半径曲线方程实例
- Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
- 怎么把vue改写成html,vue将字符串转为为html
- opencv-python傅里叶变换以及逆变换
- 基于SpringBoot实现邮箱找回密码
- win10右键卡顿原因_win10系统点击鼠标右键出现卡顿的解决方法
- 每一个情绪稳定的人背后,都是高情商和大格局
- android 混淆规则作用,Android混淆规则
- 人工智能数学基础之函数与极限(无穷小与夹逼定理),附视频详解【菜鸟窝出品】
- 写一个轻量化的Google翻译脚本
- 储能控制器,风光储、风光储并网直流微电网simulink仿真模型
热门文章
- 通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷
- SuperMap.IS.AjaxScript缓冲区分析及专题图制作
- PIManager V1.0 Release -[2007-06-05]
- java:区间k大数查询
- jmeter生成html报告修改,jmeter:测试后生成html报告
- mysql 提升 权限_如何使用MySQL提升权限
- spwm逆变器双极性matlab教程,三相逆变器双极性SPWM调制技术的仿真(论文资料).doc...
- Java黑皮书课后题第5章:*5.47(商业:检测ISBN-13)ISBN-13是标识书籍的新标准。它使用13位数字d1d2d3~d12d13,d13是校验和。如果校验和为10,则替换为0。求所有数字
- linux c 文件映射,linuxc试题
- 虚拟机下CentOS7开启SSH连接