tls 1.0 RFC文档 自译

水平有限,欢迎指正!

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之上的协议的设计和开发者。

原文地址:https://www.cnblogs.com/yuchengxin/p/9734287.html

时间: 2024-10-11 20:52:33

tls 1.0 RFC文档 自译的相关文章

[转] TCPIP 网络协议层对应的RFC文档

TCPIP网络协议层对应的RFC文档 RFC - Request For Comments 请求注解 TCP/IP层 网络协议 RFC文档 Physical Layer Data Link Layer ARP  - Address Resolution Protocol RFC826   ( EN CN ) RARP  - Reverse Address Resolution Protocol RFC903   ( EN CN ) Internet Protocol Layer IP  - In

Welcome to Swift (苹果官方Swift文档初译与注解三十五)---248~253页(第五章-- 函数 完)

Function Types as Return Types (函数类型作为返回值类型) 一个函数的类型可以作为另一个函数的返回值类型.可以在一个函数的返回值箭头后面写上一个完整的函数类型. 例如: 下面的例子定义了两个简单的函数,分别为stepForward 和 stepBackward.其中stepForward函数返回值比它的输入值多1,stepBackward函数返回值比它输入值少1.这两个函数的 类型都是(Int) -> Int: func stepForward(input: Int

Welcome to Swift (苹果官方Swift文档初译与注解二十七)---189~198页(第四章-- 流程控制)

Switch 一个switch语句里包含一个值,并且用这个值与其他几个可能的匹配模式进行比较,然后根据成功匹配上的模式,执行相应的代码块.switch语句提供了比if语句更多的选项来相应多种潜 在的情况. 最简单的一个例子: switch some value to consider { case value 1:   respond to value 1 case value 2, value 3:   respond to value 2 or 3 default:   otherwise,

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S

Welcome to Swift (苹果官方Swift文档初译与注解十一)---70~76页(第二章)

Type Aliases (类型别名) 类型别名是个已经存在的类型定义另一个名字.定义类型别名的时候,使用关键字typealias. 当你想要使用名字来引用一个已经存在的类型时,类型别名将非常有效,并且更适合代码的上下文理解.例如,当要处理指定大小的一个数据时: typealias AudioSample = UInt16 一旦定义了一个类型别名,就可以在任何地方来代替原来的类型名: var maxAmplitudeFound = AudioSample.min // maxAmplitudeF

Welcome to Swift (苹果官方Swift文档初译与注解十)---63~69页(第二章)

如果你将整型与浮点型一起使用,结果将被认为是Double类型: et anotherPi = 3 + 0.14159 // anotherPi 的类型是Double 上述代码中,3的值是没有明确说明类型,因此,根据剩余部分的浮点类型可以确定返回值为Double. Numeric Literals (数值的进制表示) 整数类型可以进行如下表示: A decimal number, with no prefix         // 十进制数值,不需要前缀符号; A binary number, w

Welcome to Swift (苹果官方Swift文档初译与注解三)---11~18页

上述代码中,如果可选值为nil,那么判断条件则为false,而且在{}中的代码将会被忽略,如果可选值不为nil,会将该值逐步运算后赋值给let后面的常量,其中逐步运算过程将依据实际的代码块. Switch 语法支持任何类型数据以及各种比较操作,并不局限在整型. let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some rai

Welcome to Swift (苹果官方Swift文档初译与注解三十七)---261~265页(第六章-- 闭包)

Inferring Type From Context 上下文类型判断 因为排序的闭包是作为一个参数传递给函数,因此Swift可以判定这个参数的类型和根据sort函数第二个参数判断返回值的类型.这个参数的类型是(String, String) -> Bool,这意味着 String,String以及Bool类型都不需要在闭包定义的时候声明.因为所有的类型都可以由系统判定.因此,返回箭头以及参数名字的括号都可以省略: reversed = sort(names, { s1, s2 in retur

Welcome to Swift (苹果官方Swift文档初译与注解二十八)---199~208页(第四章-- 流程控制)

Value Bindings (绑定值) 在switch的case中可以绑定一个或者多个值给case体中的临时常量或者变量,这个成为绑定值. 代码样例: let anotherPoint = (2, 0) switch anotherPoint { case (let x, 0):   println("on the x-axis with an x value of \(x)") case (0, let y):   println("on the y-axis with