替别人做网站,佛山外贸网站建设行情,中卫网站推广网络营销,网站建设为什么这么贵本文介绍了SSL原理、安全机制、工作过程和典型网络应用。
缩略语列表
一、概述
1.1 产生背景
基于万维网的电子商务和网上银行等新兴应用#xff0c;极大地方便了人们的日常生活。受到人们的青睐。
因为这些应用都须要在网络上进行在线交易#xff0c;它们对网络通信的…本文介绍了SSL原理、安全机制、工作过程和典型网络应用。
缩略语列表
一、概述
1.1 产生背景
基于万维网的电子商务和网上银行等新兴应用极大地方便了人们的日常生活。受到人们的青睐。
因为这些应用都须要在网络上进行在线交易它们对网络通信的安全性提出了更高的要求。传统的万维网协议HTTP不具备安全机制——採用明文的形式数据传输、不能验证通信两方的身份、无法防止传输的数据被篡改等导致HTTP无法满足电子商务和网上银行等应用的安全性要求。
Netscape公司提出的安全协议SSL利用数据加密、身份验证和消息完整性验证机制为网络上数据的传输提供安全性保证。SSL能够为HTTP提供安全连接从而非常大程度上改善了万维网的安全性问题。
1.2 技术优势
SSL具有例如以下长处
提供较高的安全性保证SSL利用数据加密、身份验证和消息完整性验证机制。保证网络上传输数据的安全性支持各种应用层协议尽管SSL设计的初衷是为了解决万维网安全性问题可是因为SSL位于应用层和传输层之间。它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证部署简单眼下SSL已经成为网络中用来鉴别站点和网页浏览者身份在浏览器使用者及Webserver之间进行加密通信的全球化标准。SSL协议已被集成到大部分的浏览器中如IE、Netscape、Firefox等。这就意味着差点儿随意一台装有浏览器的计算机都支持SSL连接。不须要安装额外的client软件
二、协议安全机制
SSL协议实现的安全机制包含
传输数据的机密性利用对称密钥算法对传输的数据进行加密身份验证机制基于证书利用数字签名方法对server和client进行身份验证当中client的身份验证是可选的消息完整性验证消息传输过程中使用MAC算法来检验消息的完整性
2.1 传输数据的机密性
网络上传输的数据非常easy被非法用户窃取SSL採用在通信两方之间建立加密通道的方法保证传输数据的机密性。
所谓加密通道是指发送方在发送数据前使用加密算法和加密密钥对数据进行加密然后将数据发送给对方。接收方接收到数据后利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方无法将密文恢复为明文从而保证传输数据的机密性。
加解密算法分为两类
对称密钥算法数据加密和解密时使用同样的密钥非对称密钥算法数据加密和解密时使用不同的密钥一个是公开的公钥一个是由用户秘密保存的私钥
利用公钥或私钥加密的数据仅仅能用对应的私钥或公钥才干解密。
与非对称密钥算法相比。对称密钥算法具有计算速度快的长处通经常使用于对大量信息进行加密如对全部报文加密而非对称密钥算法一般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法。眼下主要支持的算法有DES、3DES、AES等这些算法都能够有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥全然一致。因此利用对称密钥算法加密数据传输之前。须要在通信两端部署同样的密钥。对称密钥的部署方法请參见“2.4 利用非对称密钥算法保证密钥本身的安全”。
2.2 身份验证机制
电子商务和网上银行等应用中必须保证要登录的Webserver是真实的以免重要信息被非法窃取。SSL利用数字签名来验证通信对端的身份。
非对称密钥算法能够用来实现数字签名。因为通过私钥加密后的数据仅仅能利用相应的公钥进行解密因此依据解密是否成功就能够推断发送者的身份。如同发送者对数据进行了“签名”。比如。Alice使用自己的私钥对一段固定的信息加密后发给BobBob利用Alice的公钥解密假设解密结果与固定信息同样。那么就能够确认信息的发送者为Alice这个过程就称为数字签名。
SSLclient必须验证SSLserver的身份SSLserver是否验证SSLclient的身份。则由SSLserver决定。SSLclient和SSLserver的身份验证过程。请參见“3.2 SSL握手过程”。
使用数字签名验证身份时。须要确保被验证者的公钥是真实的否则。非法用户可能会冒充被验证者与验证者通信。如图1所看到的。Cindy冒充Bob将自己的公钥发给Alice并利用自己的私钥计算出签名发送给AliceAlice利用“Bob”的公钥实际上为Cindy的公钥成功验证该签名则Alice觉得Bob的身份验证成功而实际上与Alice通信的是冒充Bob的Cindy。SSL利用PKI提供的机制保证公钥的真实性具体介绍请參见“2.5 利用PKI保证公钥的真实性”。
2.3 消息完整性验证
为了避免网络中传输的数据被非法篡改SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。
MAC算法是在密钥參与下的数据摘要算法能将密钥和随意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如图2所看到的。
发送者在密钥的參与下利用MAC算法计算出消息的MAC值。并将其加在消息之后发送给接收者。接收者利用相同的密钥和MAC算法计算出消息的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算法加密传输密钥。 说明
实际上SSLclient发送给SSLserver的密钥不能直接用来加密数据或计算MAC值。该密钥是用来计算对称密钥和MAC密钥的信息称为premaster secret。SSLclient和SSLserver利用premaster secret计算出同样的主密钥master secret。再利用master secret生成用于对称密钥算法、MAC算法等的密钥。premaster secret是计算对称密钥、MAC算法密钥的关键。用来实现密钥交换的算法称为密钥交换算法。非对称密钥算法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获取的证书发送给SSLclientSSLclient通过PKI推断该证书的真实性。假设该证书确实属于SSLserver则利用该证书中的公钥加密密钥发送给SSLserver。
验证SSLserver/SSLclient的身份之前SSLserver/SSLclient须要将从CA获取的证书发送给对端。对端通过PKI推断该证书的真实性。
假设该证书确实属于SSLserver/SSLclient则对端利用该证书中的公钥验证SSLserver/SSLclient的身份。
三 协议工作过程
3.1 SSL的分层结构 图4 SSL协议分层
如图4所看到的SSL位于应用层和传输层之间它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层
上层为SSL握手协议SSL handshake protocol、SSLpassword变化协议SSL change cipher spec protocol和SSL警告协议SSL alert protocol底层为SSL记录协议SSL record protocol
当中
SSL握手协议是SSL协议很重要的组成部分。用来协商通信过程中使用的加密套件加密算法、密钥交换算法和MAC算法等、在server和client之间安全地交换密钥、实现server和client的身份验证SSLpassword变化协议client和server端通过password变化协议通知对端。随后的报文都将使用新协商的加密套件和密钥进行保护和传输SSL警告协议用来向通信对端报告告警信息消息中包括告警的严重级别和描写叙述SSL记录协议主要负责对上层的数据SSL握手协议、SSLpassword变化协议、SSL警告协议和应用层协议报文进行分块、计算并加入MAC值、加密。并把处理后的记录块传输给对端
3.2 SSL握手过程
SSL通过握手过程在client和server之间协商会话參数并建立会话。会话包括的主要參数有会话ID、对方的证书、加密套件密钥交换算法、数据加密算法和MAC算法等以及主密钥master secret。通过SSL会话传输的数据都将採用该会话的主密钥和加密套件进行加密、计算MAC等处理。
不同情况下SSL握手过程存在差异。
以下将分别描写叙述以下三种情况下的握手过程
仅验证server的SSL握手过程验证server和client的SSL握手过程恢复原有会话的SSL握手过程
3.2.1 仅仅验证server的SSL握手过程 如图5所看到的仅仅须要验证SSLserver身份不须要验证SSLclient身份时SSL的握手过程为 SSLclient通过Client Hello消息将它支持的SSL版本号、加密算法、密钥交换算法、MAC算法等信息发送给SSLserver。 SSLserver确定本次通信採用的SSL版本号和加密套件并通过Server Hello消息通知给SSLclient。假设SSLserver同意SSLclient在以后的通信中重用本次会话则SSLserver会为本次会话分配会话ID。并通过Server Hello消息发送给SSLclient。 SSLserver将携带自己公钥信息的数字证书通过Certificate消息发送给SSLclient。 SSLserver发送Server Hello Done消息。通知SSLclient版本号和加密套件协商结束。開始进行密钥交换。 SSLclient验证SSLserver的证书合法后利用证书中的公钥加密SSLclient随机生成的premaster secret并通过Client Key Exchange消息发送给SSLserver。 SSLclient发送Change Cipher Spec消息通知SSLserver兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。 SSLclient计算已交互的握手消息除Change Cipher Spec消息外全部已交互的消息的Hash值利用协商好的密钥和加密套件处理Hash值计算并加入MAC值、加密等并通过Finished消息发送给SSLserver。SSLserver利用相同的方法计算已交互的握手消息的Hash值并与Finished消息的解密结果比較假设二者相同且MAC值验证成功则证明密钥和加密套件协商成功。 相同地。SSLserver发送Change Cipher Spec消息通知SSLclient兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。 SSLserver计算已交互的握手消息的Hash值利用协商好的密钥和加密套件处理Hash值计算并加入MAC值、加密等并通过Finished消息发送给SSLclient。SSLclient利用相同的方法计算已交互的握手消息的Hash值并与Finished消息的解密结果比較假设二者相同。且MAC值验证成功。则证明密钥和加密套件协商成功。
SSLclient接收到SSLserver发送的Finished消息后。假设解密成功则能够推断SSLserver是数字证书的拥有者即SSLserver身份验证成功由于仅仅有拥有私钥的SSLserver才干从Client Key Exchange消息中解密得到premaster secret从而间接地实现了SSLclient对SSLserver的身份验证。
说明 Change Cipher Spec消息属于SSLpassword变化协议其它握手过程交互的消息均属于SSL握手协议统称为SSL握手消息。 计算Hash值。指的是利用Hash算法MD5或SHA将随意长度的数据转换为固定长度的数据。
3.2.2 验证server和client的SSL握手过程 SSLclient的身份验证是可选的由SSLserver决定是否验证SSLclient的身份。
如图6中蓝色部分标识的内容所看到的假设SSLserver验证SSLclient身份。则SSLserver和SSLclient除了交互“3.2.1 仅仅验证server的SSL握手过程”中的消息协商密钥和加密套件外还须要进行下面操作 SSLserver发送Certificate Request消息。请求SSLclient将其证书发送给SSLserver。 SSLclient通过Certificate消息将携带自己公钥的证书发送给SSLserver。SSLserver验证该证书的合法性。 SSLclient计算已交互的握手消息、主密钥的Hash值。利用自己的私钥对其进行加密并通过Certificate Verify消息发送给SSLserver。 SSLserver计算已交互的握手消息、主密钥的Hash值。利用SSLclient证书中的公钥解密Certificate Verify消息并将解密结果与计算出的Hash值比較。假设二者同样则SSLclient身份验证成功。
3.2.3 恢复原有会话的SSL握手过程 图7 恢复原有会话的SSL握手过程
协商会话參数、建立会话的过程中。须要使用非对称密钥算法来加密密钥、验证通信对端的身份。计算量较大占用了大量的系统资源。
为了简化SSL握手过程。SSL同意重用已经协商过的会话详细过程为 SSLclient发送Client Hello消息消息中的会话ID设置为计划重用的会话的ID。 SSLserver假设同意重用该会话则通过在Server Hello消息中设置同样的会话ID来应答。这样SSLclient和SSLserver就能够利用原有会话的密钥和加密套件。不必又一次协商。 SSLclient发送Change Cipher Spec消息通知SSLserver兴许报文将採用原有会话的密钥和加密套件进行加密和MAC计算。 SSLclient计算已交互的握手消息的Hash值利用原有会话的密钥和加密套件处理Hash值并通过Finished消息发送给SSLserver以便SSLserver推断密钥和加密套件是否正确。 相同地。SSLserver发送Change Cipher Spec消息通知SSLclient兴许报文将採用原有会话的密钥和加密套件进行加密和MAC计算。 SSLserver计算已交互的握手消息的Hash值利用原有会话的密钥和加密套件处理Hash值并通过Finished消息发送给SSLclient。以便SSLclient推断密钥和加密套件是否正确。
四、 典型组网应用
4.1 HTTPS
HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制。为Web訪问提供了安全性保证广泛应用于网上银行、电子商务等领域。
图8为HTTPS在网上银行中的应用。某银行为了方便客户提供了网上银行业务客户能够通过訪问银行的Webserver进行帐户查询、转帐等。
通过在客户和银行的Webserver之间建立SSL连接能够保证客户的信息不被非法窃取。 4.2 SSL VPN
SSL VPN是以SSL为基础的VPN技术。利用SSL提供的安全机制为用户远程訪问公司内部网络提供了安全保证。如图9所看到的。SSL VPN通过在远程接入用户和SSL VPN网关之间建立SSL安全连接同意用户通过各种Web浏览器各种网络接入方式在不论什么地方远程訪问企业网络资源。并可以保证企业网络的安全保护企业内部信息不被窃取。