资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,电子科技大学 计算机科学与工程学院,计算系统与网络安全,Computer System and Network Security,1,第,7,章 协议安全技术(安全协议实例),Conclusions,How to use the SSL in your security architecture,How Does SSL work,?,The Architecture of SSL,What is SSL?,2,第,7,章 协议安全技术(安全协议实例),Conclusions,How to use the SSL in your security architecture,How Does SSL work,?,The Architecture of SSL,What is SSL?,3,What is SSL,SSL:,S,ecure,S,ockets,L,ayer protocol,SSL is a secure protocol,between application layer and TCP layer,which provides confidential communication in un-secure network,4,ARP RARP,TCP,UDP,IP ICMP IGMP,SMTP,HTTP,TELNET,DNS,SNMP,应用层,传输层,网络层,网络接口层,回顾:,TCP/IP,协议栈,5,回顾:,TCP/IP,的安全性问题及其解决方法,ARP RARP,TCP,UDP,IP ICMP IGMP,SMTP,HTTP,TELNET,DNS,SNMP,应用层,传输层层,网络层,网络接口层,IP/IPSec,网络层安全,6,ARP RARP,TCP,UDP,IP ICMP IGMP,SMTP,HTTP,TELNET,DNS,SNMP,应用层,传输层层,网络层,网络接口层,SSl/TLS,SSL/TLS,传输层安全,回顾:,TCP/IP,的安全性问题及其解决方法,7,The Goals of SSL,Encryption,(加密),SSL,被设计用来使用,TCP,提供一个可靠的端到端安全服务,为两个通信实体之间提供,保密性,完整性,验证,(身份鉴别,),密钥交换,Scalability,(可扩展性),新的密钥算法可以容易的加入,Efficiency,(高效性),减少对,CPU,的使用,透明性,对应用层透明,8,The Goals of SSL(Cont.),透明性,DH,RSA,DES,RC4,IDEA,SHA,.,应用程序,.,Telnet,HTTP,FTP,TCP,SPX,.,Internet,Ethernet,可靠传输协议,SSL,协议实现,应用协议,明文数据流,密文数据流,9,History of SSL,Netscape,公司于,1994,开发,SSL v2 released in 1995,SSL v3 also released in 1995 due to bugs in v2,1996,年,IETF,成立工作组,Transport Layer Security(,TLS,)committee,1999,年推出,TLS v1,TLS v1 was based upon SSLv3,2003,年推出,TLS,扩展,2006,年推出,TLS v1.1,10,Cryptographic Feature of SSL,连接是保密的,,对称加密算法,用于数据加密,实体,的身份通过,公钥加密算法,得到验证,连接是可靠的,加密的,消息摘要,用于保证消息的完整性,11,Data Encryption:,RC2-40,RC4-128,DES,DES 40,3DES,IDEA,Fortezza,Message Digest:,MD5,SHA.,Key Exchange.,RSA,Fixed Diffie-Hellman,Ephemeral Diffie-Hellman,Anonymous Diffie-Hellman,Fortezza,Data Compression:,PKZip,WinZip,gzip,.,Cryptographic Feature of SSL,12,第,7,章 协议安全技术(安全协议实例),Conclusions,How to use the SSL in your security architecture,How Does SSL work,?,The Architecture of SSL,What is SSL?,13,SSL,中的通信实体,通信实体,(,entity,)是指,SSL,的参与者,在,SSL v3,中定义了两个通信实体,客户,客户是协议的发起者,服务器,服务器是协议的响应者,SSL Server,(,SSL,服务器),SSL Client,(,SSL,客户,),14,SSL,的协议分层,IP,TCP,SSL Record Protocol,SSL Handshake Protocol,SSL Change Cipher Spec Protocol,SSL Alert Protocol,HTTP Protocol,握手协议:用来实现密钥交换和认证,记录层协议:用来安全传输数据,加密规约修改协议:启用新的密码参数,报警协议:报警和错误,15,一个问题,Question,:为什么在,SSL,中存在两层:记录层和握手层?,16,Key Terms of SSL,在,SSL,中,有几个关键概念;,SSL Session,(,SSL,会话),SSL Connection,(,SSL,连接),SSL Session State,(,SSL,会话状态),SSL Connection State,(,SSL,连接状态),17,SSL,会话,SSL session,(会话),an association between client&server,(是客户和服务器之间的一个关联),created by the Handshake Protocol,(通过握手协议来创建),define a set of cryptographic parameters,(定义了一套加密参数),may be shared by multiple,SSL connections,(可以被多个,SSL,连接共享),18,SSL,连接,SSL connection,(连接),a transient,peer-to-peer,communications link,(是一种通信实体具有对等关系的通信连接),associated with one SSL session,(与一个,SSL Session,关联),连接是瞬时的,用后即消失,19,连接,&,会话,会话是用来协商安全参数的(如加密算法等),连接是用来安全传输应用程序数据的(如加密传送消息),理论上,双方可以存在多个同时会话,但在实践中并未用到这个特性,在任意一对通信双方之间,也许会有多个安全连接,每个连接都只和一个会话相关,一个会话可能包含多个安全连接,会话定义了一组可以被多个连接共用的密码安全参数,对于每个连接,可以利用会话来避免对新的安全参数进行代价昂贵的协商,会话与连接的关系,20,连接,&,会话,会话与连接的关系,Connection,Session,21,SSL Session&Session State,SSL session And Session States,(会话与会话状态),Session States(,会话状态):,标识一个具体的,SSL,会话的信息,客户和服务器必须存储已经建立的会话的及其响应会话状态的信息,会话状态信息供握手协议层使用,特别是恢复一个会话时,22,SSL Session&Session State (Cont.),SSL Connection and Connection States,(连接与连接状态),Connection States(,连接状态),contains all the information in one specific connection,Only when the connection exists,the connection states will be remembered,23,SSL Session&Session State (Cont.),Information of Session States,(内容),Session Identifier(,会话标识符),The X.509 certificates of Peer Certificate Server(Client),(客户或服务器的,X.509,证书,如果不需要验证,则该信息为空),Compression Methods,(压缩算法),Cipher Spec,(握手协议已经协商的一套加密参数),对称加密算法,MAC,算法,加密属性(包括,Hash,长度等),24,SSL Session&Session State (Cont.),Connection States includes,(内容包括):,Server and client randoms:,本次连接的随机数(包括客户和服务器的),Server write MAC secrete(,服务器,MAC,计算密钥),:服务器对要发送的数据进行,hash,运算的,秘密值,,它也是客户接收时进行,Hash,运行的秘密值,Client write MAC secrete,(客户端,MAC,计算密钥),:客户对要发送的数据进行,Hash,运算的秘密值,它也是服务器接收数据时进行,hash,运算的秘密值,25,SSL Session&Session State (Cont.),Server write key,(服务器发送数据的加密密钥),:服务器用来加密数据、客户用来解密数据的对称加密密钥,Client write key,(客户端发送数据的加密密钥),:客户用来加密、服务器用来解密的对称加密密钥,Initialization Vectors(IV),:采用密码反馈模式是的初始化向量,Sequence Vectors,:客户,/,服务器为其在一个连接中发送和接收消息分配的序列号,26,SSL Session&Session State (Cont.),Write Key,(实际就是会话密钥),Client,Server,Client,Server,Key1,(,M1,),Key2,(,M2,),One Connection,27,SSL Session&Session State (Cont.),MAC Secrete,(实际就是,MAC,运算的秘密值),Client,Server,Client,Server,HAC,(,S1,,,M1,),HAC,(,S2,,,M2,),One Connection,28,建立在可靠的传输协议(如,TCP,)基础上,提供连接安全性,保密性:使用,对称加密算法,完整性:使用,HMAC,算法,SSL Record protocol Layer,29,根据当前会话状态,给出压缩算法,,Cipher Spec,给出对称加密算法、,MAC,算法、密钥长度、,Hash,长度、,IV,长度,以及连接状态中给出的,Client,和,Server,的随机数、加密密钥、,MAC,秘密值、,IV,,消息序列号等,,对将要传送的数据实施以下操作,:,压缩,/,解压,加密,/,解密,MAC,计算,/MAC,校验,SSL Record protocol Layer(Cont.),30,用来封装高层的协议,Change Cipher Spec protocol,Alert protocol,Handshake protocol,Application protocol(HTTP,FTP,TELNET,et al),SSL Record protocol Layer(Cont.),31,Change Cipher Spec(Cont.),Question,:在,Change Cipher Spec,中,提到如果发送该消息后,将使用新的加密、压缩和,MAC,算法,请问:它和以前的这些信息是一个什么关系,(,换句话说,握手层协商的加密参数等何时对记录层生效),?,Answer:SSL,使用另外两个状态来管理这种关系,预备状态,当前操作状态,32,Pending State,(预备状态),用来保存握手协议协商的密码信息(如压缩、加密、计算,MAC,的算法以及密钥等),Current State,(当前状态),用来保存记录层正在使用的密码信息(如压缩、加密、计算,MAC,的算法以及密钥等),Change Cipher Spec(Cont.),33,SSL Client,SSL Server,SSL Record Protocol,当前状态,当前状态,SSL Handshake Protocol,SSL Change Cipher Spec Protocol,预备状态,预备状态,SSL Record Protocol,当前状态,当前状态,Change Cipher Spec(Cont.),34,Alert Protocol,:,SSL,警报协议,用于将,SSL,握手或者数据加密等过程有关的告警传输给对方,向对方发出警告或者中止当前连接,根据错误程度,,Alert,消息分为两类:,警告消息,(,warning Msg,)和,致命消息,(,Fatal Msg,),致命消息将导致连接被立即中止,并将与这个连接相关的会话(会话标识符)作废,以免这个会话被继续用来建立新的连接,Alert protocol,35,Alert protocol(Cont.),根据功能,,Alert,消息被分为两类:,Close_Notify,和,Error Alerts,Close_Notify:,通知对方关闭该连接,Alert Error,:通知对方关闭该连接,区别:,前者关闭的连接可以被恢复,后者不能,Alert,消息被加密传输,36,警告消息,(,Warning Msg,),结束通知,无证书,证书出错,不支持的证书,证书撤销,证书过期,未知证书,Alert protocol(Cont.),37,Alert protocol(Cont.),致命消息,(,Fatal Msg,),意外消息,MAC,记录出错,解压失败,握手失败,非法参数,38,警报协议格式,Level,Alert,字段取值,含义,Level,1,警告,2,SSL,即将关闭,Alert,xx,均为严重警告消息,yy,Alert protocol(Cont.),39,应用层协议,加密传输,不透明的内容(大于,1,字节),Application protocol,40,第,7,章 协议安全技术(安全协议实例),Conclusions,How to use the SSL in your security architecture,How Does SSL work,?,The Architecture of SSL,What is SSL?,41,发方,Step 1,分片:从上层接收任意大小的数据块(,Records,),Step 2,压缩:用当前会话状态中给出的压缩算法明文结构,SSLPlaintext,压缩为压缩记录,SSLCompressed,Step 3 MAC,计算:用当前会话状态中指定的,MAC,算法对,SSLCompressed,计算消息摘要,Step 4,机密:用加密算法加密压缩数据和消息摘要,形成密文结构,SSLCiphertext,Step 5,封装发送:将数据封装为可靠传输层协议的数据包,并发送到可靠传输层协议,Working Process of Record layer,42,Working Process of Record layer(Cont.),43,第一步:分片,Working Process of Record layer(Cont.),44,无损压缩,不会增加,1024,字节,以上长度的内容,(,短消息),没有默认压缩算法,第二步:压缩,Working Process of Record layer(Cont.),45,消息摘要计算,第三步:,MAC,计算,Working Process of Record layer(Cont.),46,消息摘要计算,第四步:加密,Working Process of Record layer(Cont.),47,SSL,协议头,消息摘要计算,第五步:封装发送,Working Process of Record layer(Cont.),48,Working Process of Record layer(Cont.),49,Working Process of Record layer(Cont.),50,练习,请给出记录层收方的工作流程,51,Working Process of Record layer(Cont.),52,问题,Question,:,Record protocol layer,中使用的密码及相关信息如何得到?,Answer,:由,handshake protocol,协商并进一步计算得到,。,53,握手协议,握手协议时,SSL,中最复杂的部分,此协议允许客户端和服务器相互认证、协商加密和,MAC,算法,保护数据使用的密钥通过,SSL,记录传递,握手协议在传递应用程序数据之前使用,Handshake protocol,54,握手协议层的功能,客户和服务器之间相互鉴别,协商密钥交换算法,协商加密算法和密钥,协商压缩算法,生成密钥,完成密钥交换,Handshake protocol,功能回顾,55,使用三个协议,SSL Handshake protocol,核心协议,SSL Change Cipher Spec,改变参数时使用,SSL Alert protocol,出现错误时使用,Handshake protocol,使用的协议,56,握手协议建立一个会话或者恢复一个会话,握手协议中每次握手都会生成新的密钥,,MAC,秘密值和初始化向量等。,Client,和,Server,之间要建立一个连接,必须进行握手过程,每次握手都会存在一个会话和一个连接,连接一定是新的,但会话可能是已经存在的。,Handshake protocol,的作用,57,握手协议本质上是一个,密钥交换协议,,但它也包含认证功能,因此可以视为认证和密钥交换协议,握手协议主要由四个过程组成,建立安全能力,服务器认证和密钥交换,客户端认证和密钥交换,完成,Question,:为什么需要服务器密钥交换和客户端密钥交换两个过程?,Answer,:因为,SSL,在同一个连接的两个方向采用不同的密钥,Handshake protocol,的本质,58,Client,Server,ClientHello-,ServerHello,-,Handshake protocol,的第一步,第一步完成:,(,1,)客户告诉服务器自己的要求或能力,(,2,)服务器按照自己的要求或能力选择并回应客户,59,Client,Server,Certificate*,ServerKeyExchange*,CertificateRequest*,Handshake protocol,的第二步,第二步完成(服务器):,(,1,)向客户证明自己的身份,(,2,)完成密钥交换,(,3,)向客户提出自己的认证要求(可选),(,4,)告诉客户自己本阶段结束,第二步完成(客户):,(,1,)向服务器证明自己的身份(可选),(,2,)完成密钥交换,(,3,)向服务器发送自己的,认证校验信息,(可选),(,4,)告诉服务器自己本阶段结束,60,Client,Server,ChangeCipherSpec,Finished -ChangeCipherSpec,ServerHello,-,Handshake protocol,总结,Certificate*,ServerKeyExchange*,CertificateRequest*,ChangeCipherSpec,Finished -ChangeCipherSpec,服务器),The Client Hello message,(a)SSL Version(highest)that is understood by the client.,(,SSL,版本号,),(b)A Random number to compute the secret key,(,随机数,,防重放攻击,记为,ClientHello.random,),(c)Session Identifier,(,会话标识,),0,:新建一个会话和连接,非,0,:在已有会话上建立连接,(d)Data Encryption to identify the encryption methods available to the Client,(,密码组,),包括两个部分,密钥交换算法(,Key Exchange,),密码规范(,cihper Spec,),(e)Data Compression method for message exchange,(,压缩方法,),64,Server Hello,(a)SSL Version(highest)that is understood by the client.,(,SSL,版本号,),(b)A Random number to compute the secret key,(,随机数,,防重放攻击,记为,ServerHello.random,),(c)Session Identifier,(,会话标识,),(d)Data Encryption to identify the encryption methods,(,密码组,),(e)Data Compression method for message compression,(,压缩方法,),SSL Client,SSL Server,Port 443,第一阶段:建立安全能力(服务器,-,客户),The Server Hello message,65,问题,两个遗留问题:,(,1,)消息如何产生,(,2,)哪些密码参数?,66,问题,客户端根据自己的实际情况构建,client Hello message,Question:How does the server compute the server hello message and send to client?,Answer:,a.SSL Version?,The highest the client available,b.A Random number to compute the secret key?,Server generate it and it is independent of clients number,c.Session Identifier,(会话标识),?,If the clients identifier is not 0 then the same as clients,else,generate a new identifier,d.Data Encryption to identify the encryption methods?,The one chose from clients encryption methods list.,e.Data Compression method for message compression?,The one chose from clients compression methods list,.,问题,1,:消息如何产生,67,密钥交换算法,:,1 RSA,密钥交换协议 客户端用服务器的,RSA,公钥加密的密钥(此时,客户端必须拥有服务器的公钥证书),2 DH,密钥交换协议,3 Fortezza,密钥交换协议,问题,2,:密码参数,压缩算法,密码规范,(CipherSpec),(,1,)固定,DH,:包含认证中心签发的,Diffie-Hellman,公钥参数的服务器证书(公钥证书包含客户端,Diffie-Hellman,公钥参数,该参数由客户端在证书数中提供,或者在密钥交换消息中提供),(,3,)匿名,DH,:使用基本的,Diffie-Hellman,(,2,)瞬时,Diffie-Hellman:,此技术用来创建一次性密钥。在这种情况下,,Diffie-Hellman,公钥在交换时使用服务器的,RSA,或者,DSS,私钥签名,客户端使用服务器的相应公钥验证签名,密码算法,MAC,算法密码类型:流密码或者分组密码是否可出口(只在美国以外使用),MAC,长度密钥材料,IV,大小,68,问题(续),Question,:,Why does SSL use three kind of DH algorithms?,Answer:Provides different security abilities,瞬时,DH,安全最高,匿名,DH,安全性最差,容易受到中间人攻击,69,Client Hello,SSL Client,SSL Server,Server Hello,握手协议工作过程第一步,70,握手协议工作过程第二步,如果需要对客户端进行认证,服务器开始发送自己的证书消息等。该过程一般包含四条消息:,证书消息(,Certificate,),服务器密钥交换消息(,Server_Key_Exchange),客户端证书请求消息(,Certificate_Request),服务器结束消息(,Server_Hello_Done,),71,第二阶段:服务器认证和密钥交换(服务器,-,客户),Certificate,The server Identifier information,A Digital Certificate of the sever information encrypted with the CAs Private Key,(也可能是一组证书),.,This contains the servers Public Key,(,包含服务器公钥,),说明:,服务器证书消息是服务器向客户端传送自己的证书,使得客户端知道服务器的公钥以及其他信息。,SSL Client,SSL Server,Port 443,The Server Certificate message,72,Server_key_Exchange,The Certificate type to indicate the type of public key,The Certificate Authority is a list of distinguished names of Certificate Authorities acceptable to the Server,说明:,(,1,)服务器密钥交换消息用来向客户端发送服务器自己的密钥信息,(,2,),The Server Key exchange message,不是必须的,如果使用了固定,Diffie-Hellman,或者,RSA,密钥交换,则不需要。,反之,如果使用匿名,Diffie-Hellman,、瞬时,Diffie-Hellman,、,Fortzza,或者服务器在使用,RSA,时仅用了,RSA,签名密钥。,RSA,:在第一阶段包含了服务器的公钥,固定,DH,:由于在固定,DH,中,服务器在第一阶段发送的证书消息中包含了服务器自己的公钥,SSL Client,SSL Server,Port 443,第二阶段:服务器认证和密钥交换(服务器,-,客户),Server Key exchange message,73,Certificate_Request,The Certificate type to indicate the type of public key(,证书类型,),(,1,),RSA,(,2,),DSS,(,3,),Diffie-Hellman,.,The Certificate Authority is a list of distinguished names of Certificate Authorities acceptable to the Server(,认证中心,CA,列表),服务器可以接受的认证中心列表,说明:,如果服务器不使用匿名,Diffie-Hellman,,则客户端证书请求消息是必须的。它的目的是要求客户端向自己发送证书等消息,以便进行认证。,SSL Client,SSL Server,Port 443,第二阶段:服务器认证和密钥交换(服务器,-,客户),The Client Certificate Request message,74,Server _Hello_Done,表明服务器的,hello,和相关信息结束,在此消息之后,服务器将等待客户端的应答,SSL Client,SSL Server,Port 443,第二阶段:服务器认证和密钥交换(服务器,-,客户),Server Done,message,75,SSL Client,SSL Server,Server Certificate,Client Certificate Request,Server Done Message,Server_key_Exchange,第二阶段:服务器认证和密钥交换(服务器,-,客户),总结,76,第三阶段:客户机验证和密钥交换,在接收到服务器完成消息之后,如果请求了证书,客户端需要验证服务器是否提供了合法的证书,检查,server_hello,参数是否可以接受,如果所有条件满足,则客户端向服务器发回一个或者多个消息:,1,)客户端证书消息(,Certificate),:如果服务器请求了证书,必须有该消息,2,)客户端密钥交换消息,(Client_Key_Exchange),:必须发送,3,)客户端证书校验消息(,Ceritificate_Verify),:可以发送,(,便于服务器验证自己的证书),77,Certificate,The Client Identifier information,A Digital Certificate of the client information,说明:,如果服务器请求了证书,但是客户端没有合适的证书,则发送”无证书警报“消息,SSL Client,SSL Server,Port 443,第三阶段:客户机验证和密钥交换(客户,-,服务器),Client Certificate,message,78,Client Key Exchange,The encrypted session key which will serve as a pre-master secret key encrypted with the servers public key.,说明:,如果是,RSA,,该消息包含客户端生成的,48,字节的,次密钥,(,pre-master secret key,),并使用服务器证书中的公钥或者服务器密钥交换消息中的,临时,RSA,密钥加密,,它用于生成,主密钥,(,master secret key,),如果是,Diffie-Hellman,,该消息包含客户端的,Diffie-Hellman,公钥参数,如果是,Fortezza,,则包含客户端的,Fortezza,参数,SSL Client,SSL Server,Port 443,第三阶段:客户机验证和密钥交换(客户,-,服务器),Client Key Exchange message,79,Certificate_Verify,说明:,Hash,签名很复杂,它对签名的所有消息即密钥信息等进行,Hash,运算,并用自己的私钥加密,从而即是有人盗用了客户端证书,也无法发送该证书验证消息,The Certificate Verify Message is composed of the,Hash value,of the clients certificate.,SSL Client,SSL Server,Port 443,第三阶段:客户机验证和密钥交换(客户,-,服务器),Certificate Verify Message,80,SSL Client,SSL Server,Certificate,Client Key Exchange,Certificate_Verify,第三阶段:客户机验证和密钥交换(客户,-,服务器),总结,81,第四阶段:完成,此阶段完成安全连接的设置,主要包含以下消息:,客户:,1,)客户端发送的修改密码规范消息(,Change_Cipher_Spec),2,)客户端发送的完成消息(,Finished),服务器,3,)服务器发送的修改密码规范消息(,Change_Cipher_Spec),4,)服务器发送的完成消息(,Finished),82,Change_Cipher_Spec,说明:,该消息不是握手协议的一部分,是使用修改密码规范协议来完成的,.,它通知服务器启用新的密钥和算法。,在此之后,客户端使用新的算法、密钥和密码发送新的完成消息,SSL Client,SSL Server,Port 443,The,Clients Change cipher spec,第四阶段:完成(客户,-,服务器),83,The Client Finish message is composed of,The client authenticates the server with a message encrypted with the newly generated shared keys.,(,客户端用新建立的会话密钥来认证服务器,),This validates to the server that a secure connection has been created,(,确保连接的合法性,),.,Client Finish,SSL Client,SSL Server,Port 443,第四阶段:完成(客户,-,服务器),The Client Finish message,84,Change_Cipher_Spec,说明:,该消息不是握手协议的一部分,是使用修改密码规范协议来完成的。它通知客户端启用新的密钥和算法。,在此之后,服务器端使用新的算法、密钥和密码发送新的完成消息,SSL Client,SSL Server,Port 443,第四阶段:完成(客户,-,服务器),The,Servers Change cipher spec,85,The Server Finish message is composed of,The server authenticates the client with a message encrypted with the newly generated shared keys,(服务器用新的会话密钥来认证客户),.,This validates to the client that a secure connection has been created(,确保连接的合法性),说明,:,the Server and client can now begin to use their six shared keys for bulk data encryption utilizing the SSL Record Layer protocol,(从此刻开始,客户端和服务器的记录层协议将启用新的密钥和算法进
展开阅读全文