首页 > 技术文章 > tls 1.0 RFC文档 自译

yuchengxin 2018-10-01 11:02 原文

水平有限,欢迎指正!

1、介绍

  tls协议的主要目的是给两个交流中的应用提供私密性和数据完整性。本协议由两层组成:tls记录协议和tls握手协议。在最底层,覆盖在某个可靠传输协议上的,是tls记录协议。tls协议提供连接安全性,该安全性有两个基本的属性:

  1)连接是私有的。对称加密算法用来数据加密(例如:DES、RC4、等)。每一条连接和以秘钥协商为基础的另一个协议(tls握手协议)生成了独一无二的对称加密秘钥。tls记录协议也可以在无加密的情况下使用。

  2)连接是可靠的。消息传输使用keyed MAC 验证数据完整性。安全哈希函数(例如:SHA、MD5、等)用来MAC计算。tls记录协议可以在无MAC的情况下操作,但是通常只被使用在这种模式,另一个协议使用记录协议作为一个传输机,来协商安全参数。

  tls记录协议用来各种高层协议的封装。tls握手协议就是这样一个被封装的协议,允许客户端可服务器在应用层协议传输或接收到数据的第一个字节之前,进行互相认证、协商加密算法、和秘钥。tls握手协议提供连接安全性,该安全性有三个基本属性:

  1)双方的身份可以使用非对称,或公钥,加密算法(例如:RSA、DSS、等)进行认证。这个认证是可选的,但是通常需要只要一方的认证。

  2)共享秘钥的协商是安全的:协商的秘钥是无法被窃听的,并且任何已认证的连接的秘钥是无法被获得的,即使是在链路中间的攻击者。

  3)协商是可靠的:没有攻击者可以在没被侦测到的情况下修改协商通信。

  tls协议的一个优势是,tls与应用层协议是独立开来的。高层协议可以在tls协议之上进行传输。然而,tls标准没有阐述协议怎样使用tls来增加安全性;怎么开始tls握手和怎么理解认证证书交换的决定,留个运行在tls之上的协议的设计和开发者。

2、目标

  tls协议的目标按优先级如下排列:

  1)密码的安全性:tls用来在在两方之间建立安全的连接。

  2)协同工作的能力:独立的程序员应该能够在不知道另一方的代码的情况下,使用tls开发出能够交换加密参数的应用。

  3)可扩展性:tls寻求提供一个框架,这个框架使新的公钥和大量的加密算法可以被归为必需品。这也实现了两个子目标:避免了创建一个新协议的需求;避免了实施一个完整的新的安全库的需求。

  4)相对效率:加密操作高度消耗cpu,尤其是公钥操作。针对这个原因,tls协议引入了一个可选的会话缓存机制,该机制可以减少需要从头开始创建连接的数量。除此之外,已经采取措施来减少网络活动。

3、本文档的目标

  本文档和tls协议本身基于Netscape公司公布的ssl 3.0。tls 1.0和ssl 3.0的差别并不明显,但是这些差别足够大以至于tls 1.0和ssl 3.0不可以互操作(虽然tls 1.0中存在一个机制:tls可以回退到ssl 3.0)。本文档主要为开发协议的和那些算法分析的读者提供。说明说上已经写到,并且本文档反射出这两组人需求。基于这个原因,许多算法依赖的数据结构包含在文档中,读者可以轻松获取。

  本文档没有提供服务定义和接口定义的细节,因为需要对稳固的安全性的维护,本文档覆盖了策略的部分区域。

推荐阅读