(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf_第1页
(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf_第2页
(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf_第3页
(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf_第4页
(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机应用技术专业论文)tls协议的分析研究与软件实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 i a 0 3 s ;孑 f 信息安全是网络应用不可避免的问题。在现代网络环境下,计算机网络应用更 加广泛,这一问题也就更加迫切。为实现信息安全,需要采用两个基本手段:数据 加密和身份认证。而在真正的网络应用环境中,需要把两者结合起来,形成完整的 安全传输协议,以实现数据保密、身份认证等功能。t l s 协议就是一种实现以上功 能的典型的网络安全传输协议。 t l s 实现的功能包括对通信双方的身份认证、对数据加密和对数据的完整性保 护。t l s 协议通过通信双方交换握韦报文,协商在通信中使用的加密、签名算法和 加密密钥,并实现双方的身份认证。j 本文包含以下内容: i 首先详细介绍了t l s 协议的内容,包括编码方式、交换报文的格式、运行 流程以及协议定义的算法簇。 2 定义了协议运行的状态及状态机。 3对t l s 协议的实现用面向对象的方法进行了分析和设计,建立了一个是t l s 协议的面向对象模型,并给出了一个基于事件驱动的实现框架。 4 介绍了协议中用到的公钥加密算法如r s a 、d s a 、d h 的数学原理及实现算 法依据的标准。 关键词:t l s l :f z 安全i “, 加密 a b s t r a c t i n f o r m a t i o ns e c u r i t yi sa ni n e v i t a b l yp r o b l e mo fn e t w o r ka p p l i c a t i o n u n d e rm o d e m n e t w o r ke n v i r o n m e n t ,n e t w o r ki su s e dm o r ea n d m o r ew i d e l y , s ot h i s p r o b l e m i s b e c o m i n gm o r ei m m e n c es e c u r i t yo fi n f o r m a t i o n c a nb eo b t a i n e db ym e a n so ft w o e s s e n c i a l t e c h n o l o g i e s :e n c r y p t i o n a n da u t h e n t i c a t i o n i nr e a ln e t w o r k a p p l i c a t i o n e n v i r o n m e n t ,t h e s et e c h n o l o g i e sm u s tb ec o m b i n e d t oi n t e g r a ls e c u r et r a n s p o r tp r o t o c o lt o i m p l i m e n td a t ae n c r y p t i o na n da u t h e n t i c a t i o n t l sp r o t o c o li ss u c hat y p i c a l s e c u r e t r a n s p o r tp r o t o c o lw h i c hh a s t h e u p p e r f u n c t i o n s t h ef u n c t i o n so ft l s p r o t o c o li n c l u d eu s e ra u t h e n t i c a t i o n ,d a ms e c r e c y a n di n t e g r i t y b ye x c h a n g i n gs h a k e h a n dd a t a g r a m s ,c l i e n ta n ds e r v e rn e g o t i a t ee n c r y p t i o na n ds i g n i n g a l g o r i t h m s a n dk e y sf o r e n c r y p t i o na n d u s e ra u t h e n t i c a t i o nt h i s t o p i c i n c l u d e st h e f o l l o w i n g c o n t e n t : lt h ed e t a i l e dc o n t e n to ft l sp r o t o c o l ,i n c l u d i n g e n c o d i n gm e t h o d s ,d a t a g r a m f o r m a t ,r u n n i n gp r o c e s sa n dc i p h e rs u i t e sd e f i n e db yt h ep r o t o c o l 2d e f i n i t i o no fs t a t e sa n ds t a t em a c h i n e 3a no b j e c to r i e n t e d a n a l y z ea n dd e s i g no ft l sa n da ni m p l e m e n t a t i o nf r a m e b a s e do ne v e n t d r i v i n g 4s o m em a t h e m a t i c a l p r i n c i p l e s a n di n t e r n a t i o n a ls t a n d a r d so f p u b l i ck e y a l g o r i t h m su s e di nt h ep r o t o c o ls u c ha sr s a ,d s a a n dd h k e y w o r d s :t l ss e c u r i t y e n c r y p t i o n 第一章信息安全 1 1 网络和信息系统的安全 在信息技术飞速发展的今天,计算机和计算机网络迅速进入社会生活的各个方 面,在许多重要的领域发挥着不可替代的作用电子商务的迅猛发展就是一个例子。 但是在现在的i n t e r n e t 上,由于通信信道是公开的,数据在传输过程中很可能被窃 听甚至被篡改,因此,要真正发挥网络的重要作用,必须采用一定的技术保证信息 的安全。对信息进行加密解密、数字签名校验就是保证信息安全的重要技术。 1 2 信息安全技术 i 2 1 加密 加密指把明文信息m 通过变换e 得到密文c ,即c = e ( m k ) 。其中参数k 称为密 钥。而从密文c 恢复明文m 的过程称为解密。解密运算是加密运算的逆运算也需 要密钥k 。根据解密密钥和加密密钥是否相同,加密算法可以分为对称加密算法和 非对称加密算法两类。非对称加密算法也称为公钥加密算法。 1 2 1 1 对称加密算法 对称加密算法指加密密钥和解密密钥相同的加密算法。 kk 明文1 3 1 图【、2 l 对称加密算法 如图1 2 1 ,加密密钥和解密密钥是相同的。目前常用的对称加密算法有d e s 、 o e a 、r c 5 等。 1 2 1 2 非对称算法 明文m 公钥d私钥e 图l2 2 非对称加密算法 明文m 在非对称算法的加密和解密运算中,需要两个密钥。其中一个是密钥拥有者私 有的,称为私钥d ,另一个密钥是公开的,任何用户都可以得到,称为公钥e 。d 和 e 构成一个密钥对。用e 加密的数据只有用d 才能解密,同样,用d 加密的数据也 只有用e 才能解密。通常用一个用户的公钥对数据加密,然后发送给他。这个用户 用自己的私钥解密,就可以得到明文。采用这种算法就解决了对称算法不可避免的 誉钥分配问题。目前常用的非对称加密算法有r s a 、d h 、d s a 等。 1 2 2 数字签名( d i g i t a ls i g n a t u r e ) 和身份认证( a u t h e n t i c a t i o n ) 加密只是解决了数据的保密问题,要防止数据在传输过程中被恶意篡改以及对 数据源进行身份认证和防止用户对发送过的数据抵赖,就必须引入数字签名技术。 数字签名技术利用了非对称算法的特性,用户用自己的私钥对要发送的数据加密作 为数字签名,然后把明文和签名一起发送。接收者收到后,用发送者的公钥对签名 数据解密在和明文对比,如果相同,说明数据没有被修改,否则说明数据在传输 过程中被篡改了。同时,通过数字签名,可以确定数据的来源,并可以防止发送者 否认发送过的数据,这样就实现了身份认证和防抵赖功能。 由于非对称算法运算量比非对称算法大得多,因此对所有数据进行私钥加密作 为签名效率很低。在真正的应用中采用的方式是:首先对数据使用某种消息摘要 ( m e s s a g ed i g e s t 或h a s h ) 算法进行处理,产生很短的消息摘要,再对消息摘要进行 私钥加密作为数字签名,就大大提高了运算速度。接收者收到数据和签名后,用同 样的算法算出数据的消息摘要,并用发送者的公钥对签名进行解密,最后把解密结 果和上一步得到的消息摘要比较,就可以对签名进行校验。常用的消息摘要算法有 s h a 、m d 5 等。数字签名和校验过程如图l2 3 和1 2 4 。 图1 23 数字签名流程 1 2 3 个人证书和p k i 图12 4 数字签名校验流程 如果使用数字签名保证数据完整性,校验签名的用户必须得到签名者的公钥, 并且保证得到的公钥是正确可靠的。为了保证这一点,就必须采用p k i ( p u l b i ck e y n f r a a t r u c t r u e ) 规范。p k 是应用于i n t e r n e t 环境下,保证信息安全的规范。p k i 使用i t ux 5 0 9 个人证书来保证公钥的可靠性。个人证书把用户的个人信息和公钥 绑定在一起。需要校验其他用户签名时,先取得签名者的证书,从证书的个人信息 中可以验证签名者的身份,再用证书中的公钥校验签名。为了保证证书本身的可靠 性,证书必须由专门的机构认证机关c a ( c e r t i f i c a t ea u t h o r i t y ) 颁发。c a 颁 发的证书中有c a 的数字签名,而c a 证书是可以通过可靠的途径获取的。 1 2 4 安全的传输协议 在一个网络应用程序中,为了保证信息安全,必需使用安全的传输协议,其中 包含了以上提到的所有技术。一方向另一方发送数据,所经历的流程是这样的: 发送方对数据进行数字签名。 发送方对数据和数字签名用对称加密算法进行加密。 发送方把加密的数据通过网络发送给接收方。 接收方收到加密的数据,用同样的算法解密。 接收方用发送方的公钥校验签名。 可以看出,安全的传输协议必须包含以下功能: 对连接双方的相互身份认证。 对连接使用的算法的协商( 包括对称加密算法、非对称签名算法、签名中用 到的消息摘要算法) 。 保证发送数据的保密性和完整性。 本文讨论的t l s 就是这样一种典型的安全传输协议。 1 3 国内外研究状况 由于网络信息安全的重要性,国内外各许多公司和研究机构都投入了大量的人 力进行研究和产品开发。如著名的信息安全提供商r s as e c u r i t y 公司不但开发了大 量安全产品,而且还制定了许多基于公钥算法的工业标准p k c s 系列,己为全世界 各公司普遍采纳。制订i n t e r n e t 协议的砸t f 也已r f c 标准的方式定义了许多用于 i n t e r n e t 环境的安全标准和协议。其他国际组织如i e e e 也制定了相应的安全标准。 目前,信息安全技术和协议己广泛应用于各种常用的软件产品,如本文论述的t l s 协议在各种w e b 服务器和浏览器中己得到了支持,i i s 、a p a c h e 等w e b 服务器和i e 和n e t s c a p e 等浏览器都支持基于s s l t l s 的安全超文本传输协议h t t p s 。 近年来,国内也出现了一大批专业的信息安全公司,并推出了许多具有重要应 用价值的软硬件产品。在不久的将来,电子商务的迅速推广和应用必然会推动国内 外信息安全的研究更加迅速地发展。 2 1 t l s 协议介绍 第二章t l s 协议 t l s ( t r a n s p o r tl a y e rs e c u r i t y ) 1 0 s s l ( s e c u r es o c k e tl a y e r ) 3 0 演化而来的 v e r s i o n1 o 中。 是从n e t s c a p e 提出的安全套接字层 其规范定义在 r f c2 2 4 6 :t l sp r o t o c o l 2 1 1 t l s 主要提供以下三方面的服务: 客户方和服务器的合法性认证 使得通信双方能够确信数据将被送到正确的客户方或服务器上。客户方和服务 器郜有各自的证书。为了验证用户,t l s 要求双方交换证书以进行身份认汪并可靠 地获取对方的公钥。 对数据进行加密 t l s 使用的加密技术既有对称算法,也有非对称算法。具体地说,在安全的连接 建j z 起来之前,双方先用非对称算法加密握手信息和进行数字签名;安全连接建立 之后双方用对称算法加密。 保证数据的完整性 7 f l s 采用消息摘要函数提供完整性服务。 2 1 2t l s 的运行流程 t 1 。s 的协商过程分为以下几个步骤: 客户方通过网络向服务器提出连接请求。 双方互相认证对方的身份。 双方协商使用的加密和签名算法。 双方协商使用的密钥。 双方交换结束信息。 协商完成后,双方就可以在一个安全的连接上交换数据了。 2 2t l s 的数据结构描述语言及编码方式 t l s 协议规范使用的描述语言在语法上和c 及x d r 相似,但实际上和具体的语言 没有关系,并且不适用于本规范以外的其他场合。 2 2 1 基本数据块 所有的数据部是显式定义的。基本数据块的大小是一个字节。多字节数据由多个 字节从左到右连接起来构成。从字节流到一个多字节对象是按如下方式生成的: v a l u e = ( b y t e 0 8 ( n 1 ) )( b y t e 1 8 十( n 一2 ) ) b y t e n 一1 : 多字节对象的字节顺序遵循网络字节序或大端( b i ge n d i a n ) 格式。 2 2 2 向量 向量( 一维数组) 是由单一类型的数据元素组成的流。向量的大小可以在编码时 确定,也可以在运行时确定。向量的长度表示字节数而不是元素的个数。要定义一 个由基本类型t 构成的向量类型t 的语法是这样的:tt n 。这里t 在数据 流中占n 字节,而向量的长度并不包含在编码的字节流中。 变长向量的长度在一个范围内,用这种方式表示:tt f l o o r e e i l i n g ) 。编 码时,长度必须放在向量内容之前。长度字段所占字节数以能容纳定义的最大长度 为准。长度为0 的变长向量被看作一个空向量。 2 2 3 整数 堪本的整数类型是无符号字节( u i n t 8 ) ,其他较人的整数类型部是 扫这样的字节 按照2 2 2 节中描述的方法定义的,并且也是无符号的。以下楚数类型是预定义的 u i r l t 8u i n t l 6e 2 : u ir l t 8u i n t 2 4 3 : u i n t 8u i n t 3 2 4 : u i n t 8u i n t 6 4 8 j : 所有的整数都是按照网络字节序存储的。 2 2 4 枚举 另一种数据类型是枚举。枚举类型变量只能取定义中给出的值。每一次定义都是 一个类型。只有相同枚举类型的变量才能赋值和比较。枚举定义中的每一个元素都 必须赋一个值,如下例所示: e n u m s w e e t ( 1 ) ,s o u r ( 2 ) ,b i t t e r ( 4 ) ,( 3 2 0 0 0 ) ) t a s t e t a s t e 类型的变量可以取1 ,2 ,4 等值,最后一个元素用于指定每一个t a s t e 类 型的变量所占的字节数。 2 2 5 构造类型 结构类型由基本类型构造而来。每一次构造都定义一个新的类型。定义结构的语 法和c 语言相似: s tf i i c t ( t if l t 2f 2 t nf n t 2 2 6 变体纪录 记录定义中可能存在一些可变的类型,而其具体取值可以从环境中确定。决定其 选择的必须是枚举变量。在进行选择的语法表示中,对该枚举类型的每一个取值都 必须有一个c a s e 分支与之对应。在运行时哪一个分支被选中从描述语言中是无法确 定的。 s t f h cl r lf - 1 : t 2 f 2 : t nf n : s e le c t ( e ) c a s ee 1 :l e l : c a s ee 2 :t e 2 : ) f v : t v : 2 2 7 加密属性 四种加密操作:数字签名、流加密、块加密、公钥加密分别分配记号为 d i g i t a ll y s i g n e d ,s t r e a l n - c i p h e r e d ,b l o c k c i p b e r e d p u h l i c k e y e n c r y p t e d 。 对一个数据域进行相应操作的表示方法是在其类型名前加上对应的关键字。加密的 密钥可以在当前的连接状态中找到。 数字签名时,首先使用单向h a s h 函数对数据计算摘要,作为签名算法的输入数 据。数字签名结果编码为v e c t o r ,长度由算法和密钥确定。 使用r s a 签名时,对一个由两个h a s h 结果( 一个s i a ,一个m d 5 ) 构成的串进 行私钥加密,并使用p k c s # 1 块类型0 或l 进行编码。 使用d s s 签名时,对数据的s h a 结果直接作为签名算法的输入,不再需要其他 的h a s h 。签名产生两个值:r 和s 。d s s 签名结果是一个向量,其结果是对以下结构 的d e r 编码: :s e q u e n c e i n t e g e r , i n t e g e r 使用流加密算法时,数据和从一个由安全密钥保护的伪随机数产生器产生的字 节流进行异或。 使用块加密算法时,每一个明文块加密为一个密文块。块加密算法都是用c b c ( c i p h e rb l o c kc h a i n ) 方式实现的。块加密数据结果长度是加密块长度的整数倍。 使用非对称加密算法时,用公钥加密数据,只能用对应的私钥解开。被加密的 数据编码为v e c t o r ,长度由加密算法和密钥长度确定。 r s a 加密值用p k c s # l 块类型1 或2 编码。 2 3 t n a c 和伪随机数函数 r l s 的记录层协议的许多操作要求使用带密码的m a c ( m e s s a g ea u t h e n t i c a l :i o n c o d e ) 。这是种被密码保护的安全摘要算法。不知道m a c 密码是无法伪造m a c 数据 的。这样的过程称为h m a c 。 i m a c 可以使用多种摘要算法。在t l s 握手协议中,使用m d 5 和s h a l 算法,分 别表示为i 眦cm d 5 ( s e c r e t ,d a t a ) 和a c s h a i ( s e c r e t ,d a t a ) 。其他摘要算法 可以加在加密算法簇中定义,用于保护记录数据。但是m d 5 和s i a 是必须实现的。 h 外必须采用一定的方法把密码扩展为多块数据以刖于密钥生成。这个方法称为 4 e r s g 书 伪随机数发生函数p r f 。p r f 以一个密码、一个种子和一个标志作为输入,输出任意 长度的数据。为了让h m a c 算法安全,t l s 使用了两种摘要算法。这样,只要其中还 育一中算法是安全的,h m a c 的安全性就可以得到保证。 首先定义一个数据扩展函数p _ h a s h ( s e c r e t ,s e e d ) ,它把一个密码和一个种子 转化为任意长的输出: p h a s h ( s e c r e t ,s e e d ) = h m a c h a s h ( s e c r e t ,a ( 1 ) + s e e d ) + m a a ch a s h ( s e c r e t a ( 2 ) + s e e d ) + m l a ch a s h ( s e c r e t , ( 3 ) + s e e d ) + + 指连接运算。a ( ) 含义是a ( 0 ) = s e e d ,a ( i ) = h m a c _ h a s h ( s e c r e t ,a ( i - 1 ) ) 。 p h a s h 可以迭代调用任意多次以产生所需的数据量,例如,要使用ps h a 产生6 4 字节数据,需要迭代调用4 次,产生8 0 字节,而最后1 6 字节丢弃,取前面6 4 字节 作为输出数据。t l s 的p r f 是把密码分为两半,一半输入到p s h a 一1 ,另一半输入到 p 佃5 ,然后把两个输出数据异或作为最后的输出。 s l 是密码的前一半,s 2 是密码的后一半,两者长度相同。如果密码的长度是奇 数,则丢弃最后一个字节。两段的长度计算如下: l _ s = 密码的长度: l s i = l s 2 = c e i i ( l _ s 2 ) : t l s 的p r f 函数定义为两个伪随机流的异或: p r f ( s e c r e t ,l a b e l ,s e e d ) = pm 1 ) 5 ( s l ,l a b e l + s e e d ) x o r ps h a l ( s 2 ,l a b e l + s e e d ) : 其中l a b e l 是个a s c ii 串,不包含任何长度信息和作为结束的空字符。 注意因为n ) 5 产生1 6 字节输出,而s h a 产生2 0 字节输出,它们的内部边界不能 对齐,因此如果要产生8 0 字节数据,p s h a 需要调用4 次,而pm d 5 需要调用5 次。 i m a a c 的运算过程定义在r f c 2 1 0 4 。 2 4t l s 记录层协议 i l s 记录层协议是一个分层的协议。每一层都包含长度、描述和数据内容。记录 层协议把要传送的数据、消息进行分段,可能进行压缩,最后进行加密传送。对输 入数据解密、解压、校验,然后传送给上层调用者。 协议中定义了四种记录层协议的调用者:握手协议、报警协议、加密修改协议、 应用程序数据协议。为了允许对t l s 协议的扩展,其他记录类型也可以支持。任何 新类型部必须另外分配其他的类型标志。如果一个t l s 实现接收到它不能识别的记 录类型,必须将其丢弃。运行于t l s 之上的协议必须注意防范基于这一点的攻击。 因为长度和类型字段是不受加密保护的,因此必须小心非法用户可能针对这一点进 行流量分析。 2 4 1 连接状态 连接状态是t i ,s 的操作环境,指定加密算法、压缩算法、消息摘要算法( m c ) 。 这。;算法的参数:m a c 的密码、块加密的在读写方向上的密钢k e y 和jr 。逻辑j :存 在4 种连接状态:当前的读、写状态,候选的读、写状态。候选的状态可以由握手 协议设为当前状态。在这种情况下,当前状态被候选状态取代,而候选状态被初始 化为空状态。把未被算法参数初始化的状态设为当前状态是非法的。 t l s 连接上的安全参数可设为以下值; 连接端( c o n a e c t i o ne n d ) :本实体是c ll e n t 还是s e r v e r 。 块加密算法( b u l ke n c r y p t i o na l g o r it h i n ) :包括密钥长度,加密块长度、 密钥保密程度、是块加密还是流加密、加密算法是否符合出口限制。 消息摘要算法( i v i a ca i g o r i t h m ) :包括返回的消息摘要长度。 压缩算法( c o m p r e s s i o na l g o r i t h m ) :包括压缩算法需要的所有参数。 主密码( m a s t e rs e c r e t ) :双方共享的4 8 字节数据。 客户方随机数( c l i e n tr a n d o m ) :由客户方提供的3 2 字节数据。 服务器随机数( s e r v e rr a n d o m ) :由服务器提供的3 2 字节数据。 以上参数的定义: e n u m s e r v e r ,c l i e n t c o n n e c t i o n e n d : e n u m n u l l ,r c 4 ,r c 2 ,d e s ,3 d e s ,d e s 4 0 ) b u l k c i p h e r a l g o t i t h i n : e n u m ( s t r e a m ,b l o c k ) c i p h e r t y p e : e n u mf t r u e ,f a l s e ) i s e x p o r t a b l e , e n u min u l l ,m d 5 ,s h a ) m a c a i g o r i t h m : e n u m n u l l ( 0 ) ,( 2 5 5 ) ) c o m p r e s s i o n m e t h o d : 胁可添加新的算法 s t r u c t c o n n e c t i o n e n d b u l k c i p h e r a l g o r i t h i n c i p h e r t y p e u i n t 8 u i n t 8 i s e x p o r t a b l e a c a i g o r i t h m u i n t 8 c o m p r e s s i o n m e t h o d o p a q u e o p a q u e o p a q u e s e c u r it y p a r a m e t e r s i e l l t l t y : b u l kc i p h e r a i g o r i t h m c i p h e r t y p e : k e y s i z e : k e y m a t e r i a l l l e n g t h : is e x p o r t a b l e : m a o _ a l g o r i t h m : h a s hs i z e : c o m p r e s s i o n a l g o r i t h i n m a s t e r s e c r e t 4 8 : cjje n t r a n d o m 3 2 i s e r v e rr a n d o m 3 2 : 记录层用这些安全参数产生以下各项: ( 客户方写m a c 密码)c 1 i e n tw r i t em a cs e c r e t ( 服务器写m a c 密码) s e r v e rw r i t e 姒cs e c r e t ( 客户方写密钥)c l i e n tw r i t ek e y ( 服务器写密钥)s e r v e rw r i t ek e y ( 客户方写i v )c l i e l i tw r i t ei v ( 仅用于块加密) ( 服务器写i v )s e r v e rw r it ef v ( f o rb l o c kc i p h e r s o n iy ) 一旦这些安全参数设置好,密钥产生以后,这个状态就可以没为当前状态丁。 姆处理一个记录,当i m 状态必须更新。每个状态包含以下元素: 压缩状态( c o m p r e s m o ns t a t e ) :当前压缩算法的状态。 加密状态( c i p h e rs t a t e ) :当前加密算法的状态。包括使用的密钥。在 c b c ( c i p h e rb 1 0 c kc h a i n i n g ) 模式的块加密算法中,初始化时包括i v ,每 次处理完一个记录后更新为此记录的最后一块( 密文或明文) 。在流加密中, 包含所需的任何参数。 m a c 密码( m a cs e c r e t ) :用于此次连接的m a c 密码。 序列号( s e q u e n c en u m b e r ) :每个连接状态包含一个序列号。为u i n t 6 4 类型。 读、写状态的序列号是分开的。一个连接状态被设为活动状态时序列号必须 为0 ,每处理一个记录增加i 。一个连接状态的第一个记录使用序列号0 。 2 4 2 记录层 i 己录层从上层接收未解释的任意长度的数据。 记录层接受数据后分段成为等于或小于2 1 4 字节的块放入t l s p i a i n t e x t 结 构中,不保留记录边界。 s t f u c tf u i n t 8m a j o r ,m i n o r : p r o l q c 0 1 v e r s i o n : e n u m c h a n g e c i p h e r s p e c ( 2 0 ) ,a l e r r ( 2 1 ) ,h a n d s h a k e ( 2 2 ) , a p p li c a t i o n d a t a ( 2 3 ) ,( 2 5 5 ) ) c o n t e n t t y p e i s t r u c t c o n t e n t t y p et y p e : p r o t o c o i v e r s i o nv e r s i o n : u i n t l 6 l e n g t h : o p a q u ef r a g m e n t t l s p l a i n t e x t i e n g t h , jt l s p l a i n t e x t : t y p e :用于高层协议处理数据分段。 v e r s i o n :t l s 版本号。此版本使用( 3 ,i 。因为t l si 0 是从s s l3 0 修改而 来的。 ! e n g t h :数据分段的长度。不得超过2 1 4 。 r r a g m e n t :数据分段。 注:不同类型分段重叠时,a p p l i c a t i o n - d a t a 分段优先级较低。 2 4 2 2 记录压缩与解压 记录都用当前状态指定的压缩算法进行压缩。任何时候都有一个活动的压缩算 法,切始化时为压缩算法为空。压缩算法把t l s p l a i n t e x t 转化为t l s c o m p r e s s e d 。 啭铺翦:法必须是无损压缩并且压缩后长度不得超过原长度1 0 2 4 字节。如果解压函数 产,t 超过2 1 4 字节的结果,则返回致命错误。 s t r u e t c o n t e n t t y p et y p e : p r o t o c o i g e r s i o nv e r s i o n s a m ea st l s p l a i n t e x t t y p e s o _ i 】i l ea st l s p l a i n t e x t v e f s i o n u i n t l 6l e n g t h : o p a q u ef r a g m e n t t l s c o m p r e s s e d 1 e n g t h : )t l s c o m p r e s s e d : l e n g t h :f r a g m e n t 中数据长度。不得超过2 1 4 + 1 0 2 4 字节。 f r a g m e n t :压缩后的数据。只包含t l s p l a i n t e x t f r a g m e n t 的压缩形式。 2 4 2 3 记录负载保护 加密和消息摘要函数把t l s c o m p r e s s e d 转化为t l s c i p h e r t e x t 。消息摘要时也包 含序列号,以免数据丢失或重复。 s t r u c t ( c o n t e n t t y p et y p e , p r o t o c o l v e r s i o ev e r s i o n : u i n t l 6l e n g t h : s e l e c t ( c i p h e r s p e c i p h e r t y p e ) c a s es t r e a m :g e n e r i c s t r e a m c i p h e r : c a s eb l o c k :g e n e r i c b l o c k c i p h e r : f r a g m e n t : t l s c ip h e r t e x t : 1 e n g t h :f r a g m e n t 的长度。不得超过2 1 4 + 2 0 4 8 。 f r a g m e n t :t l s c o m p r e s s e d f r a g m e n t 的加密形式和m a c 。 2 4 2 3 1 无加密或标准流加密 流加密把t l s c o m p r e s s e d f r a g m e n t 转化为以下结构: s t r e a m e i p h e r e ds t r u c t o p a q u ec o nt e n t t l s c o m p r e s s e d 1e n g t h :密文,长度和明文 相同。 o p a q u em a c c i p h e r s p e c h a s h s iz e : ) g e n e r i c s t r e a m c i p h e r : 其中,m a c 用以下方式产生: m a c h a s h ( m a c _ w r it e s e c r e t ,s e q _ n u m + t l s c o m p r e s s e d t y p e + t i s c o m p r e s s e d v e r si o n + t l s c o m d r e s s e d 1 e n g t h + r l s c o m p r e s s e d f r a g m e n t ) ) , + 指连接操作。 s e q n u m :记录的序列号。 h s h : 状态参数指定的消息摘要算法。 往:m c 足在加密i 行算出来的。流加密算法加密包括m c 的整个块。 8 2 4 2 ,3 2c b c 块加密 加密函数把t l s c o m p r e s s e d f r a g m e n t 转化为以下结构: b l o c k c i p h e r e ds t r u c t o p a q u ec o n t e n t t l s c o m p r e s s e d 1 e n g t h j o p a q u e , 、4 a c c i p h e r s p e c h a s h s i z e u f n t 8p a d d i n g g e n e r i c b l o c k c i p h e r p a d d i n gl e n g t h , u i n 叫p a d d i n g _ 1 e n g t h : ) g e n e r i c b l o c k c i p h e r : m a c 产生方式采用上述h m a c 算法。 p a d d i n g :填充数据。把明文填充为算法块长的整数倍。长度从0 到2 5 5 字节。 p a d d i n g _ l e n g t h :填充长度。0 - - 2 5 5 。 密文长度大于t l s c o m p r e s s e d 1 e n g t h + c i p h e r s p e c h a s h s iz e + p a d d i n g _ l e n g t h 。 2 4 3 密钥计算 首先计算产生k e y b l o c k : k e y b l o c k = p r f ( s e c u r i t y p a r a m e t e r s m a s t e rs e c r e t “k e ye x p a n s i o n ”, s e c u rit y p a r a m e t e r s s e r v e r r a n d o m + s e c u r i t y p a r a m e t e r s c li e n t r a n d o m ) : k e y b l o c k 中产生足够数据后,分成若干片,分别作为各个密钥。 c 1 i e n t w r i t e 一姒c - s e c r e t s e c u r i t y p a r a m e t e r s h a s h s i z e s e r v e r _ w r i t e m a c - s e c r e t s e c u r i t y p a r a m e t e r s h a s h s iz e c l i e n t _ w r i t e k e y s e c u r i t y p a r a m e t e r s k e ym a t e r i a l - 1 e n g t h s e r v e rw r i t e k e y s e c u r t y p a r a m e t e r s k e y m a t e r i a l l e n g t h c l i e n t w r i t e i v s e c u r i t y p a r a m e t e r s i v s i z e s e r v e r w r i t e i v s e c u r i t y p a r a m e t e r s i v _ s iz e 其中,c l i e n t w r i t e i v 和s e r v e r w r i t e i v 只是用作非输出i v ,输出块加密 的i v 以后产生。 注:所需密钥最长的算法是3 d e s e d e c b c s h a 。共需1 0 4 字节。 输出算法密钥需要附加处理: f ih a l 一“i e n t w r i t e k e y5 p r f ( s e c u r i t y p a r n e t e r s c 1 l e n t w r i t e k e y , “c i e a tw r i t e k e y ” s e c u r it y p a r a m e t e r s c li e n tr a n d o m + s e e u r i t y p a r a m e t _ e r s s e r v e r r a n d o m ) : f _ i n a i s e r v e r _ w r i t e k e y 2 p r ? ( 5 e c u r i t y p a r a m e t e r s s e r v e r w r it e k e y , “s e r v e rw f i t e k e y 9 s e c u r i t y p a r a m e t e r s e l l e n t r a n d o m + s e e u rity p a r a m e t e r s s e r v e rr a n d o m ) : i v - b l o c k = p r f ( “”,“i vb l o c k ”,s e c u r i t y p a r a m e t e r s ll e n t r a n d o m + $ e c u r i t y p a r a m e t e r s s e r v e r r a n d o m ) : c li e n t w r i t e i v s e c u r i t y p a r a m e t e r s i v s z e s e r v e r _ w r i t e i v s e c u r i t y p a r a m e t e r s i v - s i z e j 2 5 t l s 握手协议 握手协议包含3 个子协议,分别用于双方商定安全参数、相互认证、实例化安 全参数、报告错误。 握手协议用于协商会话,包括以下内容: 会话标志( s e s s i o ni d e n t i f i e f ) :由s e r v e r 选定,用于标志或恢复一个会 话。 对方证书( p e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论