《【大学课件】网络安全 Web安全》由会员分享,可在线阅读,更多相关《【大学课件】网络安全 Web安全(36页珍藏版)》请在人人文库网上搜索。
1、网络安全Web安全http:/ 掌握SSL的基本体系结构 掌握SET的基本体系结构http:/ SSL/TLS协议 SSL (Secure Socket Layer)是一种在两个端实体(End Entity)之间提供安全通道的协议。 它具有保护传输数据以及识别通信实体的功能 安全通道是透明的 IETF 制定的TLS(Transport Layer Security)版本是对Nescape公司的SSL和Microsoft公司的PCT(Private Communication Technology)两个协议的综合和兼容。 这里重点讨论SSL协议http:/ SSL V2 设计目标 为满足WEB安
2、全通信而设计 提供客户和服务器之间传输数据的保密性 服务器认证(客户端认证可选) SSL V3设计目标 修正SSL V2中存在的多处安全问题 设计一种安全磋商多种加密算法的机制http:/ SSL提供了通道级别的安全: 连接的两端知道所传输的数据是保密的,而且没有被篡改 几乎总是要对服务器进行认证 可选的客户端认证 针对异常情况的安全通知 错误警示 关闭连接 所有这些依赖于某些对系统的假定 假定已经正确产生了密钥数据并且 该密钥已被安全地保管http:/ SSL连接非常类似于“保密的”的TCP连接 位于TCP之上,应用层之下 几乎只能在TCP上运行,而不能在UDP或IP上运行,因而它依赖于可靠
3、的传输协议 微软的STLP和无线应用论坛的WTLS均为意图在数据报传输层(如UDP)上正确工作的变种。http:/ V1(1994)未发布SSL V2(1994)第一版SSL V3(1995)TLS(19971999)PCT(1995)STLP(1996)WTLS(1998)http:/ 保护使用HTTP的WEB通信 新的URL https:/ 在浏览器中的表现 NETSCAPE:工具条上会显示一把钥匙 IE: 右下角显示 一把锁 几乎所有的商业WEB服务器和浏览器都实现了内置的SSL协议,通过配置即可使用http:/ 除了HTTP 和NNTP(SNEWS)外,还可以用于SMTP、Telnet
4、、FTP等,也可用于保护专有协议。 协议端口标准化 协议实现 OPENSSL (C语言实现) pureTLS (java 实现) ApacheSSL (针对Apache服务器的实现) Mod_ssl http:/ SSL握手协议客户和服务器之间相互鉴别协商加密算法和密钥它提供连接安全性,有三个特点 身份鉴别,至少对一方实现鉴别,也可以是双向鉴别 协商得到的共享密钥是安全的,中间人不能够知道 协商过程是可靠的 SSL记录协议建立在可靠的传输协议(如TCP)之上它提供连接安全性,有两个特点 保密性,使用了对称加密算法 完整性,使用HMAC算法用来封装高层的协议http:/ SSL连接(connec
5、tion)一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。 SSL的连接是点对点的关系。连接是暂时的,每一个连接和一个会话关联。 SSL会话(session)一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的密码安全参数。会话用以避免为每一个连接提供新的安全参数所需会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。昂贵的协商代价。http:/ SSL灵活性: 单向认证 和 双向认证 认证加密 和 认证 加密算法: RSA DSS DH FORTEZZA 连接分为两个节段: 握手阶段 完成对服务器
6、认证并建立加密密钥 数据传输阶段 加密数据传输http:/ client server-(1) 所支持的加密算法,随机数(2) 选中的加密算法,随机数,服务器证书(3) 加密后的pre_master_secret(4) 计算相关演化密钥 计算相关演化密钥(5) 握手消息的MAC值(6) 握手消息的MAC值注: 1. pre_master_secret 可以由KDF(key derivation function)演化出master_secret ,最后再通过master_secret 演化出系列加密密钥。 2. 最后两步防止握手本身遭受篡改(如低强度密码算法替换等). 3. 客户端和服务器端随
7、机数的传输,防止重放攻击。http:/ client server-握手: ClientHello 握手: ServerHello Certificate ServerHelloDone ClientKeyExchange (ChangeCipherSpec) Finished (ChangeCipherSpec) Finishedhttp:/ secret交换证书和相应的密码信息,以便进行身份认证产生master secret把安全参数提供给SSL记录层检验双方是否已经获得同样的安全参数http:/ 客户发送一个client_hello消息,包括以下参数:版本、随机数(32位时间戳+28字节
8、随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表.然后,客户等待服务器的server_hello消息 服务器发送server_hello消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法和压缩方法中确定一套本次连接使用的确定方法.http:/ 指定了密钥交换的方法,SSL支持以下一些方法: RSA,要求服务器提供一个RSA证书 DH(Diffie-Hellman),要求服务器的证书中包含了由CA签名的DH公开参数。客户或者在证书中提供DH公开参数,或者在密钥交换消息中提供此参数 EDH(E
9、phemeral Diffie-Hellman),产生临时的密钥,DH公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证 匿名的DH,不加鉴别。会受到中间人攻击 然后,指定以下信息加密算法和类型(流还是分组密码算法) HMAC、MD5还是SHA-1是否可出口 HashSize Key Material IV Sizehttp:/ 然后等待应答http:/ 然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是RSA,则含加密的PreMasterSecret)。最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对
10、从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名http:/ master secret, the client & server random values在hello消息中,交换随机数以及各种算法两类密钥交换算法: RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器 Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret对于各种密钥交换算法,从pre_master_secret计算得到Master_secret,然后从内存中删除Master_secret总是48字节长
11、,而pre_master_secret长度不定,取决于密钥交换算法http:/ 记录协议实际的数据传输是使用SSL记录协议实现的数据流分割成一系列片段并加以传输,每个片断单独保护和传输为实现完整性保护,对片段进行MAC保护为实现机密性保护,对片段进行加密保护传输的是安全记录 http:/ 8位,上层协议类型Major version; Minnor version 16位,主次版本Compressed Length:16位 加密后数据的长度,不超过214+2048字节(SSL 几乎不用压缩,虽然支持)EncryptedData fragment; 密文数据http:/ application_
12、data、alert、handshake、change_cipher_spec .Alert协议消息: 报警等级(warning/fatal)+ 具体报警编码 2字节change_cipher_spec协议消息: 1字节,将挂起状态变成当前状态,指示在此之后的所有消息都将使用刚刚商定的密码进行加密。handshake协议消息:类型( 1字节 )长度( 3字节 )消息,类型共10种http:/ 用来一方向另一方报告例外情况,两个级别:warning/fatal 如果是Fatal级别的报警,则应终止连接. 报警种类: unexpected_message bad_record_mac decryp
13、tion_failed record_overflow decompression_failure handshake_failure no_certificate bad_certificate unsupported_certificate certificate_revoked certificate_expired certificate_unknown illegal_parameter unknown_ca access_denied decode_error decrypt_error export_restriction protocol_version insufficien
14、t_security internal_error user_cancelled no_renegotiationhttp:/ 整个握手协议开销巨大,如果集成会话恢复机制,则可以在客户和服务器通信过一次的情况下,可以跳过握手阶段而直接进行数据传输. 通过使用上一次握手中确立的pre_master_secret,则可以避免许多计算开销。 恢复允许根据共同的master_secret,来产生新的密钥。 通过客户使用ClientHello中的Session_id,申请会话恢复,服务器通过使用ServerHello中相同的Session_id,来同意会话恢复,接下来就会跳过其余步骤而使用保存的mast
15、er_secret来产生新的所有的加密密钥(由于新的随机数不同,而使得新产生的加密密钥与以前不同)。http:/ 实现服务器对客户端的认证 服务器通过向客户端发送CertificateRequest消息,客户端通过Certificate和CertificateVerify消息予以应答 CertificateVerify消息是一个使用与其传输的证书关联的私钥签名的消息。http:/ 因受出口限制,为配合客户端,服务器会产生一个临时的低强度密钥,并用高强度密钥签名,客户端将验证临时密钥上的服务器签名,并使用它来打包pre_master_Secret. 服务器向客户端发送消息 ServerKeyEx
16、changehttp:/ 是在当前受保护的连接上进行的一次新的SSL握手,因而传输过程中的握手消息是经过加密的 一旦新的握手完成,将使用新的会话状态来保护数据 客户端可以简单的通过发送一条ClientHello消息来初始化一次新的握手 服务器端可以通过HelloRequest消息来初始化一次新的握手http:/ 保护master_secret 保护服务器的私钥 使用良好的随机数 证书链检查 算法选择(强度)http:/ OpenSSL, 最新0.9.8, 实现了SSLv2,SSLv3, TLSv1.0 Openssl a command line tool. ssl(3) the OpenSSL SSL
原文链接:https://www.renrendoc.com/paper/162380023.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17226