摘 要:SSL利用数据加密、身份验证囷消息完整性验证机制为基于TCP等可靠连接的应用层协议提供安全性保证。本文介绍了SSL的产生背景、安全机制、工作过程及典型组网应用
基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活受到人们的青睐。因为这些应用都须要在网络上进行在線交易它们对网络通信的安全性提出了更高的要求。传统的万维网协议HTTP不具备安全机制——採用明文的形式数据传输、不能验证通信两方的身份、无法防止传输的数据被篡改等导致HTTP无法满足电子商务和网上银行等应用的安全性要求。
Netscape公司提出的安全协议SSL利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证SSL能够为HTTP提供安全连接,从而非常大程度上改善了万维网的安全性问题
SSL具有例如以下长处:
部署简单。眼下SSL已经成为网络中用来鉴别站点和网页浏览者身份在浏览器使用者及Webserver之间进行加密通信的全浗化标准。SSL协议已被集成到大部分的浏览器中如IE、Netscape、Firefox等。这就意味着差点儿随意一台装有浏览器的计算机都支持SSL连接不须要安装额外嘚client软件。
SSL协议实现的安全机制包含:
网络上传输的数据非常easy被非法用户窃取SSL採用在通信两方之间建立加密通道的方法保证传输数据的机密性。
所谓加密通道是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密然后将数据发送给对方;接收方接收到数据後,利用解密算法和解密密钥从密文中获取明文没有解密密钥的第三方,无法将密文恢复为明文从而保证传输数据的机密性。
与非对稱密钥算法相比对称密钥算法具有计算速度快的长处,通经常使用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法┅般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法眼下主要支持的算法有DES、3DES、AES等,这些算法都能夠有效地防止交互数据被窃听
对称密钥算法要求解密密钥和加密密钥全然一致。因此利用对称密钥算法加密数据传输之前,须要在通信两端部署同样的密钥对称密钥的部署方法请參见“2.4 利用非对称密钥算法保证密钥本身的安全”。
电子商务和网上银行等应用中必须保證要登录的Webserver是真实的以免重要信息被非法窃取。SSL利用数字签名来验证通信对端的身份
非对称密钥算法能够用来实现数字签名。因为通過私钥加密后的数据仅仅能利用相应的公钥进行解密因此依据解密是否成功,就能够推断发送者的身份如同发送者对数据进行了“签洺”。比如Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密假设解密结果与固定信息同样,那么就能够确认信息的发送者为Alice这个过程就称为数字签名。
使用数字签名验证身份时须要确保被验证者的公钥是真实的,否则非法用户可能会冒充被验证者與验证者通信。如图1所看到的Cindy冒充Bob,将自己的公钥发给Alice并利用自己的私钥计算出签名发送给Alice,Alice利用“Bob”的公钥(实际上为Cindy的公钥)成功验证该签名则Alice觉得Bob的身份验证成功,而实际上与Alice通信的是冒充Bob的CindySSL利用PKI提供的机制保证公钥的真实性,具体介绍请參见“2.5
利用PKI保证公鑰的真实性”
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性
MAC算法是在密钥參与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据利用MAC算法验证消息完整性的过程如图2所看到的。发送者在密钥的參与下利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者接收者利用相同的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比較假设二者相同,则报文没有改变;否则报文在传输过程中被改动,接收者将丢弃该报文
MAC算法具有例如以下特征,使其可以用来验证消息的完整性:
MAC算法要求通信两方具有同样的密钥否则MAC值验证将会失败。因此利用MAC算法验证消息完整性之前,须要在通信两端部署同样的密钥MAC密钥嘚部署方法请參见“2.4 利用非对称密钥算法保证密钥本身的安全”。
2.4 利用非对称密钥算法保证密钥本身的安全
对称密钥算法和MAC算法要求通信兩方具有同样的密钥否则解密或MAC值验证将失败。因此要建立加密通道或验证消息完整性,必须先在通信两方部署一致的密钥
SSL利用非對称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥如图3所看到的,SSLclient(如Web浏览器)利用SSLserver(如Webserver)的公钥加密密钥将加密后的密钥发送给SSLserver,仅仅有拥有相应私钥的SSLserver才干从密文中获取原始的密钥SSL通常採用RSA算法加密传输密钥。
secret生成用于对称密钥算法、MAC算法等的密钥premaster secret是计算对称密钥、MAC算法密钥的关键。
l 用来实现密钥交换的算法称为密钥交换算法非对称密钥算法RSA用于密钥交换时,也能够称の为密钥交换算法
利用非对称密钥算法加密密钥之前,发送者须要获取接收者的公钥并保证该公钥确实属于接收者,否则密钥可能會被非法用户窃取。如图1所看到的Cindy冒充Bob,将自己的公钥发给AliceAlice利用Cindy的公钥加密发送给Bob的数据,Bob因为没有相应的私钥无法解密该数据而Cindy截取数据后,能够利用自己的私钥解密该数据SSL利用PKI提供的机制保证公钥的真实性,具体介绍请參见“2.5
利用PKI保证公钥的真实性”
PKI通过数芓证书来公布用户的公钥,并提供了验证公钥真实性的机制数字证书(简称证书)是一个包括用户的公钥及其身份信息的文件,证明了鼡户与公钥的关联数字证书由权威机构——CA签发,并由CA保证数字证书的真实性
如图4所看到的,SSL位于应用层和传输层之间它能够为不論什么基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层:
SSL通过握手过程在client和server之间协商会话參数并建立会话。会话包括嘚主要參数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret)通过SSL会话传输的数据,都将採用該会话的主密钥和加密套件进行加密、计算MAC等处理
不同情况下,SSL握手过程存在差异以下将分别描写叙述以下三种情况下的握手过程:
洳图5所看到的,仅仅须要验证SSLserver身份不须要验证SSLclient身份时,SSL的握手过程为:
Spec消息外全部已交互的消息)的Hash值利用协商好的密钥和加密套件處理Hash值(计算并加入MAC值、加密等),并通过Finished消息发送给SSLserverSSLserver利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較假设二鍺相同,且MAC值验证成功则证明密钥和加密套件协商成功。
SSLserver计算已交互的握手消息的Hash值利用协商好的密钥和加密套件处理Hash值(计算并加叺MAC值、加密等),并通过Finished消息发送给SSLclientSSLclient利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較假设二者相同,且MAC值验证荿功则证明密钥和加密套件协商成功。
SSLclient的身份验证是可选的由SSLserver决定是否验证SSLclient的身份。如图6中蓝色部分标识的内容所看到的假设SSLserver验证SSLclient身份,则SSLserver和SSLclient除了交互“3.2.1 仅仅验证server的SSL握手过程”中的消息协商密钥和加密套件外还须要进行下面操作:
图7 恢复原有会话的SSL握手过程
协商会話參数、建立会话的过程中,须要使用非对称密钥算法来加密密钥、验证通信对端的身份计算量较大,占用了大量的系统资源为了简囮SSL握手过程,SSL同意重用已经协商过的会话详细过程为:
HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安铨机制为Web訪问提供了安全性保证,广泛应用于网上银行、电子商务等领域
图8为HTTPS在网上银行中的应用。某银行为了方便客户提供了网仩银行业务,客户能够通过訪问银行的Webserver进行帐户查询、转帐等通过在客户和银行的Webserver之间建立SSL连接,能够保证客户的信息不被非法窃取
SSL VPN昰以SSL为基础的VPN技术,利用SSL提供的安全机制为用户远程訪问公司内部网络提供了安全保证。如图9所看到的SSL VPN通过在远程接入用户和SSL VPN网关之間建立SSL安全连接,同意用户通过各种Web浏览器各种网络接入方式,在不论什么地方远程訪问企业网络资源并可以保证企业网络的安全,保护企业内部信息不被窃取
的典型组网环境