提供较高的安全性保证
SSL 利用数据加密、身份验证和消息完整性验证机制。保证网络上传输数据的安全性。
支持各种应用层协议
尽管 SSL 设计的初衷是为了解决万维网安全性问题,可是因为 SSL 位于应用层和传输层之间。它能够为不论什么基于 TCP 等可靠连接的应用层协议提供安全性保证。
部署简单
眼下 SSL 已经成为网络中用来鉴别站点和网页浏览者身份,在浏览器使用者及 Webserver 之间进行加密通信的全球化标准。
SSL 协议已被集成到大部分的浏览器中,如 IE、Netscape、Firefox 等。这就意味着差点儿随意一台装有浏览器的计算机都支持 SSL 连接。不须要安装额外的 client 软件。
SSL 协议实现的安全机制包含:
网络上传输的数据非常 easy 被非法用户窃取,SSL 採用在通信两方之间建立加密通道的方法保证传输数据的机密性。
所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方。接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证传输数据的机密性。
加解密算法分为两类:
利用公钥(或私钥)加密的数据仅仅能用对应的私钥(或公钥)才干解密。
与非对称密钥算法相比。对称密钥算法具有计算速度快的长处,通经常使用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL 加密通道上的数据加解密使用对称密钥算法。眼下主要支持的算法有 DES、3DES、AES 等,这些算法都能够有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥全然一致。因此,利用对称密钥算法加密数据传输之前。须要在通信两端部署同样的密钥。
电子商务和网上银行等应用中必须保证要登录的 Webserver 是真实的,以免重要信息被非法窃取。SSL 利用数字签名来验证通信对端的身份。
非对称密钥算法能够用来实现数字签名。因为通过私钥加密后的数据仅仅能利用相应的公钥进行解密,因此依据解密是否成功,就能够推断发送者的身份。如同发送者对数据进行了 “签名”。
比如。Alice 使用自己的私钥对一段固定的信息加密后发给 Bob,Bob 利用 Alice 的公钥解密,假设解密结果与固定信息同样。那么就能够确认信息的发送者为 Alice,这个过程就称为数字签名。
SSLclient 必须验证 SSLserver 的身份,SSLserver 是否验证 SSLclient 的身份。则由 SSLserver 决定,SSLclient 和 SSLserver 的身份验证过程。
使用数字签名验证身份时。须要确保被验证者的公钥是真实的,否则。非法用户可能会冒充被验证者与验证者通信。如下图所看到的。Cindy 冒充 Bob,将自己的公钥发给 Alice,并利用自己的私钥计算出签名发送给 Alice,Alice 利用 “Bob” 的公钥(实际上为 Cindy 的公钥)成功验证该签名,则 Alice 觉得 Bob 的身份验证成功,而实际上与 Alice 通信的是冒充 Bob 的 Cindy。SSL 利用 PKI 提供的机制保证公钥的真实性。
为了避免网络中传输的数据被非法篡改,SSL 利用基于 MD5 或 SHA 的 MAC 算法来保证消息的完整性。
MAC 算法是在密钥參与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据。利用 MAC 算法验证消息完整性的过程如图2所看到的。
发送者在密钥的參与下,利用 MAC 算法计算出消息的 MAC 值。并将其加在消息之后发送给接收者。接收者利用相同的密钥和 MAC 算法计算出消息的 MAC 值。并与接收到的 MAC 值比較。假设二者相同。则报文没有改变;否则,报文在传输过程中被改动,接收者将丢弃该报文。
MAC 算法具有例如以下特征,使其可以用来验证消息的完整性:
MAC 算法要求通信两方具有同样的密钥,否则 MAC 值验证将会失败。因此,利用 MAC 算法验证消息完整性之前,须要在通信两端部署同样的密钥。
对称密钥算法和 MAC 算法要求通信两方具有同样的密钥。否则解密或 MAC 值验证将失败。因此。要建立加密通道或验证消息完整性,必须先在通信两方部署一致的密钥。
SSL 利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如下图所看到的,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 用于密钥交换时,也能够称之为密钥交换算法。
利用非对称密钥算法加密密钥之前,发送者须要获取接收者的公钥,并保证该公钥确实属于接收者。否则。密钥可能会被非法用户窃取。如上图所看到的。Cindy 冒充 Bob,将自己的公钥发给 Alice。Alice 利用 Cindy 的公钥加密发送给 Bob 的数据。Bob 因为没有相应的私钥无法解密该数据,而 Cindy 截取数据后,能够利用自己的私钥解密该数据。SSL 利用 PKI 提供的机制保证公钥的真实性。
PKI 通过数字证书来公布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包括用户的公钥及其身份信息的文件,证明了用户与公钥的关联。
数字证书由权威机构 CA 签发,并由 CA 保证数字证书的真实性。
SSLclient 把密钥加密传递给 SSLserver 之前,SSLserver 须要将从 CA 获取的证书发送给 SSLclient,SSLclient 通过 PKI 推断该证书的真实性。假设该证书确实属于 SSLserver,则利用该证书中的公钥加密密钥,发送给 SSLserver。
验证 SSLserver/SSLclient 的身份之前,SSLserver/SSLclient 须要将从 CA 获取的证书发送给对端。对端通过 PKI 推断该证书的真实性。
假设该证书确实属于 SSLserver/SSLclient,则对端利用该证书中的公钥验证 SSLserver/SSLclient 的身份。