《信息安全系统工程SSL和OpenSSL22826.pptx》由会员分享,可在线阅读,更多相关《信息安全系统工程SSL和OpenSSL22826.pptx(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、一个简单的安全协议一、一个简单的安全协议n n1、协议概述n n2、协议过程一个简单的安全协议一个简单的安全协议n n由于SSL协议的复杂性,为了更好地理解SSL,引入一个简单的安全协议,该协议适合于交互式应用。n n该协议的主要目标:n n1 1、保证通信数据的、保证通信数据的机密性机密性;n n2 2、保证通信数据的、保证通信数据的完整性完整性;n n3 3、确保通信双方、确保通信双方身份的可靠性身份的可靠性;n n4 4、不需为每个数据包都动用昂贵的公开密钥、不需为每个数据包都动用昂贵的公开密钥操作,操作,具有较高的效率具有较高的效率。协议过程协议过程n n基本步骤(假设通信双方为基
2、本步骤(假设通信双方为AliceAlice、BobBob):):n n1 1、握手(握手(HandshakeHandshake)n nAliceAlice和和BobBob使用他们的证书和私钥来对对方进行身份鉴别并交使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥(换共享密钥(MSMaster secretMSMaster secret)n n2 2、导出密钥(导出密钥(Key derivationKey derivation)n nAliceAlice和和BobBob使用他们达成一致的共享密钥(使用他们达成一致的共享密钥(MSMS)导出一组用)导出一组用于保护将要传输的数据的密钥(于保护
3、将要传输的数据的密钥(Session KeySession Key)n n3 3、数据传输(数据传输(Data transferData transfer)n n将要传输的数据分割成一系列的记录,并对每条记录加以保护将要传输的数据分割成一系列的记录,并对每条记录加以保护n n4 4、关闭连接(关闭连接(Connection closureConnection closure)n n使用特殊的、经过保护的关闭消息,安全地关闭连接使用特殊的、经过保护的关闭消息,安全地关闭连接协议过程协议过程握手握手n n握手阶段(Handshake)AliceBobHelloHelloCertificateCer
4、tificate(BobBob)Encrypt(Bob,MS)=EMSEncrypt(Bob,MS)=EMS单向单向单向单向鉴别(结束后双方获得主密钥鉴别(结束后双方获得主密钥鉴别(结束后双方获得主密钥鉴别(结束后双方获得主密钥MSMS)声称的身份(Bob)掌握Bob的私钥才能解密,从而完成身份证明Alice产生主密钥MS,并用Bob公钥加密(挑战)协议过程协议过程握手(续)握手(续)n n握手阶段(Handshake)AliceAliceBobBobHello,Certificate(AliceHello,Certificate(Alice)Certificate(Bob)Certifica
5、te(Bob)Sign(Alice,Encrypt(Bob,MS)双向鉴别(结束后双方获得主密钥双向鉴别(结束后双方获得主密钥双向鉴别(结束后双方获得主密钥双向鉴别(结束后双方获得主密钥MSMS)Alice产生主密钥MS,并用Bob公钥加密(挑战),再用自己私钥签名(证明自己)协议过程协议过程导出密钥导出密钥n n使用同一个密钥来完成不同类型的加密操作是糟糕的思想使用同一个密钥来完成不同类型的加密操作是糟糕的思想n n本协议在每个传输方向上可以采用两个会话密钥,分别用本协议在每个传输方向上可以采用两个会话密钥,分别用于加密和消息鉴别于加密和消息鉴别(MACMAC):):n n会话密钥可通过会话
6、密钥可通过密钥导出函数(密钥导出函数(Key Derivation FunctionKey Derivation Function,KDFKDF)由由 MS MS 和和 nonce nonce 导出;导出;n nKDF KDF 一般基于一般基于 Hash Hash 算法。算法。n n一种最简单的一种最简单的 KDF KDF 可能如下(可能如下(由同一个主密钥由同一个主密钥MSMS生成了生成了四个不同的会话密钥四个不同的会话密钥):):n nEcs=Hash(MS,nonce,”ECS”)/”ECS”Ecs=Hash(MS,nonce,”ECS”)/”ECS”等是一个常量等是一个常量n nMcs
7、=Hash(MS,nonce,”MCS”)/EMcs=Hash(MS,nonce,”MCS”)/E是加密密钥,是加密密钥,MM是是MACMAC密钥密钥n nEsc=Hash(MS,nonce,”ESC”)/csEsc=Hash(MS,nonce,”ESC”)/cs和和scsc是传输方向是传输方向n nMsc=Hash(MS,nonce,”MSC”)Msc=Hash(MS,nonce,”MSC”)协议过程协议过程数据传输数据传输n n数据记录数据记录n n为实现数据传输的灵活性,为实现数据传输的灵活性,必须对数据分块(记录)必须对数据分块(记录)传输传输n n数据分块后数据分块后 MAC MAC
8、 如何处理,放最后吗?如何处理,放最后吗?n n解决方法:分块后,每个解决方法:分块后,每个记录应该自记录应该自带带 MACMACn n记录大小记录大小n n定长,不经济定长,不经济n n理想的应是变长记录,每个记录要加上长度字段理想的应是变长记录,每个记录要加上长度字段n n记录格式记录格式n n长度长度MMx x +数据数据D D +MAC+MACn nMACMAC计算计算n nM=MAC(MM=MAC(Mx x,D)D)协议过程协议过程数据传输(续)数据传输(续)n n序号n n为为对抗重放、删除、重排攻击,需要增加序号对抗重放、删除、重排攻击,需要增加序号SequenceSequenc
9、en n序号必须是序号必须是 MAC MAC 输入的一部分输入的一部分n n可以放在记录中可以放在记录中n n在基于在基于TCPTCP的连接中,也可以使用隐含序号的连接中,也可以使用隐含序号n nMACMAC的计算的计算n nM=MAC(MM=MAC(Mx x,Sequence|D),Sequence|D)协议过程协议过程关闭连接关闭连接n n控制信息控制信息n n为防止攻击者恶意切断连接,需要有一种机制使得为防止攻击者恶意切断连接,需要有一种机制使得AliceAlice能告诉能告诉BobBob(或反之),她已完成数据传送(或反之),她已完成数据传送n n两种方法两种方法n n1 1、传送长度
10、为、传送长度为 0 0 的记录的记录n n2 2、在记录中增加类型字段、在记录中增加类型字段n n增加类型字段后的记录格式增加类型字段后的记录格式n n长度长度MMx x +序号序号SequenceSequence +类型类型TypeType +数据数据D D +MAC+MAC类型为类型为 0 0:普通数据:普通数据类型为类型为 1 1:结束记录:结束记录类型为其他:报告错误信息类型为其他:报告错误信息n nMACMAC的计算的计算n nM=MAC(MM=MAC(Mx x,Sequence|Type|D),Sequence|Type|D)协议过程协议过程完整图示完整图示AliceAliceBo
11、bHelloHelloCertificate,nonceCertificate,nonceSign(Alice,Encrypt(Bob,MS)Sign(Alice,Encrypt(Bob,MS)Type 0,Seq 1,DataType 0,Seq 1,DataType 0,Seq 2,DataType 0,Seq 2,DataType 0,Seq 1,DataType 0,Seq 1,DataType 0,Seq 3,DataType 0,Seq 3,DataType 1,Seq 4,CloseType 1,Seq 4,CloseType 1,Seq 2,CloseType 1,Seq 2,
12、Close协议小结协议小结n n该简单协议已经包含了该简单协议已经包含了SSLSSL绝大多数的核心功能绝大多数的核心功能n n握手握手n n密钥交换密钥交换n n双向鉴别双向鉴别n n保密传输保密传输n n遗漏的部分遗漏的部分n n不完整,不包括具体实现细节不完整,不包括具体实现细节n n数据结构定义数据结构定义n n每一字段大小每一字段大小n n使用何种算法使用何种算法n n涉及到数据结构表示、翻译等问题涉及到数据结构表示、翻译等问题n n更重要的是更重要的是n n缺少协商(缺少协商(negotiationnegotiation)功能)功能二、二、SSL协议协议n n1、SSL协议概述n n
13、2、SSL的会话和连接n n3、SSL的握手协议n n4、SSL的Change Cipher Spec协议n n5、SSL的Alert协议n n6、SSL的记录协议1、SSL协议概述协议概述n nSSL:Secure Socket Layer(安全套接层)n nSSL是用于Internet上两台机器间提供安全通道的协议,主要有两项功能:n n保护传输数据(机密性和完整性);保护传输数据(机密性和完整性);n n识别通信机器(认证性)。识别通信机器(认证性)。n nSSL协议的安全通道是透明的n n对传输的数据内容上不加变更,仅作了加密;对传输的数据内容上不加变更,仅作了加密;n n透明性使得几
14、乎所有基于透明性使得几乎所有基于TCPTCP的协议稍加改动的协议稍加改动就可以在就可以在SSLSSL上运行。上运行。SSL的历史的历史SSLv1(1994SSLv1(1994,Netscape)Netscape)未发布未发布SSLv2(1994)SSLv2(1994)第一版第一版SSLv3(1995)SSLv3(1995)只进行认证的模式只进行认证的模式;DH,DSS;DH,DSS;关闭握手关闭握手;再握手再握手;证书链证书链TLS(1997-1999)TLS(1997-1999)IETF;IETF;必须支持必须支持DH,DSS;DH,DSS;新的新的MACMAC算法算法;新的密钥扩展新的密钥
15、扩展 TLSTLS:Transport Layer SecurityTransport Layer Security;TLSV1.0TLSV1.0是一个是一个InternetInternet协议,完全建立在协议,完全建立在SSL V3SSL V3的基础上,又称为的基础上,又称为SSLv3.1SSLv3.1;RFC2246RFC2246:The TLS Protocol Version 1.0The TLS Protocol Version 1.0 Rfc3546Rfc3546:Transport Layer Security(TLS)ExtensionsTransport Layer Secu
16、rity(TLS)ExtensionsSSL在协议栈中的位置在协议栈中的位置IPHTTPFTPSMTPTCPSSL or TLS应用层应用层表示层表示层会话层会话层传输传输层(层(TCPTCP)网络层(网络层(IPIP)数据链路层数据链路层物理层物理层应用层应用层表示层表示层会话层会话层传输传输层(层(TCPTCP)网络层(网络层(IPIP)数据链路层数据链路层物理层物理层物理介质物理介质主机主机 A A主机主机 B B在分层模型下,某层进行了加密,则上层协议都将自动被加密在分层模型下,某层进行了加密,则上层协议都将自动被加密网络协议栈网络协议栈TCP/IP协议报文封装协议报文封装在分层模型下
17、,某层进行了加密,则上层协议都将自动被加密在分层模型下,某层进行了加密,则上层协议都将自动被加密SSLSSL的保的保护区域护区域SSL协议的使用协议的使用n n用于Web的SSLn nhttps:/https:/n nhttpshttps的端口:一般为的端口:一般为 443443;n n在SSL上构建一切n nftps-data(989),ftps(990)ftps-data(989),ftps(990)n nnntps(563)nntps(563)n npop3s(995)pop3s(995)n ntelnets(992)telnets(992)n n目前SSL的主要应用范围是 http 协
18、议。加密传输加密传输HTTPs HTTPs over SSLover SSLInternetInternet客户浏览器客户浏览器(1,2,n)(1,2,n)路由器路由器路由器路由器路由器路由器攻击者攻击者实际的报文传输实际的报文传输实际的报文传输实际的报文传输物理路径物理路径物理路径物理路径利用利用利用利用SSLSSL构建的端到端的构建的端到端的构建的端到端的构建的端到端的逻辑安全通道逻辑安全通道逻辑安全通道逻辑安全通道SSL加密前明文数据加密前明文数据(104协议协议)SSL加密后数据加密后数据利用利用WireSharkWireShark抓包分析抓包分析SSL的体系结构的体系结构SSLSSL
19、由由 HandshakeHandshake、Change Cipher SpecChange Cipher Spec、Alert Alert 和和 Record Record 这四个子协议组成这四个子协议组成2、SSL连接和会话连接和会话n n连接(连接(ConnectionConnection):指一次提供适当类型服务的传送。):指一次提供适当类型服务的传送。n n会话(会话(SessionSession):):n n由握手协议创建;由握手协议创建;n n定义了一组可以被多个连接共用的密码安全参数。定义了一组可以被多个连接共用的密码安全参数。n n连接连接 vs vs 会话会话n n在任意一
20、对的双方之间,也许会有多个安全连接;在任意一对的双方之间,也许会有多个安全连接;n n理论上,双方可以存在多个同时会话,但在实践中并未用到这个理论上,双方可以存在多个同时会话,但在实践中并未用到这个特性。特性。会话状态参数会话状态参数(48字节)字节)会话状态中的会话状态中的Cipher specEnum stream,block CipherType;Enum stream,block CipherType;Enum true,false IsExportable;Enum true,false IsExportable;Enum null,rc4,rc2,des,3des,des40,id
21、ea,fortezza Enum null,rc4,rc2,des,3des,des40,idea,fortezza BulkCipherAlgorithm;BulkCipherAlgorithm;Enum null,md5,sha MACAlgorithm;Enum null,md5,sha MACAlgorithm;Struct Struct BulkCipherAlgorithm Bulk_Cipher_Algorithm;BulkCipherAlgorithm Bulk_Cipher_Algorithm;MACAlgorithm MAC_Algorithm;MACAlgorithm M
22、AC_Algorithm;CipherType Cipher_Type;CipherType Cipher_Type;IsExportable Is_Exportable;IsExportable Is_Exportable;Uint8 hash_size;/MACUint8 hash_size;/MAC的长度的长度的长度的长度Uint8 key_material;/Uint8 key_material;/对称加密密钥的长度对称加密密钥的长度对称加密密钥的长度对称加密密钥的长度Uint8 IV_size;/IVUint8 IV_size;/IV的长度(的长度(的长度(的长度(CBCCBC模式使
23、用)模式使用)模式使用)模式使用)CipherSpec;CipherSpec;连接状态参数连接状态参数上述状态中的各种密钥上述状态中的各种密钥n nSSLSSL使用两个相互独立的密钥,即使用两个相互独立的密钥,即Server write keyServer write key和和client write keyclient write key,分别用于同一连接的两个方向上的加解,分别用于同一连接的两个方向上的加解密,对于密,对于MACMAC操作也一样。操作也一样。n n各个密钥的关系如下:各个密钥的关系如下:pre_master_secretpre_master_secretmaster se
24、cretmaster secretClient write MAC secretClient write MAC secretClient write secretClient write secretClient write IVClient write IVServer write MAC secretServer write MAC secretServer write secretServer write secretServer write IVServer write IV预备状态和当前状态预备状态和当前状态n nSSLSSL中定义了中定义了预备状态预备状态(pending sta
25、tepending state)和)和当前状当前状态态(current operating statecurrent operating state):):n n用这些状态来协调客户和服务器同时使用新的加密参数用这些状态来协调客户和服务器同时使用新的加密参数和密钥。和密钥。n n预备状态:预备状态:包含本次握手过程中协商成功的各种算法和包含本次握手过程中协商成功的各种算法和密钥。密钥。n n当前状态:当前状态:包含记录层正在使用的各种算法和密钥。包含记录层正在使用的各种算法和密钥。n n此外,客户和服务器都有各自独立的此外,客户和服务器都有各自独立的读状态读状态和和写状写状态态n n读状态读状
26、态:包含解密、解压缩、:包含解密、解压缩、MACMAC验证算法;解密密钥。验证算法;解密密钥。n n写状态:写状态:包含加密、压缩、包含加密、压缩、MACMAC生成算法;加密密钥。生成算法;加密密钥。预备状态和当前状态(续)预备状态和当前状态(续)n n以上二者结合,SSL的每一端都包含预备读、预备写、当前读、当前写4个逻辑状态。n n客户/服务器通过Change cipher spec 消息进行状态同步n n客户客户/服务器服务器收到收到change cipher specchange cipher spec后,会将后,会将预备读状态中的内容复制到当前读状态;预备读状态中的内容复制到当前读状
27、态;n n客户客户/服务器服务器发送发送change cipher specchange cipher spec后,会将后,会将预备写状态中的内容复制到当前写状态。预备写状态中的内容复制到当前写状态。3、SSL握手协议握手协议n nSSLSSL的握手协议层的功能是验证实体身份,协商的握手协议层的功能是验证实体身份,协商密钥交换算法、压缩算法和加密算法,完成密钥密钥交换算法、压缩算法和加密算法,完成密钥交换以及密钥导出等。交换以及密钥导出等。n n客户和服务器的握手过程是指客户和服务器的握手过程是指建立一个会话建立一个会话或或恢恢复一个会话的过程复一个会话的过程。n n在这一过程中,客户和服务器
28、都在这一过程中,客户和服务器都建立新的会话的建立新的会话的会话状态会话状态或或使用已经存在的会话的会话状态使用已经存在的会话的会话状态,但,但每次握手都产生新的密钥、每次握手都产生新的密钥、MACMAC密钥和密钥和IVIV,并将,并将这些参数作为当前连接状态中的元素。这些参数作为当前连接状态中的元素。SSL握手协议消息握手协议消息握手消息共有握手消息共有1010种,除了种,除了FinishedFinished消息外,所有其他握手消消息外,所有其他握手消息都以明文传送。息都以明文传送。建立一个新会话的握手过程建立一个新会话的握手过程ClientServer建立一个新会话的握手过程(续)建立一个新
29、会话的握手过程(续)n nSSLSSL握手协议本质上是一个密钥交换协议。握手协议本质上是一个密钥交换协议。n n密钥交换最多用到密钥交换最多用到5 5条消息:条消息:ServerCertificateServerCertificate、ServerKeyExchangeServerKeyExchange、ClientCertificateClientCertificate、ClientKeyExchangeClientKeyExchange和和CertificateVerifyCertificateVerify。n n实际上,不同的握手过程蕴含了实际上,不同的握手过程蕴含了SSLSSL的的3
30、3种验证模种验证模式:式:n n1 1)客户和服务器都被验证;)客户和服务器都被验证;n n2 2)只验证服务器,不验证客户,这是目前应用最广的)只验证服务器,不验证客户,这是目前应用最广的模式;模式;n n3 3)客户和服务器都不被验证,也成为完全匿名模式)客户和服务器都不被验证,也成为完全匿名模式(SSLSSL不鼓励,甚至反对使用该模式)。不鼓励,甚至反对使用该模式)。Hello消息中的消息中的Cipher Suiten n包括一个密钥交换算法和包括一个密钥交换算法和一个一个CipherSpecCipherSpec。n nData Encryption:Data Encryption:n
31、nAESAESn nRC2-40RC2-40n nRC4-128RC4-128n nDES DES n nDES 40DES 40n n3DES3DESn nIDEAIDEAn nFortezzaFortezzan nMessage Digest:Message Digest:n nMD5MD5n nSHASHAn nKey Exchange.Key Exchange.n n RSA RSAn n Fixed Diffie-Hellman Fixed Diffie-Hellmann n Ephemeral Diffie-Hellman Ephemeral Diffie-Hellmann n A
32、nonymous Diffie-Hellman Anonymous Diffie-Hellmann n Fortezza Fortezzan nData Compression:Data Compression:n nPKZipPKZipn nWinZipWinZipn n gzip gzipn n StuffIt StuffItServer key exchange 消息消息n n服务器在3种情况下发送该消息,向客户提供cipher suite中指定的密钥交换算法的临时公开密钥:n n1 1)服务器没有证书)服务器没有证书n n2 2)服务器有证书,但只用于签名)服务器有证书,但只用于签名n
33、 n3 3)使用了)使用了Fortezza_dmsFortezza_dms密钥交换算法密钥交换算法n n服务器可以对发送的临时公开密钥进行签名。Client key exchange 消息消息n n根据密钥交换算法的不同,该消息分为3类:n n1 1)RSA Encrypted Pre_master_secretRSA Encrypted Pre_master_secret:当使:当使用用RSARSA密钥交换算法时,客户产生密钥交换算法时,客户产生4848字节的字节的Pre_master_secretPre_master_secret,用服务器证书中的公钥或,用服务器证书中的公钥或Server
34、 key exchangeServer key exchange中给出的临时中给出的临时RSARSA公钥加公钥加密,然后发送给服务器。密,然后发送给服务器。n n2 2)FortezzaFortezza密钥交换消息:密钥交换消息:略。略。Client key exchange 消息(续)消息(续)n n3 3)Client Diffie-Hellman Public ValueClient Diffie-Hellman Public Value:当使用:当使用D-HD-H算法时,客户端通过该消息发送其公开密算法时,客户端通过该消息发送其公开密钥(钥(Public valuePublic val
35、ue)。)。n n当使用当使用D-HD-H时,双方产生的秘密值被用作时,双方产生的秘密值被用作 pre-pre-master-secretmaster-secret,因此在每次建立会话时,对于使用,因此在每次建立会话时,对于使用固定固定D-HD-H的场合,的场合,pre-master-secretpre-master-secret总是相同。总是相同。n n有鉴于此,有鉴于此,SSLSSL规定必须先通过规定必须先通过 pre-master-secretpre-master-secret生成生成 master-secret master-secret,再通过,再通过 master-secret m
36、aster-secret 生成最生成最终的会话密钥。终的会话密钥。Finished消息消息n nFinished消息总是在ChangeCipherSpec消息之后立即发送,用于证实密钥交换和验证过程的成功。n n该消息是第一个应用刚刚协商成功的加密算法和密钥加密的消息。n n如果客户或服务器在验证Finished消息的正确性时没有通过,则终止当前握手;如果都成功,就可以开始传送保密数据。Finished消息(续)消息(续)n n该消息的散列计算方法如下(以SHA为例):n nSHA_Hash=SHA(SHA_Hash=SHA(master_secret+pad2+master_secret+p
37、ad2+SHA(handshake_messSHA(handshake_messages+Sender+master_secret+pad1)ages+Sender+master_secret+pad1)n n其中其中 Sender Sender 是发送方标识、是发送方标识、pad1pad1和和pad2pad2是两是两个固定的常量、个固定的常量、handshake_messages handshake_messages 是除是除FinishedFinished之外,从之外,从 Client Hello Client Hello 开始的所有消息。开始的所有消息。建立新会话时的密钥导出过程建立新会
38、话时的密钥导出过程客户端客户端客户端客户端随机数随机数随机数随机数服务器服务器服务器服务器随机数随机数随机数随机数pre_masterpre_master_secret_secretmastermaster_secret_secretKDFKDFKDFKDF密钥分组密钥分组密钥分组密钥分组客户端客户端客户端客户端写写写写MACMAC密钥密钥密钥密钥服务器服务器服务器服务器写写写写MACMAC密钥密钥密钥密钥客户端客户端客户端客户端写密钥写密钥写密钥写密钥服务器服务器服务器服务器写密钥写密钥写密钥写密钥客户端客户端客户端客户端IVIV服务器服务器服务器服务器IVIV建立新会话时的密钥导出过程(续
39、)建立新会话时的密钥导出过程(续)n nMaster_secret=MD5(MD5(pre_master_secret+pre_master_secret+SHA(A+pre_master_secretSHA(A+pre_master_secret+ClientHello.random+ServerHello.random)+ClientHello.random+ServerHello.random)+)+MD5(MD5(pre_master_secret+pre_master_secret+SHA(BB+pre_master_secrSHA(BB+pre_master_secret+Clie
40、ntHello.random+ServerHello.random)et+ClientHello.random+ServerHello.random)+MD5(+MD5(pre_master_secret+pre_master_secret+SHA(CCC+pre_master_seSHA(CCC+pre_master_secret+ClientHello.random+ServerHello.random)cret+ClientHello.random+ServerHello.random)建立新会话时的密钥导出过程(续)建立新会话时的密钥导出过程(续)n nKeyblock=MD5(MD5
41、(master_secret+master_secret+SHA(A+master_secret+ClientHello.rSHA(A+master_secret+ClientHello.random+ServerHello.random)andom+ServerHello.random)+MD5()+MD5(master_secret+master_secret+SHA(BB+master_secret+ClientHellSHA(BB+master_secret+ClientHello.random+ServerHello.random)o.random+ServerHello.rando
42、m)+MD5()+MD5(master_secret+master_secret+SHA(CCC+master_secret+ClientHeSHA(CCC+master_secret+ClientHello.random+ServerHello.random)llo.random+ServerHello.random)+)+/直到产生足够生成直到产生足够生成6 6个参数的位数为止个参数的位数为止n n最终从 keyblock 截取出 client write MAC secret、server write MAC secret、client write key、server write ke
43、y、client write IV 和 server write IV。重用重用SSL会话的握手过程会话的握手过程重用重用SSL会话的握手过程(续)会话的握手过程(续)n n当通过恢复一个会话建立连接时,这一新的连接继承这个会话状态下的压缩算法、Cipher Spec 和master_secret。n n但该连接产生新的ClientHello.random和ServerHello.random,二者和当前会话的master_secret用来生成该连接使用的新密钥、MAC密钥和IVs。4、Change Cipher Spec协议协议n n该协议只有一条消息:该协议只有一条消息:Change Ci
44、pher SpecChange Cipher Spec消息,消息,其作用是标志加密策略的改变。其作用是标志加密策略的改变。n n客户和服务器都发送此消息,通知接受方,在该客户和服务器都发送此消息,通知接受方,在该消息之后发送的消息将采用握手层刚刚协商成功消息之后发送的消息将采用握手层刚刚协商成功的算法、密钥进行压缩、的算法、密钥进行压缩、MACMAC计算和加密操作。计算和加密操作。n nChange cipher specChange cipher spec消息的接收方令记录层将预消息的接收方令记录层将预备读状态复制到当前读状态;该消息的发送方令备读状态复制到当前读状态;该消息的发送方令记录层
45、将预备写状态复制到当前写状态。记录层将预备写状态复制到当前写状态。n nChange Cipher SpecChange Cipher Spec消息只有消息只有1 1个字节,值为个字节,值为1 1。5、Alert协议协议n nAlert协议包括若干个报警(alert)消息。n n报警消息的作用是,当握手过程或数据加密等操作出错或发生异常时,报警或终止当前连接。n n根据错误的严重程度,报警消息分为“警告性”消息和“致命性”消息:n n致命性报警消息导致立即终止当前连接,并将致命性报警消息导致立即终止当前连接,并将与这个连接相关的会话的与这个连接相关的会话的Session_idSession_i
46、d作废,以作废,以免这个会话被继续用于建立新的连接。免这个会话被继续用于建立新的连接。Alert协议(续)协议(续)n nSSL共有12 类报警消息,都是加密传输的。n n根据功能的不能,可以把它们分成两类:close_notify消息和error alerts消息。n nAlert 消息的结构是:Alert协议(续)协议(续)n nClose_notifyClose_notify消息消息n n通知接收方,发送方不再在当前的连接上发送消息。通知接收方,发送方不再在当前的连接上发送消息。n n客户端和服务器端都通过发送该消息结束当前连接。客户端和服务器端都通过发送该消息结束当前连接。n n如果一
47、个连接不是通过发送如果一个连接不是通过发送close_notifyclose_notify终止的,则相终止的,则相关的会话不可恢复。关的会话不可恢复。n nError_alertsError_alerts消息消息n n检测到错误的一方向对方发送检测到错误的一方向对方发送Error alertsError alerts消息。消息。n n一旦发送或接收致命一旦发送或接收致命error alertserror alerts消息,客户和服务器立消息,客户和服务器立即终止当前连接,并忘掉该连接的密钥、即终止当前连接,并忘掉该连接的密钥、MACMAC密钥以密钥以及与该连接相关的及与该连接相关的Sessio
48、n_idSession_id。n n共有共有1111种种error alertserror alerts消息(如消息(如unexpect_messageunexpect_message、bad_record_macbad_record_mac等)。等)。一次真实的连接一次真实的连接ClientServerClientHelloClientHelloServerHelloServerHelloClientKeyExchangeClientKeyExchangeChangeCipherSpecChangeCipherSpecChangeCipherSpecChangeCipherSpec应用数据应
49、用数据应用数据应用数据Warning,close_notifyWarning,close_notify应用数据应用数据应用数据应用数据CertificateCertificateServerHelloDoneServerHelloDoneFinishedFinishedFinishedFinished6、SSL记录协议记录协议n n记录层协议的功能是:根据当前会话状态指定的记录层协议的功能是:根据当前会话状态指定的压缩算法、压缩算法、CipherSpecCipherSpec,以及连接状态中指定的,以及连接状态中指定的客户和服务器随机数、加密密钥、客户和服务器随机数、加密密钥、MACMAC密钥、
50、密钥、IVsIVs、消息序号等,对当前连接中要传送的高层数、消息序号等,对当前连接中要传送的高层数据进行压缩和解压缩、加解密、计算与校验据进行压缩和解压缩、加解密、计算与校验MACMAC等操作。等操作。n n记录层协议要封装的高层协议主要有记录层协议要封装的高层协议主要有4 4类:类:n n1 1)Change cipher spec Change cipher spec 协议;协议;n n2 2)Alert Alert 协议;协议;n n3 3)握手协议;)握手协议;n n4 4)应用层协议,如)应用层协议,如HTTPHTTP、FTPFTP和和Telnet Telnet 等。等。各种协议协同