资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,SSL ,Secure Socket Layer TLS,Transport Layer Security参考资料 密码编码学与网络安全:原理与实践 第14章 William Stallings 电子工业出版社,SSL连接像TCP的套接字那样,SSL的目标,SSL (Secure Socket Layer)是一种在TCP协议之上为两个端实体(End Entity)之间提供安全通道的协议。包括SSLv2、SSLv3、TLS协议,应用层,IP,TCP,SSL,SSL的历史,Netscape 公司于1994开发SSLv2 released in 1995SSL v3 also released in 1995 due to bugs in v2Microsoft提出PCT (Private Communication Technology) 1996年IETF成立Transport Layer Security (TLS) committeeTLSv1 was based upon SSLv3Netscape 、Microsoft 都支持 TLSv1TLS1与SSL3的差别非常微小。,SSL提供3个方面的安全服务-认证,认证-利用数字证书技术和可信任的第三方认证机构,为客户机和服务器之间的通信提供身份认证功能,以便于彼此之间进行身份识别 -使用 X.509v3 数字证书 客户对服务器的身份认证(可选) SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。 服务器对客户的身份认证 可通过公钥技术和证书进行认证,也可通过用户名,password来认证。,SSL提供3个方面的安全服务 -机密性和完整性,机密性-在SSL客户机和服务器之间传输的所有数据都经过了加密处理,以防止非法用户进行窃取、篡改和冒充。 using one of DES, Triple DES, IDEA, RC2, RC4, 完整性-SSL利用加密算法和Hash函数来保证客户机和服务器之间传输的数据的完整性。 using MAC with MD5 or SHA-1建立服务器与客户之间安全的数据通道 SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性,SSL提供的安全服务,用户和服务器的合法性认证 using X.509v3 digital certificates 传输数据的机密性 using one of DES, Triple DES, IDEA, RC2, RC4, 传输数据的完整性 using MAC with MD5 or SHA-1,SSL结构-两层,握手协议:用于在客户与服务器之间建立安全连接之前交换安全信息 客户和服务器之间相互认证 协商加密算法和密钥 它提供连接安全性,有三个特点 身份认证,至少对一方实现认证(对服务器的),也可以是双向认证 协商得到的共享密钥是安全的,中间人不能够知道 协商过程本身是可靠的 记录协议 建立在可靠的传输层协议(TCP)上 它提供连接安全性,有两个特点 保密性,使用了对称加密算法 完整性,使用HMAC算法 用来封装上层的协议,改变密码规格协议,告警协议,SSL工作原理,采用握手协议建立客户与服务器之间的安全通道,该协议包括双方的相互认证,交换密钥参数 采用告警协议向对端指示其安全错误 采用改变密码规格协议告知改变密码参数 采用记录协议封装以上三种协议或应用层数据,SSL基本概念 连接(Connection) 和会话(Session),连接:连接是能提供合适服务类型的传输(在OSI分层模型中的定义);对SSL,这样的连接是对等关系;连接是暂时的,每个连接都和一个会话相关 会话:SSL会话是指在客户机和服务器之间的关联; 会话由握手协议创建;会话定义了一组可以被多个连接共用的密码安全参数 对于每个连接,可以利用会话来避免对新的安全参数进行代价昂贵的协商。,会话是虚拟的结构,会话状态参数,连接状态参数,SSL Handshake 握手协议,SSL最复杂部分 服务器和客户能够相互鉴别对方的身份; 协商加密和MAC算法; 协商用来保护SSL记录中发送的数据的加密密钥。 握手由在客户和服务器之间交换的报文实现。,SSL握手协议报文格式,CS HandshakeClientHelloVersion 3.1 random32=17 08 3b dd af 90 2e 92 95 20 26 cb 88 4c 8b 85 5c 71 86 0b 28 70 d6 95 9b c9 09 95 9e 7d 99 eb cipher suitesTLS_RSA_WITH_RC4_128_MD5TLS_DH_RSA_WITH_DES_CBC_SHAcompression methodsNULL,SC HandshakeServerHelloVersion 3.1 random32=27 f4 38 9a 5b 23 8e . 7d 71 78 0b 32 5e e4 session_id32=3a 0e . 45 66 cipherSuite TLS_RSA_WITH_RC4_128_SHAcompressionMethod NULL,一 建立安全能力,Client Hello,SSL Client,SSL Server,Port 443,https:/www. any.com,客户发送一个client_hello消息,包括以下参数: 版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表 然后,客户等待服务器的server_hello消息,SSL Client,SSL Server,Server Hello,服务器发送server_hello消息,参数: 客户建议的低版本以及服务器支持的最高版本、 服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个,Data Encryption: RC2-40 RC4-128 DES DES 40 3DESIDEAFortezzaMessage Digest: MD5 SHA.,Cipher Suite Alternatives,Key Exchange.RSAFixed Diffie-HellmanEphemeral Diffie-HellmanAnonymous Diffie-HellmanFortezzaData Compression: PKZip WinZipgzipStuffIt,SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5,SSL Client,SSL Server,Server Certificate,服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链 (除了匿名DH之外的密钥交换方法都需要) 服务器发送server_key_exchange消息(可选的),有些情况下可以不需要。服务器长期密钥只能用于签名时,签发一个临时的长度较短的密钥 消息包含签名,被签名的内容包括两个随机数以及服务器参数,Client Certificate Request,服务器发送certificate_request消息(可选) 非匿名server可以向客户请求一个证书 包含证书类型和CAs,Server Done Message,服务器发送server_hello_done, 然后等待应答,二 服务器鉴别和密钥交换,SSL Client,SSL Server,Client Certificate,客户收到server_done消息后,它根据需要检查服务器提供的证书,并判断server_hello的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器。如果服务器请求证书的话,则客户首先发送一个certificate消息, 若客户没有证书,则发送一个no_certificate警告。然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是RSA,则含加密的48字节的PreMasterSecret)。最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名,三 客户机验证和密钥交换,SSL密钥的计算,KDF:key derivation function 密钥导出函数,pre_master_secret的获得-密钥交换算法,在hello消息中,双方交换随机数以及各种算法 两类密钥交换算法: RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器 Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret 再从pre_master_secret计算得到master_secret master_secret总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法,密钥导出函数-MD5、SHA-1或者两者结合,pre_master_secret,密码参数的生成,密码参数的生成,Key_block导出其他密钥,SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 选用密钥块的次序 client_write_MAC_secret = key_block0, 15 server_write_MAC_secret = key_block16, , 31 client_write_key = key_block32, , 36 server_write_key = key_block37, , 41 相关密钥生成 final_client_write_key = MD5(client_write_key | ClientHello.random | ServerHello.random) 0. , 15final_server_write_key = MD5(server_write_key | ServerHello.random |ClientHello.random) 0, , 15client_write_IV = MD5(ClientHello.random | ServerHello.random) 0, , 7 server_write_IV = MD5(ServerHello.random | ClientHello.random) 0, , 7,SSL Client,SSL Server,C S,S C,C S,S C,Encryption,MAC,IV,Encryption,MAC,IV,密钥交换结果,SSL Client,SSL Server,Client Finish change_cipher_spec,change_cipher_spec Server Finish,四 完成,第四阶段建立起一个安全的连接 客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中(目前只包含类型号) 然后,客户用本次连接协商的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。 服务器同样发送change_cipher_spec消息和finished消息。 握手过程完成,客户和服务器可以传送应用层数据。,1. 分片,无损压缩 不会增加1024字节以上长度的内容 没有默认压缩算法,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号