2022年SSL安全协议.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年SSL安全协议.doc》由会员分享,可在线阅读,更多相关《2022年SSL安全协议.doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SSL协议 Version 3.0 3/4/96翻译隋立颖一 本文件的地位 本文件是一个Internet草案。Internet草案是Internet工程特遣组(ITEF)及其领域和工作组的工作文件。请留意,其他团体也能够发布Internet草案。 Internet草案自公布之日起至多六个月内有效。它能够随时被修正、被交换,或被其他文件所覆盖。把Internet草案作为文献来援用,除说明是“正在进展中的工作”以外,是不适宜的。 要理解任何一个Internet的当前地位,请查阅如下ds.internic(美国东海岸),nic.nordu(欧洲),ftp.isi.edu(美国东海岸)以及munnar
2、i.oz.au(环太平洋地区)。其中Internet Drafts Shadow Directories目录下的1id-abstract.txt列表可提供这方面的信息。二 摘要本文制定了平安套接层协议第3.0版(SSL3.0)标准。SSL是一个提供Internet上的通讯隐私性的平安协议。该协议同意客户端/效劳器应用之间进展防窃听、音讯篡改及音讯伪造的平安的通讯。 三 简介制定SSL协议的初衷是为通讯双方提供平安可靠的通讯效劳,协议包含两个层次:其较低的SSL记录层协议位于某一可靠的传输协议(例如TCPTCP协议)之上;SSL记录层协议用来对其上层的协议进展封装。握手协议就在这些被封装的上层协
3、议之中,它同意客户端和效劳器彼此认证对方;同时在应用协议发出或收到第一个数据之前协商加密算法和加密密钥。如此作的缘故是保证了应用协议的独立性,使低级协议对高级协议是透明的。SSL协议提供的连接平安性具有以下三条属性l 连接是平安的。在初始化握手协议协商加密密钥之后传输的音讯均为加密的音讯。加密的算法为单钥加密算法(例如DESDES, RC4RC4等)。l 对方的身份是能够通过非对称加密算法即公钥加密算法(例如RSARSA, DSSDSS等)来验证。l 连接是可靠的。所传输的音讯均包含一利用签名私钥加密的音讯文摘(MAC),以保证音讯的完好性。平安杂凑(hash)函数(例如SHA, MD5等)被
4、用来产生音讯文摘(MAC)。四 目的 按它们的优先级,SSL协议3.0的目的是 l 在通讯双方之间利用加密的SSL音讯建立平安的连接。l 互操作性。通讯双方的程序是独立的,即一方能够在不明白对方程序编码的情况下利用SSL 3.0成功的交换加密参数。留意:并不是所有的SSL的实例(甚至在同一应用程序内)都能够成功的连接。例如,假如效劳器支持一特定的硬件令牌(token),而客户端不能访咨询此令牌,则连接不会成功。l 可扩展性。SSL寻求提供一种框架构造,在此框架构造中,在不对协议进展大的修正的情况下,新的公钥算法和单钥算法能够在必要时被参加。如此做还能够实现两个子目的1. 防止产生新协议的需要,
5、因而进一步防止了产生新的缺乏的可能性。2. 防止了实现一完好的平安协议的需要。相对的有效性。加密操作,尤其是公钥加密,对CPU来说是一种非常耗时的事,因而SSL协议引入一可选的对话缓存(CACHE)来减少从头开场的连接的数目。同时,它还留意减少网络的活动。五 此文档的目的 SSL协议版本3.0详细说明书的主要读者是要实现此协议的人和进展加密分析的人。此详细说明书主要是为这两类人而写的,因而它时刻留意反映这两类人的需要。因而在本详细说明书中(而不是写在附录中)以文本方式包含了许多与算法相关的数据构造和规则,使它们易于被访咨询。尽管本详细说明书包含了维护物理平安性所必须的策略,本详细说明书并不想提
6、供关于效劳和界面的定义。 六 描绘语言(Presentation language) 本文档主要是描绘外部表示(external representation)的数据的格式,因而用到了以下简单、根底而有点随意的定义的表示语法,这些语法在构造上来自不同的出处。尽管这些语法在构造上有点象程序设计语言C、在语法和目的上象XDRXDR,但过分的强调这品种似是有害的。本描绘语言的目的仅仅是描绘SSL。 6.1 根本块长(Basic block size) 所有的数据项的表示均是显式说明的,根本数据块的长度为一字节(也确实是说8比特)多字节的数据项是由从上至下、从左至右的多个字节连接组成。从字节流的角度来
7、看,一多字节的数据项(在本例中是一数字)是通过下述公式构成的: value = (byte0 8*(n-1) | (byte1 8*(n-2) | . | byten-1; 这种字节的顺序关系是网络中常用的顺序关系即大endian格式。 6.2 杂项 注释以“/*”开场,以“*/”完毕。 可选的部分是由将其包含进斜体的括号“ ”中而指定的。 单字节的包含不可解释的数据的实体的类型为opaque 6.3 向量(Vectors) 向量(一维数组)是一同类型的数据元素的流,向量的规模能够在编写文档时说明,也能够留至运转时才指明;不管在哪一种情况下,向量的规模(即大小)是由向量中字节的个数而不是向量中
8、元素的个数决定的。说明一新类型T是一固定长度的类型T的向量的语法为: T Tn; 在这里,T在数据流中占n比特,其中n是T的所占字节数的倍数。向量中包含数据元素的个数没有包含在数据流之中。在下例中,Datum被定义为三个连续的协议无法解释的字节的向量;而Data被定义为三个连续的Datum,一共包含9个字节 opaque Datum3; /* 三个协议无法解释的字节 */ Datum Data9; /* 三个连续的包含三个字节的向量 */ 可变长向量能够通过指明合法长度的范围,即形如的方式来定义,在编码时,在字节流中实际长度应在向量的内容之前,此实际长度是以数字的方式存储的,此数字应能表示此向
9、量的最大长度(ceiling length)。空向量指的是一实际长度为零的向量。 T T; 在下例中,mandatory是一必须包含300到400字节的opaque类型数据的向量,它不能是空向量,事实上际长度域占有两个字节,即uint16,足以表示400(见6.4节),而longer最多能表示800个字节,即400个uint16的数据元素,且能够是空向量。它的编码包含一两字节的实际长度域。 opaque mandatory; /* 长度域为两个字节,不能为空向量 */ uint16 longer; /* 零至400个16比特的无符号整数 */ 6.4 数字(Numbers) 根本的数字的数据类
10、型是无符号字节(uint8)。其他所有的大的数字均是由6.1节中描绘的固定长度的字节流连接而成,且它们均是无符号的。以下数字类型是预定义的: uint8 uint162; uint8 uint243; uint8 uint324; uint8 uint648; 6.5 枚举(Enumerate) 另一类稀疏的数据类型是枚举(enum),枚举类型的数据的取值范围只能是在其定义是声明的值。每一次定义均定义了一不同的类型。只有一样类型的枚举数据才能够互相赋值和比拟,枚举类型的每个枚举元素均必须象下例中所示的那样,被赋一个值。由于枚举类型这的元素是没有顺序的,因而它们能够取任意顺序的不同的值。 enu
11、m e1(v1), e2(v2), . , en(vn), (n) Te; 枚举类型的值在字节流中占据的空间的大小是其定义的取值范围中最大的可能值所占的空间大小。以下定义会使类型Color占有一个字节。 enum red(3), blue(5), white(7) Color; 你还能够通过指定一个无标签的值来强迫枚举类型所占的字节数,如此就不需定义一冗余元素了。在下例中,类型Taste在字节流中占两个字节但只能在1,2或4中取值。 enum sweet(1), sour(2), bitter(4), (32000) Taste; 枚举类型的元素的名字只在定义的类型中是有效的。在第一个例子中,
12、对类型Color中的第二个元素的完全限定援用为Color.blue。如此的限定当赋值的目的是被说明的时候时是能够忽略的。 Color color = Color.blue; /* 重复说明,但是合法的 */ Color color = blue; /* 正确,类型是隐含的 */ 关于元素的值不会转化为外部表示的枚举类型,元素的取值信息是能够省略的。 enum low, medium, high Amount; 6.6 构造(Constructed type) 构造类型能够由根本的数据类型方便的建成,每一次说明均声明了一新的、唯一的类型,定义的语法类似于C语言中构造的定义。struct T1 f
13、1; T2 f2 ; . Tn fn; T; 在一构造中的各域能够象枚举中援用元素时的语法一样用类型名加域名援用,例如T.f2援用的是上例中的第二个域,构造的定义能够嵌套。 6.6.1 变体构造(Variant) 定义构造时可能依照环境的不同而有不同的变体,选择器必须为枚举类型的数据,以定义构造中可能的变体,且必须用case语句将select中声明的每个枚举元素不会起来。变体构造的构造体能够有一供其援用的标签。在运转时如何决定变体的机制并没有在描绘语言中规定。 struct T1 f1; T2 f2 ; . Tn fn; select (E) case e1 : Te1 ; case e2 :
14、 Te2 ; . case en : Ten ; fv; Tv; 例如: enum apple, orange VariantTag; struct uint16 number; opaque string; /* 可变的长度 */ V1; struct uint32 number; opaque string10; /* 固定的长度 */ V2; struct select (VariantTag) /* 变体的选择器是隐含的 */ case apple: V1; /*VariantBody的定义,标签= apple */ case orange: V2; /*VariantBody的定义,
15、标签= orange */ variant_body; /* 可选的变体标签 */ VariantRecord; 变体构造能够通过在类型前指定选择器的值来限定(narrowed),例如:orange VariantRecord 是类型VariantRecord的一限定,它包含类型为V2的variant_body。 6.7 加密属性(Cryptographic attribute) 数字签名、流加密、块加密和公钥加密这四项加密操作的加密属性分别为digitally-signed,stream-ciphered,block-ciphered和public-key-encrypted。对一个域进展何
16、种加密操作是由在此域的类型说明前的适宜的加密属性(关键字)决定的,加密的密钥是由当前对话状态字隐含给出的(见7.1节)。 在数字签名中,输入为一单向哈希函数(one-way hash function)。当用RSA算法进展签名时,用签名私钥对一36字节的构造进展签名,此36字节的构造是由两个哈希函数生成的,一个为SHA,另一个是MD5。当用DSS算法进展签名时,能够直截了当对由SHA哈希函数生成的20字节的构造进展签名。 在流加密中,明文的长度与由密钥产生的密文的长度是一样的。此密钥是由伪随机数发生器生成的平安的密钥,是依照时间的变化而变化的。 在块加密中,密文的每一块均被加密成一块密文。由于
17、明文的长度并不是固定的,因而有可能在对明文(发出的数据)分块时产生一不满的块(块的长度通常为64比特),如今就需要将此不满的块的剩余部分填充数据,一般来说是填零。 在公钥加密中,单向限门函数被用来加密要发出的数据,用一给定公钥加密的数据仅能由相应的私钥解出,同样用一给定私钥加密的数据仅能由相应的公钥解出。 在下例中: stream-ciphered struct uint8 field1; uint8 field2; digitally-signed opaque hash20; UserType; 哈希函数的结果做为签名算法的输入,整个构造UserType用流加密进展加密。 6.8 常量(C
18、onstant) 有类型的常量能够通过在常量名前加上所希望的类型,并在常量名后给其赋上所期待的值来定义。未限定的类型(opaque,可变长向量,变体构造及带有opaque的构造)不能被赋值。多元素的构造和向量的所有域均应被赋值。例如: struct uint8 f1; uint8 f2; Example1; Example1 ex1 = 1, 4; /* 令 f1 = 1, f2 = 4 */ 七、 SSL 协议 SSL是一层次化协议。在每一层,音讯均能够包含描绘长度、音讯的描绘及音讯的内容的域。SSL在传输音讯时,首先将音讯分为其可处理的数据块,能够进展压缩,将其封装为一带音讯验证(MAC)
19、的包,随之进展加密并传输所得到的加密后的音讯。在收到音讯时,首先解密,然后验证、解压缩并重新组合得到原有的音讯,将此音讯发向较高的层次。7.1 对话及连接状态 SSL的对话是有状态的,是由SSL的握手协议来同步客户端和效劳器的状态的,因而同意它们一致的操作而不管它们的协议状态是否是并行的。从逻辑上讲,状态被提到了两次,一次是当前的操作状态,而另一次是在握手协议中的未决状态。而且,还维持单独的读状态和写状态。当客户端或效劳器收到change cipher spec音讯时,它将未决读状态复制到当前读状态。当客户端或效劳器发出change cipher spec音讯时,它将未决写状态复制到当前写状态
20、。当握手协商完毕时,客户端或效劳器将彼此交换change cipher spec音讯(见7.3节),如此它们就能够用新同意的cipher spec来进展通讯了。 SSL对话能够包含假设干次平安连接,而且每一方均能够同时有多个对话。 对话状态包含以下元素: 对话标识 一由效劳器为标识当前活泼的对话或重新开场的对话而随机 选取的字节流。 对等证书 对等方的X509.v3X509证书,状态的此元素能够为空。 压缩方法 在加密之前压缩数据所采纳的算法。 加密说明 指出所采纳的数据加密算法(如没有采纳加密算法,采纳DES 等)和作音讯文摘的算法(如MD5,SHA等),它还定义象 hash_size一类的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 SSL 安全 协议
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内