SSL介绍

【本文介绍SSL基础理论知识】

一、SSL概念介绍

SSL(Secure Sockets Layer ,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议,TLS与SSL在传输层对网络连接进行加密。SSL有部署简单(已集成到大部分浏览器中)、支持各种应用层协议等优点。提供的服务有:

  • 认证用户及服务器以确保数据发送到正确的地方。
    SSL利用数字签名来验证通信对端的身份。
  • 使用加密通道加密数据防止窃取。
    发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。加解密算法分为两类:对称密钥算法(数据加密和解密时使用同样的密钥)、非对称密钥算法(数据加密和解密使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥)。对称密钥算法具有计算速度快的优点,通常用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
    SSL加密通道使用对称密钥算法;而对加密通道中使用的密匙,SSL使用非对称密钥算法确保该密匙本身的安全。
  • 确保数据完整性防止数据在传输过程中被修改。
    SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥參与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据。需注意:1、消息的不论什么改变,都会引起输出的固定长度数据产生变化。通过比较MAC值,可以保证接收者可以发现消息的改变;2、MAC算法须要密钥的參与,因此没有密钥的非法用户在改变消息的内容后,无法加入正确的MAC值。从而保证非法用户无法任意改动消息内容。

    SSL介绍_第1张图片

     

SSL是位于应用层(HTTP、FTP等协议)和传输层(TCP等协议)之间的协议层,应用层数据不再直接传递给传输层,而是先交给SSL加密。SSL协议本身又分为两层,如下图所示,上层为SSL握手协议(SSL handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol),底层为SSL记录协议(SSL record protocol)。

SSL介绍_第2张图片

二、工作原理

1、密匙安全

SSL加密通道使用对称算法,SSL使用非对称算法来保证加密通道中对称算法中的密匙的安全性,同时使用非对称算法保证MAC密匙的安全性,利用PKI保证非对称算法中的公匙的安全性。如下图所示,使用非对称算法加密对称算法中的密匙:

SSL介绍_第3张图片

利用非对称密钥算法加密密钥之前,发送者须要获取接收者的公钥,并保证该公钥确实属于接收者。PKI通过数字证书(该证书包括一个用户公匙及其身份信息文件)来公布用户的公钥,证明了用户与公钥的关联。数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。SSLclient把密钥加密传递给SSLserver之前,SSLserver须要将从CA获取的证书发送给SSLclient,SSLclient通过PKI推断该证书的真实性。假设该证书确实属于SSLserver,则利用该证书中的公钥加密密钥,发送给SSLserver。

2、握手协议

握手协议用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在server和client之间安全地交换密钥、实现server和client的身份验证。每个握手协议包含3个字段:Type、Length、Content。下面分别描述下面三种情况下的握手过程:仅仅验证server的握手过程、验证server和client的握手过程、恢复原有会话的握手过程。

a)、仅仅验证server的握手过程

SSL介绍_第4张图片

  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的身份验证。 Change Cipher Spec消息属于SSLpassword变化协议,其它握手过程交互的消息均属于SSL握手协议。

b)、验证server和client的握手过程

SSL介绍_第5张图片

多了如下操作:

  • SSLserver发送Certificate Request消息。请求SSLclient将其证书发送给SSLserver。
  • SSLclient通过Certificate消息将携带自己公钥的证书发送给SSLserver。SSLserver验证该证书的合法性。
  • SSLclient计算已交互的握手消息、主密钥的Hash值。利用自己的私钥对其进行加密,并通过Certificate Verify消息发送给SSLserver。
  • SSLserver计算已交互的握手消息、主密钥的Hash值。利用SSLclient证书中的公钥解密Certificate Verify消息,并将解密结果与计算出的Hash值比较。假设二者同样,则SSLclient身份验证成功。

c)、恢复原有会话的握手过程

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

SSL介绍_第6张图片

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

3、记录协议

记录协议在握手成功后使用,即SSLclient和SSLserver鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:

  • 保密性:使用握手协议定义的秘密密钥实现
  • 完整性:握手协议定义了MAC,用于保证消息完整性

SSL介绍_第7张图片

附录:

常见英文缩略词

缩略词 英文全称 中文 缩略词 英文全称 中文
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 虚拟专有网络      

参考链接:

https://www.cnblogs.com/bhlsheji/p/4586597.html
https://blog.csdn.net/shipfsh_sh/article/details/80419994

你可能感兴趣的:(计算机相关知识,SSL,安全套接层,加密,TLS,传输层安全)