1、1计算机系统安全计算机系统安全第十三章第十三章 TLSTLS(SSLSSL)协议协议 2TCP/IP协议栈中的安全一、SSL协议的概述 3SSL协议的发展 一、SSL协议的概述 1 SSL(Secure Socket Layer)是Netscape公司设计的主要用于web的安全传输协议。2 IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),TLS1.0与SSL3.0差别很小。3 在WAP的环境下,由于手机处理和存储能力有限,wap论坛(www.wapforum.org)在TLS的基础上做了简化,提出了
2、WTLS协议(Wireless TLS),以适应无线的特殊环境。 4SSL协议的位置 一、SSL协议的概述 SSL SSL协议要求建立在可靠的传输层协议协议要求建立在可靠的传输层协议( (如:如:TCP)TCP)之上之上。SSL协议的优势在于它是与应用层协议独立无关的。高层的应用层协议(例如:HTTP,FTP,TELNET)能透明的建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。 5SSL协议的位置一、SSL协议的概述 SSL协议建立在传送层和应用层之间,由记录协议和握手协
3、议组成,其中记录协议在握手协议下端。SSL在TCP之上建立了一个加密通道。 IPHTTP/ S- HTTPFTPSMTPTCPSSL or TLS6主要功能 一、SSL协议的概述 1 1、SSLSSL服务器认证:服务器认证:允许用户确认服务器身份。支持SSL协议的客户机软件能使用公钥密码标准技术检查服务器证书、公用ID是否有效和是否由在客户信任的CA列表内的认证机构发放。 2 2、SSLSSL客户机认证:客户机认证:允许服务器确认用户身份。使用应用于服务器认证同样的技术,支持SSL协议的服务器软件能检查客户证书、公用ID是否有效和是否由在服务器信任的认证机构列表内的CA发放。 7主要功能一、S
4、SL协议的概述 3、机密性:、机密性:一个加密的SSL连接要求所有在客户机与服务器之间发送的信息由发送方软件加密和由接受方软件解密,这样提供了高度机密性。4、完整性:、完整性:所有通过加密SSL连接发送的数据都被一种检测篡改的机制所保护,这种机制自动地决定传输中的数据是否已经被更改。 8连接安全一、SSL协议的概述 SSL协议提供的连接安全有三个基本属性: 连接是保密的。对称加密法用于数据加密(如用DES和RC4等)。 对方的身份能够使用非对称或公钥密码进行认证(如用RSA和DSS等)。 连接是可靠的。消息传输包括使用消息认证码(MAC)的消息完整性检查,安全哈希函数(如SHA和MD5等)用于
5、消息认证码计算。 9SSL协议的组成 一、SSL协议的概述SSL协议包括两个子协议:SSL记录协议和SSL握手协议。SSL Handshake ProtocolSSL Change Cipher Spec ProtocolSSL Alert ProtocolHTTP, FTPSSL Record ProtocolTCPIP10SSL协议的组成一、SSL协议的概述记录协议定义了要传输数据的格式,它位于一些可靠的的传输协议TCP之上,用于各种更高层协议的封装。记录协议主要完成分组和组合,压缩和解压缩,以及消息认证和加密等功能。所有传输数据包括握手消息和应用数据都被封装在记录中。握手协议允许服务器与
6、客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。11SSL握手协议一、SSL协议的概述在初次建立SSL连接时使用SSL记录协议交换一系列消息。为如下操作做准备: . 客户机对服务器的认证。 . 客户机与服务器都支持的加密算法或密码。 . 服务器对客户的认证(可选)。 .使用公钥加密技术生成共享密钥。 .建立加密SSL连接。 12四个目标 二、目标 加密安全性:在双方之间建立安全的连接。 协同工作能力:独立程序员能够使用SSL3.0开发应用,然后能够在不知道他人代码的情况下成功地交换加密参数。 可扩展性:SSL致力于提供一种框架,在必要时新的公钥和大批加密方法可以整合进来。相对效
7、率:考虑到加密操作特别是公钥操作的速度问题,SSL协议使用可选的会话缓冲方案以降低连接数量,减少网络操作行为。13支持的密码 三、SSL协议支持的密码 带SHA-1消息认证、支持168位加密的3-DES,速度不如RC4快。大约有3.7 * 1050个密码。 带MD5消息认证、支持128位加密的RC4,RC4和RC2都有128位的密码,加密强度仅次于3-DES。RC4和RC2大约有3.4 * 1038 个密码可用。RC4密码是SSL支持的密码中最快的。 带SHA-1消息认证、支持56位加密的DES,大约有7.2 * 1016 个可用的密码(在SSL2.0中该密码使用的是MD5 消息认证)。14支
8、持的密码 三、SSL协议支持的密码 美国允许以下加密技术出口: 带MD5消息认证、支持40位加密的RC4,大约有个1.1 * 1012可用的密码。 带MD5消息认证、支持40位加密的RC2,大约有个1.1 * 1012可用的密码。 注:对RC2和RC4支持40位加密,其中密钥仍是128位的,但只有40位有加密意义。 不加密,只带MD5消息认证。(SSL3.0支持而SSL2.0不支持)。 15主要工作流程 四、SSL协议原理及工作流程 网络连接建立;选择与该连接相关的加密和压缩方式;双方的身份识别;本次传输密钥的确定;加密的数据传输;网络连接的关闭。16主要工作流程四、SSL协议原理及工作流程
9、应用数据的传输过程为 :)应用程序把应用数据提交给本地的SSL;)发送端的SSL根据需要 : a)使用指定的压缩算法 ,压缩应用数据; b)使用散列算法对压缩后的数据计算散列值; c)把散列值和压缩数据一起用加密算法加密;3) 密文通过网络传给对方;17主要工作流程四、SSL协议原理及工作流程 4)接收方的SSL用相同的加密算法对密文解密 ,得到明文;用相同的散列算法对明文中的应用数据散列;计算得到的散列值与明文中的散列值比较;5)如果一致 ,则明文有效 ,接收方的SSL把明文解压后得到应用数据上交给应用层。否则就丢弃数据 ,并向发方发出告警信息。严重的错误有可能引起再次的协商或连接中断。18
10、记录协议工作流程 四、SSL协议原理及工作流程 19记录协议工作流程四、SSL协议原理及工作流程 Application dataFragment CompressAdd MACEncryptionAppend SSLrecord header20四、SSL协议原理及工作流程 SSL 记录格式记录格式内容类型主版本号次版本号压缩长度被压缩(可选)的明文被压缩(可选)的明文MAC (0, 16 or 20 字节)加密数据21v内容类型:长8位,表示封装数据的上一层协议,如:握手协议、报警协议、更改密码说明协议或应用数据v主版本号:8位,3.0版为3v次版本号:8位,3.0版为0v压缩长度:16位
11、,表示压缩后的数据字节数SSL 记录格式记录格式22四、SSL协议原理及工作流程 SSL 记录协议的负载记录协议的负载23SSL记录数据的格式四、SSL协议原理及工作流程 SSL的记录包含三个部分:MAC数据、实际数据和粘贴数据。 MAC数据用于数据完整性检查。MAC数据HASH密钥,实际数据,粘贴数据,序号。当会话的客户端发送数据时,密钥是客户的写密钥(服务器用读密钥来验证MAC数据);而当会话的客户端接收数据时,密钥是客户的读密钥(服务器用写密钥来产生MAC数据)。序号是一个可以被发送和接收双方递增的计数器。计数器有32位,计数值循环使用,每发送一个记录计数值递增一次,序号的初始值为0。
12、24SSL握手协议四、SSL协议原理及工作流程 SSL握手协议包含两个阶段:第一个阶段:建立私密性通信信道;第二个阶段:客户认证。 25SSL握手协议工作流程 四、SSL协议原理及工作流程 第一阶段:通信初始化。当双方都收到对方HELLO消息时,就有足够信息确定是否需要新密钥。若不需要新密钥,则进入握手第二阶段。否则,客户方根据服务器方的SERVERHELLO消息(包含服务器持有证书、加密规约和连接标识)产生新密钥,并发出 CLIENT MASTER KEY消息。最终服务器方向客户方发出SERVERVERIFY消息。只有拥有合适的公钥的服务器才能解开密钥。 26SSL握手协议工作流程四、SSL
13、协议原理及工作流程 每一通信方向上都需要一对密钥,所以一个连接需要四个密钥,分别为客户方的读密钥、写密钥、服务器方的读密钥、写密钥。第二阶段:对客户进行认证,此时服务器已经被认证了。服务器向客户发出认证请求消息:REQUESTCERTIFICATE。当客户收到服务器方的认证请求消息,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的认证,认证成功返回SERVERFINISH消息,否则返回错误消息。握手过程到此全部结束。 27SSL握手协议工作流程四、SSL协议原理及工作流程 wClient HellowServer Hello, Certificate + Cert chainw
14、Client Key exchangewServer Change CipherwClient Change CipherwClient Server Data28SSL握手协议工作流程四、SSL协议原理及工作流程 CLIENTSERVERClientHelloServerHelloCertificate*CertificateRequest*ServerKeyExchange*Certificate*ClientKeyExchangeCertificateVerify*change cipher specFinishedchange cipher specFinishedApplicatio
15、n DataApplication Data29SSL握手协议工作流程四、SSL协议原理及工作流程 CLIENTSERVERClientHelloServerHello change cipher specFinishedchange cipher specFinishedApplication DataApplication Data30四、SSL协议原理及工作流程 消息类型 参数hello_requestnullclient_hello/ version,random,session id,server_hello cipher suite, compression methodcerti
16、ficate chain of X.509v3 certificatesserver_key_exchangeparameters,signaturecertificate_request type,authoritiesserver_done nullcertificate_verifysignatureclient_key_exchangeparameters,signaturefinishedhash value31认证服务器的身份四、SSL协议原理及工作流程 1从服务器端传送的证书中获得相关信息2当天的时间是否在证书的合法期限内;3签发证书的机关是否客户端信任的;4签发证书的公钥是否符
17、合签发者的数字签名5证书中的服务器域名是否符合服务器自己真正的域名6服务器被验证成功,客户继续进行握手过程。32认证客户端的身份四、SSL协议原理及工作流程 1 客户端传送的证书中获得相关信息;2 用户的公钥是否符合用户的数字签名;3 当天的时间是否在证书的合法期限内;4 签发证书的机关是否服务器信任的;5 签发证书的机关是否服务器端信任的;6用户的证书是否在服务器的LDAP用户信息中7该用户是否有权限访问请求的服务器资源 33工作流程 4阶段四、SSL协议原理及工作流程 34工作流程 四、SSL协议原理及工作流程 1. CS:发送客户的SSL版本号、密码设置、随机数以及服务器使用SSL协议通
18、信所需的其它信息。 2. SC:发送服务器的SSL版本号、密码设置、随机数以及客户机使用SSL协议通信所需的其它信息。服务器还要发送自己的证书,若需要对客户认证,则要求客户发送证书。 3. C对S认证。若S不能被认证,用户收到警告,通知加密和认证连接不能建立。若服务器能被成功地认证,客户机继续下一步。35工作流程 四、SSL协议原理及工作流程 4. 使用所有在握手中生成的数据,客户机为会话创建pre_master_secret,用服务器公钥(从服务器证书中得到)加密它,向服务器发送加密的pre_master_secret。5. 若服务器已经要求客户认证,客户机会向服务器随加密的pre_mast
19、er_secret一起发送签名的数据和客户自己的证书。 6. S试图去认证客户。若认证成功,S使用私钥加密pre_master_secret,然后执行一系列步骤生成master secret。否则会话终止。36工作流程 四、SSL协议原理及工作流程7.客户机与服务器使用master secret生成会话密钥。该密钥是对称密钥,用于加密和解密在SSL会话期间交换的信息,检验信息完整性即检测通过SSL连接发送和接收期间数据中的任何改变。 8. CS:发送消息通知以后从客户机来的消息将用会话密钥加密。客户机然后发送一条独立的(加密的)消息表明握手的客户机部分已经完成。 37工作流程 四、SSL协议原
20、理及工作流程9. SC:发送消息通知以后从服务器来的消息将用会话密钥加密。服务器然后发送一条独立的(加密的)消息表明握手的服务器部分已经完成。 10. SSL握手完成,SSL会话开始。客户机与服务器使用会话加密和解密他们彼此发送的数据和验证数据完整性。 38工作流程 四、SSL协议原理及工作流程在继续会话之前,Netscape服务器能被配置成检查客户证书是否出现在LDAP目录里的用户条目中。这个配置选项提供了一条途径确认客户证书尚未被撤消。重要的是要注意到客户机与服务器证书与用公钥/密钥对中的一个加密一些数据而用其它密钥解密数据有关。 在服务器认证的情况下,客户机用服务器公用密钥加密pre_m
21、aster_secret。只有相应的密钥能够正确地解密pre_master_secret,客户才确信:与公钥相关联的标识符事实上是服务器与客户机连接使用的。否则,服务器不能解密pre_master_secret、不能生成会话要求的对称密钥,会话将被终止。 39工作流程 四、SSL协议原理及工作流程在客户认证的情况下,客户机用客户的密钥加密一些随机数据,创建一个数字签名。只有在相应的密钥被使用时,客户证书中的公钥能够正确验证数字签名。否则,服务器不能验证数字签名,会话被终止。 40密钥协商的形象化比喻四、SSL协议原理及工作流程 假设SSL客户端C与SSL服务器端S通信,加密后的消息放在方括号里
22、,以区别于明文消息。双方的处理动作的说明用圆括号()括起。C:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。S:我们用DESRSASHA这对组合好了。 这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给C)。41密钥协商的形象化比喻四、SSL协议原理及工作流程 C:(查看证书上S的名字,并通过手头已有的CA的证书验证S的证书的真实性,如果有误, 发出警告并断开连接,这一步保证了B的公钥的真实性) (产生一份秘密消息称为per_master_secret ,以后用于对初始化向量和hmac进行加密,然后用S的公钥加密成为ClientKeyExchange) 42密钥协商的形象化比喻我生成了一份秘密消息,并用你的公钥加密传给你了(把ClientKeyExchange发给S) 注意:下面我要用加密办法给你发消息了! (将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥) 我说完了 PPT教学课件谢 谢 观 看Thank You For Watching