《网络安全Web安全.ppt》由会员分享,可在线阅读,更多相关《网络安全Web安全.ppt(35页珍藏版)》请在三一办公上搜索。
1、网络安全Web安全,学习目标,掌握SSL的基本体系结构掌握SET的基本体系结构,第一部分 SSL/TLS协议,SSL(Secure Socket Layer)是一种在两个端实体(End Entity)之间提供安全通道的协议。它具有保护传输数据以及识别通信实体的功能安全通道是透明的IETF 制定的TLS(Transport Layer Security)版本是对Nescape公司的SSL和Microsoft公司的PCT(Private Communication Technology)两个协议的综合和兼容。这里重点讨论SSL协议,SSL/TLS协议设计目标,SSL V2 设计目标为满足WEB安全
2、通信而设计提供客户和服务器之间传输数据的保密性服务器认证(客户端认证可选)SSL V3设计目标修正SSL V2中存在的多处安全问题设计一种安全磋商多种加密算法的机制,SSL提供了什么?,SSL提供了通道级别的安全:连接的两端知道所传输的数据是保密的,而且没有被篡改几乎总是要对服务器进行认证可选的客户端认证针对异常情况的安全通知错误警示关闭连接所有这些依赖于某些对系统的假定假定已经正确产生了密钥数据并且该密钥已被安全地保管,SSL与TCP/IP,SSL连接非常类似于“保密的”的TCP连接位于TCP之上,应用层之下几乎只能在TCP上运行,而不能在UDP或IP上运行,因而它依赖于可靠的传输协议微软的
3、STLP和无线应用论坛的WTLS均为意图在数据报传输层(如UDP)上正确工作的变种。,SSL变种谱系树,SSL V1(1994)未发布,SSL V2(1994)第一版,SSL V3(2019),TLS(20192019),PCT(2019),STLP(2019),WTLS(2019),用于WEB的SSL,保护使用HTTP的WEB通信新的URL https:/在浏览器中的表现 NETSCAPE:工具条上会显示一把钥匙IE:右下角显示 一把锁几乎所有的商业WEB服务器和浏览器都实现了内置的SSL协议,通过配置即可使用,在SSL上构建一切,除了HTTP 和NNTP(SNEWS)外,还可以用于SMTP
4、、Telnet、FTP等,也可用于保护专有协议。协议端口标准化协议实现OPENSSL(C语言实现)pureTLS(java 实现)ApacheSSL(针对Apache服务器的实现)Mod_ssl,一次真实的SSL连接,客户,服务器,握手:ClientHello,握手:ServerHello,握手:Certificate,握手:ServerHelloDone,握手:ClientKeyExchange,ChangeCipherSpec,握手:Finished,ChangeCipherSpec,握手:Finished,应用数据交换,警示:warning,close_notify,两个主要的协议,SS
5、L握手协议客户和服务器之间相互鉴别协商加密算法和密钥它提供连接安全性,有三个特点身份鉴别,至少对一方实现鉴别,也可以是双向鉴别协商得到的共享密钥是安全的,中间人不能够知道协商过程是可靠的SSL记录协议建立在可靠的传输协议(如TCP)之上它提供连接安全性,有两个特点保密性,使用了对称加密算法完整性,使用HMAC算法用来封装高层的协议,SSL的两个重要概念,SSL连接(connection)一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。SSL的连接是点对点的关系。连接是暂时的,每一个连接和一个会话关联。SSL会话(session)一个SSL会话是在客户与服务器之间的一个关联。会话由
6、Handshake Protocol创建。会话定义了一组可供多个连接共享的密码安全参数。会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。,SSL基础针对RSA服务器认证的SSL,SSL灵活性:单向认证 和 双向认证 认证加密 和 认证加密算法:RSA DSS DH FORTEZZA 连接分为两个节段:握手阶段 完成对服务器认证并建立加密密钥数据传输阶段 加密数据传输,握手协议,握手阶段的目的客户和服务器协商保护数据的算法(及其具体参数)确立在协商好的算法上使用的加密密钥可选择对客户端进行认证 client server-所支持的加密算法,随机数 选中的加密算法,随机数,服务器证书
7、加密后的pre_master_secret 计算相关演化密钥 计算相关演化密钥 握手消息的MAC值 握手消息的MAC值注:1.pre_master_secret 可以由KDF(key derivation function)演化出master_secret,最后再通过master_secret 演化出系列加密密钥。2.最后两步防止握手本身遭受篡改(如低强度密码算法替换等).3.客户端和服务器端随机数的传输,防止重放攻击。,握手消息,client server-握手:ClientHello 握手:ServerHello Certificate ServerHelloDone ClientKeyE
8、xchange(ChangeCipherSpec)Finished(ChangeCipherSpec)Finished,完整SSL会话握手协议,交换Hello消息,对于算法、交换随机值等协商一致交换必要的密码参数,以便双方得到统一的premaster secret交换证书和相应的密码信息,以便进行身份认证产生master secret把安全参数提供给SSL记录层检验双方是否已经获得同样的安全参数,第一阶段:建立起安全协商,客户发送一个client_hello消息,包括以下参数:版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的
9、压缩方法列表.然后,客户等待服务器的server_hello消息服务器发送server_hello消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法和压缩方法中确定一套本次连接使用的确定方法.,CipherSuite,指定了密钥交换的方法,SSL支持以下一些方法:RSA,要求服务器提供一个RSA证书DH(Diffie-Hellman),要求服务器的证书中包含了由CA签名的DH公开参数。客户或者在证书中提供DH公开参数,或者在密钥交换消息中提供此参数EDH(Ephemeral Diffie-Hellman),产生临时的密钥,DH公开参数
10、由发送者的私钥进行签名,接收者用对应的公钥进行验证 匿名的DH,不加鉴别。会受到中间人攻击然后,指定以下信息加密算法和类型(流还是分组密码算法)HMAC、MD5还是SHA-1是否可出口HashSize Key Material IV Size,第二阶段:服务器鉴别和密钥交换,服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链除了匿名DH之外的密钥交换方法都需要服务器发送server_key_exchange消息可选的,有些情况下可以不需要。只有当certificate消息没有包含必需的数据的时候才发送此消息消息包含签名,被签名的内容包括两个随机数以及服务器参数服务
11、器发送certificate_request消息(可选)非匿名server可以向客户请求一个证书包含证书类型和CAs服务器发送server_hello_done,然后等待应答,第三阶段:客户鉴别和密钥交换,客户收到server_done消息后,它根据需要检查服务器提供的证书,并判断server_hello的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器。如果服务器请求证书的话,则客户首先发送一个certificate消息,若客户没有证书,则发送一个no_certificate警告。然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是R
12、SA,则含加密的PreMasterSecret)。最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名,第四阶段:结束,第四阶段建立起一个安全的连接客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中然后,客户用本次连接协商的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。服务器同样发送change_cipher_spec消息
13、和finished消息。握手过程完成,客户和服务器可以交换应用层数据。,密钥交换算法,SSL记录协议需要:CipherSuite,master secret,the client&server random values在hello消息中,交换随机数以及各种算法两类密钥交换算法:RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret对于各种密钥交换算法,从pre_master_secret计算得到Master_secret,然后从内存中删除Master_secre
14、t总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法,密钥导出,最终需要的密钥导出,SSL 记录协议,实际的数据传输是使用SSL记录协议实现的数据流分割成一系列片段并加以传输,每个片断单独保护和传输为实现完整性保护,对片段进行MAC保护为实现机密性保护,对片段进行加密保护传输的是安全记录,记录头(Head),ContentType;8位,上层协议类型Major version;Minnor version 16位,主次版本Compressed Length:16位 加密后数据的长度,不超过214+2048字节(SSL 几乎不用压缩,虽然支持)EncryptedDa
15、ta fragment;密文数据,记录负荷(Payload),支持4种协议消息:application_data、alert、handshake、change_cipher_spec.Alert协议消息:报警等级(warning/fatal)+具体报警编码 2字节change_cipher_spec协议消息:1字节,将挂起状态变成当前状态,指示在此之后的所有消息都将使用刚刚商定的密码进行加密。handshake协议消息:类型(1字节)长度(3字节)消息,类型共10种,报警(Alert)协议,用来一方向另一方报告例外情况,两个级别:warning/fatal如果是Fatal级别的报警,则应终止连
16、接.报警种类:unexpected_message bad_record_mac decryption_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
17、export_restriction protocol_version insufficient_security internal_error user_cancelled no_renegotiation,会话恢复,整个握手协议开销巨大,如果集成会话恢复机制,则可以在客户和服务器通信过一次的情况下,可以跳过握手阶段而直接进行数据传输.通过使用上一次握手中确立的pre_master_secret,则可以避免许多计算开销。恢复允许根据共同的master_secret,来产生新的密钥。通过客户使用ClientHello中的Session_id,申请会话恢复,服务器通过使用ServerHello中
18、相同的Session_id,来同意会话恢复,接下来就会跳过其余步骤而使用保存的master_secret来产生新的所有的加密密钥(由于新的随机数不同,而使得新产生的加密密钥与以前不同)。,客户端认证,实现服务器对客户端的认证服务器通过向客户端发送CertificateRequest消息,客户端通过Certificate和CertificateVerify消息予以应答CertificateVerify消息是一个使用与其传输的证书关联的私钥签名的消息。,临时RSA,因受出口限制,为配合客户端,服务器会产生一个临时的低强度密钥,并用高强度密钥签名,客户端将验证临时密钥上的服务器签名,并使用它来打包p
19、re_master_Secret.服务器向客户端发送消息 ServerKeyExchange,再握手,是在当前受保护的连接上进行的一次新的SSL握手,因而传输过程中的握手消息是经过加密的一旦新的握手完成,将使用新的会话状态来保护数据客户端可以简单的通过发送一条ClientHello消息来初始化一次新的握手服务器端可以通过HelloRequest消息来初始化一次新的握手,SSL的安全性,保护master_secret保护服务器的私钥使用良好的随机数证书链检查算法选择(强度),SSL实现,OpenSSL,最新0.9.8,实现了SSLv2,SSLv3,TLSv1.0Openssl a command line tool.ssl(3)the OpenSSL SSL/TLS library.crypto(3)the OpenSSL Crypto library.URL:openssl.orgSSLeaywww2.psy.uq.edu.au/ftp/Crypto/Internet号码分配当局已经为具备SSL功能的应用分配了固定的端口号例如带SSL的HTTP(https)被分配以端口号443带SSL的SMTP(ssmtp)被分配以端口号465带SSL的NNTP(snntp)被分配以端口号563,