您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 【网络通信安全管理员认证-中级】SSL和SET
第6章安全协议6.1SSL协议及其应用6.2安全电子交易系统安全套接字层协议(SecuritySocketLayer,SSL)是用于Internet上进行保密通信的一个安全协议,它的主要目的是保证两台机器之间的通信安全,提供网络上可信赖的服务。SSL协议已成为Web安全方面的工业标准。目前广泛采用的是SSLv3。6.1SSL协议及其应用6.1.1引言SSL使用保密密钥对将要通过SSL连接传送的数据进行加密,它是对两台机器之间的整个会话进行加密的协议。SSL的设计目标如下:加密安全。互用性。可扩展性。关联功能。6.1.2SSL协议概述1.SSL协议的结构由两层组成,分别是握手协议层和记录协议层。SSL协议可以独立于应用层协议,因此可以保证一个建立在SSL协议之上的应用协议能透明地传输数据。SSL协议在网络协议栈的位置如图6.1所示。图6.1SSL协议层与TCP/IP协议的关系图SSL握手协议的作用是在正式的秘密通信之前,让服务器和客户之间互相鉴别对方的身份并协商一种会话的加密算法和加密密钥。(1)客户端和服务器之间互相验证身份(2)客户端和服务器之间协商安全参数SSL协议提供安全连接时有以下基本属性:通信内容是保密的。双方的验证是使用非对称密钥。连接是可靠的。2.SSL协议中的状态一个SSL会话是有状态的。(1)待定状态和当前状态待定状态,包含当前握手协议协商好的压缩、加密、计算MAC以及密钥等。当前状态,包含记录层正在实施的压缩、加密、计算MAC以及密钥等。(2)会话状态和连接状态每个会话状态包含以下元素:会话标识符压缩算法加密规格说明主密钥是否可回复的一个标志每个连接状态包含下列元素:服务器和客户端随机数服务器消息验证码密钥客户端消息验证码密钥服务器写密钥客户端写密钥初始化向量序号服务器和客户端3.SSL协议规范表示语言SSL协议有自己的一套规范语言,使用规范语言可以提供一种没有歧义的、精简的协议描述。SSL的规范语言和C语言有点相似。(1)基本类型所有的数据表示都是严格规定的。基本的数据大小是一个字节(8个位)。多字节的数据是八字节串联起来,从左到右,从上到下。(2)混合注释用“/*”开始,用“*/”结束,可选的组件放在“[[]]”里。(3)数值型基本的数值型是uint8。所有大数值型都是uint8固定组成。uint8uint16[2];uint8uint24[3];uint8uint32[4];uint8uint64[8](4)向量一个向量(单维的数组)是一个同构的数据元素流,它是给定类型的元素序列。向量有定长和变长。定长用[]表示,变长用〈〉表示。(5)枚举枚举就是只有一系列特定的字段,且每个值都有名字。(6)结构结构类型按需要从原始类型组合而成。语法和C很相似。struct{T1f1;T2f2;...Tnfn;}[[T]];这里可以用结构名加上字段名指定一个项,如T.f2就指定义的第二个字段。记录层SSL常用的数据加密算法有下列几种。(1)NoencryptionStreamciphers(2)RC4with40bitkey(3)RC4with128bitkeyCBCBlockCiphers(4)RC2with40bitkey(5)DESwith40bitkey(6)DESwith56bitkey(7)Triple-DESwith168bitkey(8)Idea(128bitkey)(9)Fortezza(96bitkey)6.1.3记录层协议1.帧帧是记录层从上层接收到的任意长度、非空的、不可分的数据。2.记录的压缩和解压3.记录有效负荷保护和密码规范change_cipher_spec消息有着特殊的用途,它表示记录加密及认证的改变,一旦握手商定了一组新的密钥,就发送change_cipher_spec消息来指示此刻将启用新的密钥。6.1.4change_cipher_spec协议警告类型是被SSL记录层协议支持的一种。警告消息传达消息的严重性和该警告的描述。6.1.5警告协议enum{warning(1),fatal(2),(255)}AlertLevel;enum{close_notify(0),unexpected_message(10),bad_record_mac(20),decompression_failure(30),handshake_failure(40),no_certificate(41),bad_certificate(42),unsupported_certificate(43),certificate_revoked(44),certificate_expired(45),certificate_unknown(46),illegal_parameter(47)(255)}AlertDescription;struct{AlertLevellevel;AlertDescriptiondescription;}Alert;1.关闭提示当连接关闭时,客户端和服务器端都必须知道,以防止切断攻击。2.错误提示一般有如下错误警告:unexpected_messagebad_record_macdecompression_failurehandshake_failureno_certificatebad_certificateunsupported_certificatecertificate_revokedcertificate_expiredillegal_parameter握手层SSL支持的密钥交换算法有以下两种:RSA密钥交换。Diffie-Hellman密钥交换。6.1.6握手层协议1.握手协议概述会话状态的加密参数由握手协议产生,握手协议在记录层协议的上方。图6.2是一简单的握手协议顺序图。图6.2显示了握手协议要传输的内容,但并非每一个箭头线都表示要在网络上传输一次,同一方向的几个连在一起,其内容将在一次传输中发送。图6.2简单的握手协议顺序图为了避免管道传输延时,ChangeCiphersSpec是一个独立的SSL内容类型,并不是一个实际的SSL握手协议消息。如果服务器和客户端决定再继续一个以前的会话或者复制一个已经存在的会话(使用新的安全参数来替代),那么消息流如下(星号表示可选):客户端服务器端ClientHello--------erverHelloCertificate*ServerKeyExchange*CertificateRequest*--------ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished--------[ChangeCipherSpec]--------FinishedApplicationData-------ApplicationDat恢复一个会话:客户端服务器端ClientHello--------ServerHello[changecipherspec]--------FinishedchangecipherspecFinished--------ApplicationData-------ApplicationData2.握手协议SSL握手协议是SSL记录层协议的高一级客户。这个协议是用来磋商一个会话的安全属性。下面是握手消息结构:Enum{hello_request(0),client_hello(1),server_hello(2),certificate(11),server_key_exchange(12),certificate_request(13),server_hello_done(14),certificate_vertify(15),client_key_exchange(16),(255)}HandshakeType;Struct{HandshakeTypemsg_type;uint24length;select(HandshakeType)casehello_request:HelloRequest;caseclient_hello:ClientHello;caseserver_hello:ServerHello;casecertificate:Certificate;caseserver_key_exchange:ServerKeyExchange;casecertificate_request:CertificateRequest;caseserver_hello_done:ServerHelloDone;casecertificate_verify:CertificateVerify;caseclient_key_exchange:ClientKeyExchange;casefinished:Finished;}body;}Handshake;握手协议必须按照顺序发送,否则,将会产生一个致命的错误。(1)Hello消息Hello阶段的消息用做在双方之间交换安全增强能力。①Hello请求。服务器可以在任何时刻发送Hello请求消息,但是,当握手协议正在进行时,客户端忽略消息。客户端也可以发送一个ClientHello来重新开始协议。②客户端Hello消息。客户端使用SSL版本号struct{uint32gmt_unix_time;opaquerandom_bytes[28];}Random;会话标识符密码组列表压缩算法列表③消息服务器Hello。服务器接收到一个ClientHello消息后,作为回应,将发送一个handshake_failure提示,或者一个ServerHello消息。struct{ProtocolVersionserver_version;Randomrandom;SessionIDsession_id;CipherSuitecipher_suite;CompressionMethodcompression_method;}ServerHello;(2)服务器密钥交换消息(Serverkeyexchangemessage)(3)证书请求一个非匿名的服务器可以任意要求客户端发送一个证书给它(4)服务器Hello结束服务器发送一个ServerHelloDone消息,表明服务器Hello消息及相关的消息的结束。发送以后,服务器将等待客户端的响应。(5)客户端证书在客户端接收到ServerHelloDone消息后,第一个可能发送的消息就是客户端证书。(6)客户端密钥交换消息struct{select(KeyExchangeAlgorithm){casersa:EncryptedPreMasterSecret;casediffie_hellman:ClientDiffieHellmanPublic;casefortezza_kea:FortezzaKeys;}exchange_keys;}ClientKeyExchange;(7)证书验证这个消息用来严格验证客户端证书。这个消息紧跟在一个具有签名能力的客户端证书后面。(8)结束一个变化的密码规范消息验证了密钥交换过程和验证过程已经成功后,一个结束的消息就立即发送。这个结束消息是第一个刚刚协商的安全参数保护的消息。在这个消息之后,双方就开始发送应用层数据。接收到结束消息,必须验证内容的正确性。密钥分为两大类:数据加密密钥(DK)和密钥加密密钥(KEK)。在现实世界中,密钥管理是最困难的安全问题,密钥管理问题成为网络安全的核心问题。本小节主要讨论双方在有公钥证书情况下的密钥交换,使用的是RSA密钥交换协议。6.1.7密钥管理图6.3共享密钥在公开信道上交换1.共享密钥在公开信道上的交换2.密钥的生成与分配SSL协议中包含对称加密算法和非对称加密算法,所以密钥的生成和分配也分成两类。下面从握手协议和应用数据两个方面分析SSL抵抗各种攻击的能力及SSLv3的某些漏洞。6.1.8SSL安全性1.握手层协议
本文标题:【网络通信安全管理员认证-中级】SSL和SET
链接地址:https://www.777doc.com/doc-311523 .html