TLS1.0 协议发布于1999年初。该协议可在Internet中提供给通信双方一条私有信道,即对通信消息进行加密。该协议主要描述了通信密钥协商的方法与通信格式的定义。分别由TLS Handshake Protocol 和 TLS Record Protocol两个子协议进行描述。虽然TLS1.0已经退出了历史舞台,但其最初的TLS设计核心过程并无太大变化。因此有助于理解TLS协议的执行过程。

TCP协议为TLS协议提供传输层服务, TLS Record Protocol在TCP协议层之上,向上提供两种服务:

  1. 通信双方的连接是私有的。通信过程时的数据加密方式采用对称加密。对于每一条连接来说,都有其唯一的对称密钥。用于加密数据的对称密钥是由TLS Handshake Protocol协商得到的。在特殊情况下,TLS Record Protocol层的数据也可以不被加密。
  2. 通信双方的连接是可靠的。消息在传递过程中需要包含消息校验码(MAC),消息校验码采用Hash函数对消息进行摘要得出。

TLS Handshake Protocol提供密钥协商服务,该协议允许服务器与客户端相互验证对方身份、协商对称加密算法及对称密钥:

  1. 使用公钥加密体系对通信双方进行身份认证。身份认证过程的参与者是可选的,但至少对其中一方进行验证。
  2. 协商过程中的共享秘密是安全的。协商秘密的过程中,攻击者难以通过截获协商过程中的数据,来推导出通信双方的共享秘密。
  3. 协商过程是可信的。攻击者不可能修改协商过程中的数据

在TLS中,多数操作是需要消息MAC(消息认证码)来验证消息的真实性。传统的消息认证码,仅仅是对消息进行Hash得以获取,因此易于攻击者对其进行伪造。若通过对MAC生成过程中添加私有秘密的方法来生成消息认证码,伪造过程将十分困难(因为必须要猜出私有秘密)。使用HMAC作为消息认证码。HMAC的生成可以使用多种不同的Hash算法。

TLS Record Protocol

TLS记录协议将上层来的数据切成若干的数据块,可选择性地对这些数据块进行压缩,计算其MAC值,以及对数据进行加密,最后将经过加工后的数据放置在TCP协议中传递出去。同样地,该协议会将接受到的TCP数据,进行解密、验证、解压、重组等过程,最后向上交付数据。

TLS Record Protocol包含四个子协议,分别为:

  1. handshake protocol
  2. alert protocol
  3. change cipher spec protocol
  4. application data protocol

TLS Handshake Protocol

TLS握手协议包含三个字协议:

  1. 选择使用Record Protocol协商获得的加密参数
  2. 验证通信双方身份
  3. 提供协商使用的加密参数,并报告错误

加密所需的参数由该协议协商得出,在客户端与服务器开始通信时,双方需要一致协议版本、选择加密算法,对通信双方进行身份认证,并使用公钥加密体系生成共享秘密。该协议的规程如下:

  1. Client首先发送一个ClientHello给Server,该报文中包含版本号、随机数(Client Random)及支持的加密算法
  2. Server返回包括 ServerHello、Certificate(可选,服务器的认证证书)、ServerKeyExchange (可选)、CertificateRequest(可选)、ServerHelloDone 作为应答,返回给Client,该报文中包含随机数(Server Random)
  3. Client根据Server的ServerHello应答做出相应 Certificate(可选,当服务器应答中包含CertificateRequest时,需要提供客户端认证证书)、ClientKeyExchange、CertificateVerify(可选)、[ChangeCipherSpec]、Finish。当且仅当Client掌握公钥时,该报文中包含客户端产生的新的随机数,该随机数使用服务器Certificate中的公钥进行加密(Premaster secret)
  4. 服务器返回 [ChangeCipherSpec] Finished,当且仅当Server掌握公钥时,该报文中包含服务器产生的新的随机数,该随机数使用客户端的Certificate中的公钥进行加密(Premaster secret)。该过程,对方将使用三个随机数产生session key(会话密钥)

值得注意的是,整个握手阶段是不加密的,因此攻击者可获取到双方选择的加密方法以及前两个随机数,整个会话的安全性依赖于第三个随机数。至此完成TLS握手过程。

TLS 1.0协议的更多相关文章

  1. TLS/SSL 协议详解 ssL 、TLS 1.0、TLS 1.1、TLS 1.2的了解

    TLS 1.0 RFC http://www.ietf.org/rfc/rfc2246.txt TLS 1.1 RFC http://www.ietf.org/rfc/rfc4346.txt TLS ...

  2. 禁用SSL v2.0、SSL v3.0协议

    1.禁用SSL v2.0.SSL v3.0协议,禁用低强度加密密钥.使用TLS 1 TLSv1.1 TLSv1.2版本.2.禁用SSLv2参考修补方法如下:查看本机sslv3加密列表:openssl ...

  3. 各大浏览器相继发布声明将停止支持 TLS 1.0 和 TLS 1.1 !

    简评:TLS 1.0 发布至今已将近 20 周年即将寿终正寝,期间为我们保障了千亿次甚至万亿次的数据请求安全. TLS 工作组几个月前发布声明文件弃用 TLS 1.0 和 TLS 1.1. 昨天,包括 ...

  4. nginx安装http2.0协议

    1.HTTP2协议 HTTP 2.0 的主要目标是改进传输性能,实现低延迟和高吞吐量.从另一方面看,HTTP 的高层协议语义并不会因为这次版本升级而受影响.所有HTTP 首部.值,以及它们的使用场景都 ...

  5. TLS 1.0 至 1.3 握手流程详解

    概述 TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供 ...

  6. 深入理解OAuth2.0协议

    1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...

  7. USB2.0协议笔记

    1.概述     USB(Universal Serial Bus)具有传输速率快,可热插拔等显著特点,应用已经十分广泛,目前的相当多的设备已经支持最新的USB3.0协议.理论上USB1.1的传输速度 ...

  8. 帮你深入理解OAuth2.0协议

    1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...

  9. HTTP2.0协议

    HTTP2.0协议 http2协议的草案已经出来了,阅读了一下网上的中文版,http2尽可能的兼容http1.1.改进了http1.1协议的不足. http1.0和http1.1的缺点: 1.http ...

随机推荐

  1. JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏

    原文地址:http://caibaojian.com/js-name.html JS中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词 ...

  2. 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)

    一:简要介绍一下asp.net的执行步骤 1.IIS接收到客户请求 2. IIS把请求交给aspnet_isapi.dll处理 3.(如果是第一次运行程序)装载bin目录中的dll 4.(如果是第一次 ...

  3. Linux安装go语言开发包

    1.下载go语言安装包,eg:go1.7.1.linux-amd64.tar.gz2.安装go语言 $ cd /home/xm6f/dev $ tar -zxvf go1.7.1.linux-amd6 ...

  4. PTA (Advanced Level) 1007 Maximum Subsequence Sum

    Maximum Subsequence Sum Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous su ...

  5. openerp7 时区问题解决--改成本地时区

    由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...

  6. Spring @Conditional简单使用 以及 使用时注意事项一点

    @Conditional注解在类的方法中 @Conditional注解失效的一种原因 @Conditional注解在类上 手写的低配版@ConditionalOnClass Spring  @Cond ...

  7. php和mysql学习问题笔记

    1.Undefined index: pwd in E:\xampp\htdocs\phpbase2elite\12\source\register.php on line 6 这是一个警告,表示数组 ...

  8. 解析js中( ( ) { } ( ) )的含义

    //实例var tensquared=(function(x) { return x*x; }(10)); 首先我们来拆解这一行语句: 一. var tensquared = xx; 这是赋值语句: ...

  9. 模拟按下某快捷键:keybd_event使用方法

    keybd_event是函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息. Windows提供了一个模拟键盘API函数Keybd_even ...

  10. ASP.NET MVC呼叫WCF Service的方法

    本演示,Insus.NET操练asp.net mvc的应用程序,虽然以前有写过:<MVC应用程序使用Wcf Service>http://www.cnblogs.com/insus/p/3 ...