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  产生背景

基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活,受到人们的青睐。因为这些应用都须要在网络上进行在线交易,它们对网络通信的安全性提出了更高的要求。传统的万维网协议HTTP不具备安全机制——採用明文的形式数据传输、不能验证通信两方的身份、无法防止传输的数据被篡改等,导致HTTP无法满足电子商务和网上银行等应用的安全性要求。

Netscape公司提出的安全协议SSL,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。SSL能够为HTTP提供安全连接,从而非常大程度上改善了万维网的安全性问题。

1.2  技术长处

SSL具有例如以下长处:

l              提供较高的安全性保证。SSL利用数据加密、身份验证和消息完整性验证机制,保证网络上传输数据的安全性。

l              支持各种应用层协议。尽管SSL设计的初衷是为了解决万维网安全性问题,可是因为SSL位于应用层和传输层之间,它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。

l              部署简单。眼下SSL已经成为网络中用来鉴别站点和网页浏览者身份,在浏览器使用者及Webserver之间进行加密通信的全球化标准。SSL协议已被集成到大部分的浏览器中,如IE、Netscape、Firefox等。这就意味着差点儿随意一台装有浏览器的计算机都支持SSL连接,不须要安装额外的client软件。

2  协议安全机制

SSL协议实现的安全机制包含:

l              传输数据的机密性:利用对称密钥算法对传输的数据进行加密。

l              身份验证机制:基于证书利用数字签名方法对server和client进行身份验证,当中client的身份验证是可选的。

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

2.1  传输数据的机密性

网络上传输的数据非常easy被非法用户窃取,SSL採用在通信两方之间建立加密通道的方法保证传输数据的机密性。

所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方;接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证传输数据的机密性。

加解密算法分为两类:

l              对称密钥算法:数据加密和解密时使用同样的密钥。

l              非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据仅仅能用对应的私钥(或公钥)才干解密。

与非对称密钥算法相比,对称密钥算法具有计算速度快的长处,通经常使用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。

SSL加密通道上的数据加解密使用对称密钥算法,眼下主要支持的算法有DES、3DES、AES等,这些算法都能够有效地防止交互数据被窃听。

对称密钥算法要求解密密钥和加密密钥全然一致。因此,利用对称密钥算法加密数据传输之前,须要在通信两端部署同样的密钥。对称密钥的部署方法请參见“2.4  利用非对称密钥算法保证密钥本身的安全”。

2.2  身份验证机制

电子商务和网上银行等应用中必须保证要登录的Webserver是真实的,以免重要信息被非法窃取。SSL利用数字签名来验证通信对端的身份。

非对称密钥算法能够用来实现数字签名。因为通过私钥加密后的数据仅仅能利用相应的公钥进行解密,因此依据解密是否成功,就能够推断发送者的身份,如同发送者对数据进行了“签名”。比如,Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密,假设解密结果与固定信息同样,那么就能够确认信息的发送者为Alice,这个过程就称为数字签名。

SSLclient必须验证SSLserver的身份,SSLserver是否验证SSLclient的身份,则由SSLserver决定。SSLclient和SSLserver的身份验证过程,请參见“3.2  SSL握手过程”。

使用数字签名验证身份时,须要确保被验证者的公钥是真实的,否则,非法用户可能会冒充被验证者与验证者通信。如图1所看到的,Cindy冒充Bob,将自己的公钥发给Alice,并利用自己的私钥计算出签名发送给Alice,Alice利用“Bob”的公钥(实际上为Cindy的公钥)成功验证该签名,则Alice觉得Bob的身份验证成功,而实际上与Alice通信的是冒充Bob的Cindy。SSL利用PKI提供的机制保证公钥的真实性,具体介绍请參见“2.5  利用PKI保证公钥的真实性”。

SSL工作原理

图1 伪造公钥

2.3  消息完整性验证

为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。

MAC算法是在密钥參与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如图2所看到的。发送者在密钥的參与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用相同的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比較。假设二者相同,则报文没有改变;否则,报文在传输过程中被改动,接收者将丢弃该报文。

SSL工作原理

图2 MAC算法示意图

MAC算法具有例如以下特征,使其可以用来验证消息的完整性:

l              消息的不论什么改变,都会引起输出的固定长度数据产生变化。通过比較MAC值,可以保证接收者可以发现消息的改变。

l              MAC算法须要密钥的參与,因此没有密钥的非法用户在改变消息的内容后,无法加入正确的MAC值,从而保证非法用户无法任意改动消息内容。

MAC算法要求通信两方具有同样的密钥,否则MAC值验证将会失败。因此,利用MAC算法验证消息完整性之前,须要在通信两端部署同样的密钥。MAC密钥的部署方法请參见“2.4  利用非对称密钥算法保证密钥本身的安全”。

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

对称密钥算法和MAC算法要求通信两方具有同样的密钥,否则解密或MAC值验证将失败。因此,要建立加密通道或验证消息完整性,必须先在通信两方部署一致的密钥。

SSL利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如图3所看到的,SSLclient(如Web浏览器)利用SSLserver(如Webserver)的公钥加密密钥,将加密后的密钥发送给SSLserver,仅仅有拥有相应私钥的SSLserver才干从密文中获取原始的密钥。SSL通常採用RSA算法加密传输密钥。

SSL工作原理

图3 密钥交换示意图

SSL工作原理

l      实际上,SSLclient发送给SSLserver的密钥不能直接用来加密数据或计算MAC值,该密钥是用来计算对称密钥和MAC密钥的信息,称为premaster secret。SSLclient和SSLserver利用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保证公钥的真实性

PKI通过数字证书来公布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包括用户的公钥及其身份信息的文件,证明了用户与公钥的关联。数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。

SSLclient把密钥加密传递给SSLserver之前,SSLserver须要将从CA获取的证书发送给SSLclient,SSLclient通过PKI推断该证书的真实性。假设该证书确实属于SSLserver,则利用该证书中的公钥加密密钥,发送给SSLserver。

验证SSLserver/SSLclient的身份之前,SSLserver/SSLclient须要将从CA获取的证书发送给对端,对端通过PKI推断该证书的真实性。假设该证书确实属于SSLserver/SSLclient,则对端利用该证书中的公钥验证SSLserver/SSLclient的身份。

3  协议工作过程

3.1  SSL的分层结构

SSL工作原理

图4 SSL协议分层

如图4所看到的,SSL位于应用层和传输层之间,它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层:

l              上层为SSL握手协议(SSL handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol);

l              底层为SSL记录协议(SSL record protocol)。

当中:

l              SSL握手协议:是SSL协议很重要的组成部分,用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在server和client之间安全地交换密钥、实现server和client的身份验证。

l              SSLpassword变化协议:client和server端通过password变化协议通知对端,随后的报文都将使用新协商的加密套件和密钥进行保护和传输。

l              SSL警告协议:用来向通信对端报告告警信息,消息中包括告警的严重级别和描写叙述。

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

3.2  SSL握手过程

SSL通过握手过程在client和server之间协商会话參数,并建立会话。会话包括的主要參数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret)。通过SSL会话传输的数据,都将採用该会话的主密钥和加密套件进行加密、计算MAC等处理。

不同情况下,SSL握手过程存在差异。以下将分别描写叙述以下三种情况下的握手过程:

l              仅仅验证server的SSL握手过程

l              验证server和client的SSL握手过程

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

3.2.1  仅仅验证server的SSL握手过程

SSL工作原理

图5 仅仅验证server的SSL握手过程

如图5所看到的,仅仅须要验证SSLserver身份,不须要验证SSLclient身份时,SSL的握手过程为:

(1)        SSLclient通过Client Hello消息将它支持的SSL版本号、加密算法、密钥交换算法、MAC算法等信息发送给SSLserver。

(2)        SSLserver确定本次通信採用的SSL版本号和加密套件,并通过Server Hello消息通知给SSLclient。假设SSLserver同意SSLclient在以后的通信中重用本次会话,则SSLserver会为本次会话分配会话ID,并通过Server Hello消息发送给SSLclient。

(3)        SSLserver将携带自己公钥信息的数字证书通过Certificate消息发送给SSLclient。

(4)        SSLserver发送Server Hello Done消息,通知SSLclient版本号和加密套件协商结束,開始进行密钥交换。

(5)        SSLclient验证SSLserver的证书合法后,利用证书中的公钥加密SSLclient随机生成的premaster secret,并通过Client Key Exchange消息发送给SSLserver。

(6)        SSLclient发送Change Cipher Spec消息,通知SSLserver兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。

(7)        SSLclient计算已交互的握手消息(除Change Cipher Spec消息外全部已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并加入MAC值、加密等),并通过Finished消息发送给SSLserver。SSLserver利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較,假设二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

(8)        相同地,SSLserver发送Change Cipher Spec消息,通知SSLclient兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。

(9)        SSLserver计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并加入MAC值、加密等),并通过Finished消息发送给SSLclient。SSLclient利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較,假设二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

SSLclient接收到SSLserver发送的Finished消息后,假设解密成功,则能够推断SSLserver是数字证书的拥有者,即SSLserver身份验证成功,由于仅仅有拥有私钥的SSLserver才干从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSLclient对SSLserver的身份验证。

&  说明:

l      Change Cipher Spec消息属于SSLpassword变化协议,其它握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。

l      计算Hash值,指的是利用Hash算法(MD5或SHA)将随意长度的数据转换为固定长度的数据。

 

3.2.2  验证server和client的SSL握手过程

SSL工作原理

图6 验证server和client的SSL握手过程

SSLclient的身份验证是可选的,由SSLserver决定是否验证SSLclient的身份。如图6中蓝色部分标识的内容所看到的,假设SSLserver验证SSLclient身份,则SSLserver和SSLclient除了交互“3.2.1  仅仅验证server的SSL握手过程”中的消息协商密钥和加密套件外,还须要进行下面操作:

(1)        SSLserver发送Certificate Request消息,请求SSLclient将其证书发送给SSLserver。

(2)        SSLclient通过Certificate消息将携带自己公钥的证书发送给SSLserver。SSLserver验证该证书的合法性。

(3)        SSLclient计算已交互的握手消息、主密钥的Hash值,利用自己的私钥对其进行加密,并通过Certificate Verify消息发送给SSLserver。

(4)        SSLserver计算已交互的握手消息、主密钥的Hash值,利用SSLclient证书中的公钥解密Certificate Verify消息,并将解密结果与计算出的Hash值比較。假设二者同样,则SSLclient身份验证成功。

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

SSL工作原理

图7 恢复原有会话的SSL握手过程

协商会话參数、建立会话的过程中,须要使用非对称密钥算法来加密密钥、验证通信对端的身份,计算量较大,占用了大量的系统资源。为了简化SSL握手过程,SSL同意重用已经协商过的会话,详细过程为:

(1)        SSLclient发送Client Hello消息,消息中的会话ID设置为计划重用的会话的ID。

(2)        SSLserver假设同意重用该会话,则通过在Server Hello消息中设置同样的会话ID来应答。这样,SSLclient和SSLserver就能够利用原有会话的密钥和加密套件,不必又一次协商。

(3)        SSLclient发送Change Cipher Spec消息,通知SSLserver兴许报文将採用原有会话的密钥和加密套件进行加密和MAC计算。

(4)        SSLclient计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSLserver,以便SSLserver推断密钥和加密套件是否正确。

(5)        相同地,SSLserver发送Change Cipher Spec消息,通知SSLclient兴许报文将採用原有会话的密钥和加密套件进行加密和MAC计算。

(6)        SSLserver计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSLclient,以便SSLclient推断密钥和加密套件是否正确。

4  典型组网应用

4.1  HTTPS

HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web訪问提供了安全性保证,广泛应用于网上银行、电子商务等领域。

图8为HTTPS在网上银行中的应用。某银行为了方便客户,提供了网上银行业务,客户能够通过訪问银行的Webserver进行帐户查询、转帐等。通过在客户和银行的Webserver之间建立SSL连接,能够保证客户的信息不被非法窃取。

SSL工作原理

图8 HTTPS在网上银行中的应用

4.2  SSL VPN

SSL VPN是以SSL为基础的VPN技术,利用SSL提供的安全机制,为用户远程訪问公司内部网络提供了安全保证。如图9所看到的,SSL VPN通过在远程接入用户和SSL VPN网关之间建立SSL安全连接,同意用户通过各种Web浏览器,各种网络接入方式,在不论什么地方远程訪问企业网络资源,并可以保证企业网络的安全,保护企业内部信息不被窃取。

SSL工作原理

图9 SSL VPN的典型组网环境 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118035.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 校园二手交易平台的简要分析(纯文档)[通俗易懂]

    校园二手交易平台的简要分析(纯文档)[通俗易懂]校园二手交易平台的简要分析 摘要:校园二手市场就是建立在校园里的提供学生们进行二手物品交易的场所。二手交易在大学校园里面比较常见,一方面,大学生热衷潮流,消费需求较旺盛,但也容易因为冲动购物而产生较多的闲置物品;另一方面,大部分大学生经济未独立,资金来源主要是依靠父母,经济能力有限。现在国家倡导可循环经济,人们的环保意识逐渐增强,加之旺盛的需求与滞后的经济能力形成的鲜明反差,为校园二手市场…

    2022年6月17日
    20
  • 最详细的ECLIPSE Android SDK下载安装及配置教程

    最详细的ECLIPSE Android SDK下载安装及配置教程最近Neo突发神经,想要将学过的一些计算机视觉、机器学习中的算法都放到移动设备上去跑跑,因为移动开发是大势所趋嘛,希望能够通过这样一个实践的过程,找到一些新的灵感(该不会是为了赚钱吧…),我自己目前也有一些idea,然后也希望以后能够进行计算机视觉、机器学习方面的创业,如果有志同道合的朋友可以一起交流交流(可通过邮箱:neo.huang3@gmail.com)。既然要做计算机视觉的移动开发,那么就要考虑是做ios还是Android了。。当然还有winphone的。一直想做ios的开发,无奈啊,手头有iP

    2022年7月19日
    18
  • netdata mysql_Netdata介绍及安装部署

    netdata mysql_Netdata介绍及安装部署Netdata是一款Linux性能实时监测工具。Netdata是Linux系统实时性能监测工具,提供web界面的界面视角。它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。优美的界面:bootstrap框架下的控制界面自定义的控制界面:你可以使用简单的HTML代码去自定义控制界面(不需要使用javascript)极其的快速而高效:程序…

    2025年7月5日
    5
  • 永恒之蓝病毒解决方法蠕虫_永恒之蓝病毒解决方法

    永恒之蓝病毒解决方法蠕虫_永恒之蓝病毒解决方法辛亏“永恒之蓝”爆发在周末,绝大部分员工在家休息,为我们避免内网病毒爆发赢取了时间,整个周末一直加固已有系统和准备应急预案,避免周一发生大规模“永恒之蓝”在内部大面积爆发的可能。整体措施和预防传染病的原理类似:控制传染源、切断传播途径,保护易感人群。1控制传染源:所有的办公电脑开机前都必须网络隔离,所有计算机严禁插入U盘,一旦出现感染电脑,直接拔电源。就内网环境而言,一旦出现一例,大概率爆…

    2022年10月10日
    5
  • 463个生活小窍门

    463个生活小窍门1、巧用牙膏6:若有小面积皮肤损伤或烧伤、烫伤,抹上少许牙膏,可立即止血止痛,也可防止感染,疗效颇佳。2、巧除纱窗油腻3:可将洗衣粉、吸烟剩下的烟头一起放在水里,待溶解后,拿来擦玻璃窗、纱窗,效果均不错。3、将虾仁放入碗内,加一点精盐、食用碱粉,用手抓搓一会儿后用清水浸泡,然后再用清水洗净,这样能使炒出的虾仁透明如水晶,爽嫩可口。4、和饺子面的窍门1:在1斤面粉里掺入6个蛋清,使面里蛋白质增加,包的饺子下锅后蛋白质会很快凝固收缩,饺子起锅后收水快,不易粘连5、将残茶叶浸入水中数天后,浇在植

    2022年6月23日
    22
  • tracert命令详解_tracert结果详解_tracert命令使用详解

    tracert命令详解_tracert结果详解_tracert命令使用详解

    2021年11月17日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号