SSLTLS协议简介
SSL(Secure Sockets Layer ),及其继任者(Transport Layer Security,TLS)是为提供安全及的⼀种安全协议。TLS与SSL在与之间对⽹络连接进⾏加密。
SSL协议位于与各种应⽤层协议之间,为提供安全⽀持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建⽴在可靠的(如TCP)之上,为⾼层协议提供、压缩、加密等基本功能的⽀持。 SSL(SSL Handshake Protocol):它建⽴在SSL记录协议之上,⽤于在实际的数据传输开始前,通讯双⽅进⾏、协商、交换加密等。
最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet⼯程任务组)制定的⼀种新的协议,它建⽴在SSL 3.0协议规范之上,是SSL 3.0的后续版本。TLS与SSL3.0之间存在着显著的差别,主要是它们所⽀持的加密算法不同,所以TLS与SSL3.0不能互操作。
  1.TLS与SSL的差异
  1)版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使⽤的版本号为SSLv3.1。
  2)报⽂鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使⽤了RFC-2104定义的HMAC算法。SSLv3.0使⽤了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采⽤的是连接运算,⽽HMAC算法采⽤的是异或运算。但是两者的安全程度是相同的。
  3)伪随机函数:TLS使⽤了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的⽅式。
  4)报警代码:TLS⽀持⼏乎所有的SSLv3.0报警代码,⽽且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。
  5)密⽂族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不⽀持Fortezza密钥交换、加密算法和客户证书。
  6)certificate_verify和finished消息:SSLv3.0和TLS在⽤certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输⼊有少许差别,但安全性相当。
  7)加密计算:TLS与SSLv3.0在计算主密值(master secret)时采⽤的⽅式不同。
  8)填充:⽤户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密⽂块长度的最⼩整数倍。⽽在TLS中,填充后的数据长度可以是密⽂块长度的任意整数倍(但填充的最⼤长度为25
5字节),这种⽅式可以防⽌基于对报⽂长度进⾏分析的攻击。
SSL/TLS协议的基本过程是这样的:
(1) 客户端向服务器端索要并验证公钥。
(2) 双⽅协商⽣成"对话密钥"。
(3) 双⽅采⽤"对话密钥"进⾏加密通信。
前⾯两步称为握⼿阶段(handshake) ,握⼿阶段的所有通信都是明⽂的。
握⼿阶段涉及四次通信,
1. 客户端发出请求(ClientHello)
客户端(通常是浏览器)先向服务器发出加密通信的请求,请求包含以下信息:
(1) ⽀持的协议版本,⽐如TLS 1.0版。
(2) ⼀个客户端⽣成的随机数,稍后⽤于⽣成"对话密钥"。
(3) ⽀持的加密⽅法,⽐如RSA公钥加密。
(4) ⽀持的压缩⽅法。
2006年,TLS协议加⼊了⼀个,允许客户端向服务器提供它所请求的域名,在此之前客户端发送的信息中⼼不包含服务器的域名。
2. 服务器回应(SeverHello)
服务器收到客户端请求后向客户端发出回应,回应包含以下内容:
(1) 确认使⽤的加密通信协议版本,⽐如TLS 1.0版本。如果浏览器与服务器⽀持的版本不⼀致,服务器关闭加密通信。
(2) ⼀个服务器⽣成的随机数,稍后⽤于⽣成"对话密钥"。
(3) 确认使⽤的加密⽅法,⽐如RSA公钥加密。
(4) 服务器证书。
如果服务器需要确认客户端的⾝份,就会再包含⼀项请求,要求客户端提供"客户端证书"。⽐如,⾦融
机构往往只允许认证客户连⼊⾃⼰的⽹络,就会向正式客户提供USB密钥,⾥⾯就包含了⼀张客户端证书,证书将在下⼀步客户端回应中提供。
3. 客户端回应
客户端收到服务器回应以后,⾸先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不⼀致、或者证书已经过期,就会向访问者显⽰⼀个警告,由其选择是否还要继续通信。
如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送下⾯三项信息。
(1) ⼀个随机数。该随机数⽤服务器公钥加密,防⽌被窃听。
(2) 编码改变通知,表⽰随后的信息都将⽤双⽅商定的加密⽅法和密钥发送。
(3) 客户端握⼿结束通知,表⽰客户端的握⼿阶段已经结束。这⼀项同时也是前⾯发送的所有内容的hash值,⽤来供服务器校验。
4.服务器回应ssl协议全称
服务器收到客户端的第三个随机数pre-master key之后,计算⽣成本次会话所⽤的"会话密钥"。然后,向客户端最后发送下⾯信息。
(1)编码改变通知,表⽰随后的信息都将⽤双⽅商定的加密⽅法和密钥发送。
(2)服务器握⼿结束通知,表⽰服务器的握⼿阶段已经结束。这⼀项同时也是前⾯发送的所有内容的hash值,⽤来供客户端校验。
⾄此,整个握⼿阶段全部结束。接下来,客户端与服务器进⼊加密通信,就完全是使⽤普通的HTTP协议,只不过⽤"会话密钥"加密内容。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。