380 likes | 584 Views
本章内容. SSL 协议族概述 SSL 体系结构与协议 SSL 协议的安全性分析 SSL 的应用 参考文献: 教科书第 5 章 《 网络安全 》 第 19 章,第二版, Charlie Kaufman 著. 5.1 SSL 协议族概述. SSL ( Secure Socket Layer )是一种在 TCP 协议之上为两个端实体( End Entity )之间提供安全通道的协议。包括 SSLv2 、 SSLv3 、 TLS 协议. SSL. SSL. IPSec. TCP. TCP. OS. IP/IPSec. IP. Lower layers.
E N D
本章内容 • SSL协议族概述 • SSL体系结构与协议 • SSL协议的安全性分析 • SSL的应用 • 参考文献: • 教科书第5章 • 《网络安全》第19章,第二版,Charlie Kaufman著
5.1 SSL协议族概述 • SSL (Secure Socket Layer)是一种在TCP协议之上为两个端实体(End Entity)之间提供安全通道的协议。包括SSLv2、SSLv3、TLS协议 SSL SSL IPSec TCP TCP OS IP/IPSec IP Lower layers Lower layers
SSL协议族概述 • 具有保护传输数据以及识别通信实体的功能。 • 安全通道是透明的,独立于应用层;传输层采用TCP,提供可靠业务 • 最先(1995年)是由Netscape公司开发的,并被广泛应用于Web等安全服务;Microsoft在SSLv2基础上修补部分安全问题,提出类似的协议PCT (Private Communication Technology);再之后Netscape的彻底改进,得到SSLv3 • IETF 制定的TLS(Transport Layer Security)版本最初目标是对Netscape公司的SSL和Microsoft公司的PCT两个协议的综合和兼容。 • 本章重点讨论SSLv3协议
SSL解决的问题(功能) • 客户对服务器的身份认证 • SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。 • 服务器对客户的身份认证 • 可通过公钥技术和证书进行认证,也可通过用户名+ password来认证。 • 建立服务器与客户之间安全的数据通道 • SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性
SSL提供的安全服务 • 用户和服务器的合法性认证 • using X.509v3 digital certificates • 传输数据的机密性 • using one of DES, Triple DES, IDEA, RC2, RC4, … • 传输数据的完整性 • using MAC with MD5 or SHA-1
SSL/TLS概述 • SSL协议分为两层 • 底层:记录协议 • 上层:握手协议、密码变化协议、警告协议、用户数据 • 握手协议:用于在客户与服务器之间建立安全连接之前交换安全信息 • 客户和服务器之间相互认证 • 协商加密算法和密钥 • 它提供连接安全性,有三个特点 • 身份认证,至少对一方实现认证(对服务器的),也可以是双向认证 • 协商得到的共享密钥是安全的,中间人不能够知道 • 协商过程本身是可靠的 • 记录协议 • 建立在可靠的传输层协议(TCP)之上 • 它提供连接安全性,有两个特点 • 保密性,使用了对称加密算法 • 完整性,使用HMAC算法 • 用来封装上层的协议
HTTP/ S- HTTP FTP SMTP SSL or TLS TCP IP SSL/TLS协议栈 • 为上层协议提供安全性 • 保密性 • 身份认证和数据完整性
SSL的工作原理 • 采用握手协议建立客户与服务器之间的安全通道,该协议包括双方的相互认证,交换密钥参数 • 采用告警协议向对端指示其安全错误 • 采用改变密码规格协议告知改变密码参数 • 采用记录协议封装以上三种协议或应用层数据(记录类型:20=改变密码规格,21=告警,22=握手,23=应用层数据)
记录协议中的记录头(Head) • ContentType; —— 8位,上层协议类型 • Major version; Minnor version—— 各8位,主次版本 • Compressed Length:16位— 加密后数据的长度,不超过 +2048字节(SSL 几乎不用压缩,虽然支持) • EncryptedData fragment; —— 密文数据
SSL 握手协议 • allows server & client to: • authenticate each other • to negotiate encryption & MAC algorithms • to negotiate cryptographic keys to be used • comprises a series of messages in phases • Establish Security Capabilities • Server Authentication and Key Exchange • Client Authentication and Key Exchange • Finish
SSL 握手协议(RSA方式) Crypto suites I support, Ra Bob Alice 加密算法 协商 Certificate ,Crypto suite I choose, Rb <S>Pubkey-b, {keyed hash of handshake msgs} {keyed hash of handshake msgs} 发送ID 认证 加密 Data protected with keys derived from K K=f(S,Ra,Rb) K=f(S,Ra,Rb)
会话重用 • SSL/TLS认为会话通常是具有较长的生命期,在此之上需要在会话基础上容易派生出多个连接。这是因为协议被设计为能够与HTTP协议协同工作,而HTTP协议能够在相同客户和服务器之间打开大量的TCP连接 • 一次一密的会话主密钥是使用开销较大的公开密钥密码技术建立起来的,通过发送包括nonce握手消息的方式,能够在主密钥的基础上派生出多个连接。
会话重用(未进行重用的情况) Crypto suites, Ra Bob Alice SessionID,Certificate ,Crypto suite, Rb <S>Pubkey-b, {keyed hash of handshake msgs} {keyed hash of handshake msgs} Data protected with keys derived from K
会话重用(进行重用的情况) Bob Alice SessionID,Crypto suites, Ra SessionID,Certificate ,Crypto suite, Rb {keyed hash of handshake msgs} {keyed hash of handshake msgs} Data protected with keys derived from K
密钥的计算 • 秘密值S:预备主密钥(Pre-master secret) • 主密钥(Master secret)K:K=f(S,Ra,Rb) • 对于每个连接,每个方向上各三个密钥,分别为加密密钥、完整性保护密钥、IV(CBC模式):gi( K,Ra,Rb )
SSL中 Master Key 生成方式 • SSL 3.0 master_secret = MD5(pre_master_secret‖SHA-1(‘A’‖pre_master_secret|| ClientHello.random ‖ServerHello.random)) ‖ MD5(pre_master_secret‖SHA-1(‘BB’‖pre_master_secret|| ClientHello.random ‖ServerHello.random)) ‖ MD5(pre_master_secret‖SHA-1(‘CCC’‖pre_master_secret|| ClientHello.random ‖ServerHello.random))
TLS 中 Master Key 生成方式 • TLS 1.0 master_secret = PRF(pre_master_secret, “master secret” , ClientHello.random+ ServerHello.random)[0..47] • PRF(secret, label, seed)为伪随机函数 • P_hash(secret, seed) = HMAC_hash(secret, A(1) || seed)|| HMAC_hash(secret, A(2) || seed) ||HMAC_hash(secret, A(3) || seed) || … • A(0) = seed;A(i) = HMAC_hash(secret, A(i-1) ) • PRF(secret, label, seed) = P_MD5(secret, label || seed) XOR P_SHA-1(secret, label || seed)
SSL中其他密钥的生成 • 包括加密密钥、完整性保护密钥、IV(共6个) • 过程: • 首先由master secret计算Key Block; • 再由Key Block计算各个密钥。
SSL中其他密钥的生成(续) • Key Block 计算 key_block = MD5(master_secret || SHA(“A”|| master_secret ||ClientHello.random || ServerHello.random)) ||MD5(master_secret || SHA(“BB”|| master_secret ||ClientHello.random || ServerHello.random)) ||MD5(pre_master_secret || SHA(“CCC”|| pre_master_secret || ClientHello.random || ServerHello.random)) || ….. • 相关参数 • client_write_MAC_secret [CipherSpec.hash_size]:Client完整性保护密钥长度; • server_write_MAC_secret [CipherSpec.hash.size]:Server端完整性保护密钥长度; • client_write_secret [CipherSpec.key_material]:Client加密密钥长度; • server_write_secret [CipherSpec.key_material]:Server端加密密钥长度;
SSL中其他密钥的生成(示例) • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 • 选用密钥块的次序 client_write_MAC_secret = key_block[0,.., 15] server_write_MAC_secret = key_block[16, …, 31] client_write_key = key_block[32, …, 36] server_write_key = key_block[37, …, 41] • 相关密钥生成 final_client_write_key = MD5(client_write_key || ClientHello.random || ServerHello.random) [0. …, 15] final_server_write_key = MD5(server_write_key || ServerHello.random || ClientHello.random) [0, …, 15] client_write_IV = MD5(ClientHello.random || ServerHello.random) [0, …, 7] server_write_IV = MD5(ServerHello.random || ClientHello.random) [0, …, 7]
密钥交换算法 • 在hello消息中,双方交换随机数以及各种算法 • 两类密钥交换算法: • RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器 • Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret(包括固定、暂态、匿名三种) • 再从pre_master_secret计算得到master_secret • master_secret总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法
完整SSL会话握手协议 • 建立安全连接请求,包括协议版本、会话ID、密码构建、压缩方法和初始随机数 • 服务器发送证书、密钥交换证书和证书请求,最后发送hello消息阶段结束的信号 • 如果有证书请求,客户端发送证书。之后客户端发送密钥交换数据,也可以发送证书验证消息 • 更改密码构建和结束握手消息
第一阶段:建立起安全协商 • 客户发送一个client_hello消息,包括以下参数:版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表 • 然后,客户等待服务器的server_hello消息 • 服务器发送server_hello消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个 考虑会话重用
CipherSuite • 指定了密钥交换的方法,SSL支持以下一些方法: • RSA,要求服务器提供一个RSA证书 • 固定DH(Fixed Diffie-Hellman),要求服务器的证书中包含了由CA签名的DH公开参数。客户或者在证书中提供DH公开参数,或者在密钥交换消息中提供此参数 • EDH(Ephemeral Diffie-Hellman),产生临时的密钥,DH公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证(出口限制造成的) • 匿名的DH,不加鉴别。会受到中间人攻击 • 再指定以下信息 • 加密算法和类型(流还是分组密码算法) • HMAC: MD5还是SHA-1 • 是否可出口 • HashSize • Key Material • IV Size(CBC模式下初始向量的大小)
第二阶段:服务器认证和密钥交换 • 服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链 • 除了匿名DH之外的密钥交换方法都需要 • 服务器发送server_key_exchange消息 • 可选的,有些情况下可以不需要(固定DH、使用RSA密钥交换)。 • 匿名DH • 暂态DH • 服务器长期密钥只能用于签名时,签发一个临时的长度较短的密钥 • 消息包含签名,被签名的内容包括两个随机数以及服务器参数 • 服务器发送certificate_request消息(可选) • 非匿名DH,server可以向客户请求一个证书 • 包含证书类型和CAs • 服务器发送server_hello_done, 然后等待应答
第三阶段:客户鉴别和密钥交换 • 客户收到server_done消息后,它根据需要检查服务器提供的证书,并判断server_hello的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器。 • 如果服务器请求证书的话,则客户首先发送一个certificate消息,若客户没有证书,则发送一个no_certificate警告。 然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是RSA,则含加密的48字节的PreMasterSecret)。 • 最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名(计算方式见课本)
第四阶段:结束 • 第四阶段建立起一个安全的连接 • 客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中(目前只包含类型号) • 然后,客户用本次连接协商的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。 • 服务器同样发送change_cipher_spec消息和finished消息。 • 握手过程完成,客户和服务器可以传送应用层数据。
SSL改变密码规格协议和告警协议 • SSL Change Cipher Spec Protocol(密码变化协议) • 改变密码规格(参数) • SSL Alert Protocol(警告协议) • 通知SSL对端有关安全错误警报,警报的级别有警告和致命两种( warning or fatal ),此外还有一种终止(closure)
SSL记录协议(Record Protocol) • 机密性(confidentiality) • using symmetric encryption with a shared secret key defined by Handshake Protocol • IDEA, RC2-40, DES-40, DES, 3DES, RC4-40, RC4-128 • message is compressed before encryption • 报文完整性(message integrity) • using a MAC with shared secret key • similar to HMAC but with different padding
记录数据(Payload) • 支持4种协议消息: application_data、alert、handshake、change_cipher_spec . • Alert协议消息: 报警等级(warning/fatal)+ 具体报警编码 各1字节 • change_cipher_spec协议消息: 类型(1字节),将挂起状态变成当前状态,指示在此之后的所有消息都将使用刚刚商定的密码进行加密。 • handshake协议消息:类型( 1字节 )+长度( 3字节 )+消息,类型共10种
SSL协议的安全性分析 • SSL协议采用的加密和认证算法 • 加密算法与会话密钥:算法有RC4,RC2,IDEA和DES;密钥由消息散列函数MD5、SHA-1产生 • 认证算法:采用X.509证书 • 安全优势 • 监听和中间人攻击(√) • 流量数据分析攻击(x)TLS可以抵抗此类攻击 • 截拼攻击(√) • 重发攻击(√) • 密码回滚攻击CipherSuite Rollback attack (√): SSL3.0中新加的功能
SSL协议可能存在的问题 • 密钥管理问题 • 许多实现,服务器的证书不是基于可信的CA颁发 • 无证书 • 证书替代,客户端用户通常不在意跳出的警告 • 加密强度问题 • 低比特位数的加密算法(出口限制) • 数字签名问题 • 没有数字签名,不能抗抵赖
SSL的应用 • 匿名SSL连接 • 使用SSL的基本模式——仅对服务器验证,用于用户注册等信息的保护 • SSL VPN • 服务器端需要验证证书,客户端可以验证证书或用户名加密码 • 电子商务 • 商家和银行必须相互有证书 • 客户和商家之间的通信可以采用仅认证商户方式,兼顾了安全和易用性 • 商家与银行之间传送的是顾客数据,通信双方必须先互相验证证书
作业 • 习题5.2,5.3,思考题5.3,5.4 • 补充:在可出口的SSLv3中,有流程是将40bits的短密钥、结合两个随机值进行hash运算得到128bits的密钥(page24 of PPT)具有什么优点,破解单个会话需要测试多少密钥?