TLS 1.0协议

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算法。session

TLS Record Protocol

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

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

  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握手过程。设计

相关文章
相关标签/搜索