计算机系统与网络安全:第7章 协议安全技术(安全协议实例)_第1页
计算机系统与网络安全:第7章 协议安全技术(安全协议实例)_第2页
计算机系统与网络安全:第7章 协议安全技术(安全协议实例)_第3页
计算机系统与网络安全:第7章 协议安全技术(安全协议实例)_第4页
计算机系统与网络安全:第7章 协议安全技术(安全协议实例)_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022/11/2第7章协议安全技术(安全协议实例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/11/2第7章协议安全技术(安全协议实例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/11/2WhatisSSLSSL:SecureSocketsLayerprotocolSSLisasecureprotocolbetweenapplicationlayerandTCPlayer

whichprovidesconfidentialcommunicationinun-securenetwork2022/11/2ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP应用层传输层网络层网络接口层回顾:TCP/IP协议栈2022/11/2回顾:TCP/IP的安全性问题及其解决方法ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP应用层传输层层网络层网络接口层IP/IPSec网络层安全2022/11/2ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP应用层传输层层网络层网络接口层SSl/TLSSSL/TLS传输层安全回顾:TCP/IP的安全性问题及其解决方法2022/11/2TheGoalsofSSLEncryption(加密)SSL被设计用来使用TCP提供一个可靠的端到端安全服务为两个通信实体之间提供保密性完整性验证(身份鉴别)密钥交换Scalability(可扩展性)新的密钥算法可以容易的加入Efficiency(高效性)减少对CPU的使用透明性对应用层透明2022/11/2TheGoalsofSSL(Cont.)透明性DHRSADESRC4IDEASHA应用程序TelnetHTTPFTPTCPSPXInternetEthernet可靠传输协议SSL协议实现应用协议明文数据流密文数据流2022/11/2HistoryofSSLNetscape

公司于1994开发SSLv2releasedin1995SSLv3alsoreleasedin1995duetobugsinv2

1996年IETF成立工作组TransportLayerSecurity(TLS)committee

1999年推出TLSv1TLSv1wasbaseduponSSLv3

2003年推出TLS扩展2006年推出TLSv1.12022/11/2CryptographicFeatureofSSL连接是保密的,对称加密算法用于数据加密实体的身份通过公钥加密算法得到验证连接是可靠的,加密的消息摘要用于保证消息的完整性2022/11/2DataEncryption:RC2-40RC4-128DESDES403DESIDEAFortezzaMessageDigest:MD5SHA.KeyExchange.RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-HellmanFortezzaDataCompression:PKZipWinZipgzip

CryptographicFeatureofSSL2022/11/2第7章协议安全技术(安全协议实例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/11/2SSL中的通信实体通信实体(entity)是指SSL的参与者在SSLv3中定义了两个通信实体客户客户是协议的发起者服务器服务器是协议的响应者SSLServer(SSL服务器)SSLClient(SSL客户)2022/11/2SSL的协议分层IPTCPSSLRecordProtocolSSLHandshakeProtocolSSLChangeCipherSpecProtocolSSLAlertProtocolHTTPProtocol握手协议:用来实现密钥交换和认证记录层协议:用来安全传输数据加密规约修改协议:启用新的密码参数报警协议:报警和错误2022/11/2一个问题Question:为什么在SSL中存在两层:记录层和握手层?2022/11/2KeyTermsofSSL在SSL中,有几个关键概念;SSLSession(SSL会话)SSLConnection(SSL连接)SSLSessionState(SSL会话状态)SSLConnectionState(SSL连接状态)2022/11/2SSL会话SSLsession(会话)anassociationbetweenclient&server(是客户和服务器之间的一个关联)createdbytheHandshakeProtocol(通过握手协议来创建)defineasetofcryptographicparameters(定义了一套加密参数)maybesharedbymultipleSSLconnections(可以被多个SSL连接共享)2022/11/2SSL连接SSLconnection(连接)atransient,peer-to-peer,communicationslink(是一种通信实体具有对等关系的通信连接)associatedwithoneSSLsession(与一个SSLSession关联)连接是瞬时的,用后即消失2022/11/2另外一个问题AnyquestionaboutSSLsessionandconnection?Question:Sessionandconnectionhasanyrelationship?2022/11/2连接&会话会话是用来协商安全参数的(如加密算法等)连接是用来安全传输应用程序数据的(如加密传送消息)理论上,双方可以存在多个同时会话,但在实践中并未用到这个特性在任意一对通信双方之间,也许会有多个安全连接每个连接都只和一个会话相关一个会话可能包含多个安全连接会话定义了一组可以被多个连接共用的密码安全参数,对于每个连接,可以利用会话来避免对新的安全参数进行代价昂贵的协商会话与连接的关系2022/11/2连接&会话会话与连接的关系ConnectionSession2022/11/2会话与连接的思考Anyquestionaboutsessionandconnection?Question:Whataboutsessionandconnection?2022/11/2SSLSession&SessionStateSSLsessionAndSessionStates(会话与会话状态)SessionStates(会话状态):标识一个具体的SSL会话的信息客户和服务器必须存储已经建立的会话的及其响应会话状态的信息会话状态信息供握手协议层使用特别是恢复一个会话时2022/11/2SSLSession&SessionState(Cont.)SSLConnectionandConnectionStates(连接与连接状态)ConnectionStates(连接状态)containsalltheinformationinonespecificconnectionOnlywhentheconnectionexists,theconnectionstateswillberemembered2022/11/2SSLSession&SessionState(Cont.)InformationofSessionStates(内容)SessionIdentifier(会话标识符)TheX.509certificatesofPeerCertificateServer(Client)(客户或服务器的X.509证书,如果不需要验证,则该信息为空)CompressionMethods(压缩算法)CipherSpec(握手协议已经协商的一套加密参数)对称加密算法MAC算法加密属性(包括Hash长度等)2022/11/2SSLSession&SessionState(Cont.)ConnectionStatesincludes(内容包括):Serverandclientrandoms:本次连接的随机数(包括客户和服务器的)ServerwriteMACsecrete(服务器MAC计算密钥):服务器对要发送的数据进行hash运算的秘密值,它也是客户接收时进行Hash运行的秘密值ClientwriteMACsecrete(客户端MAC计算密钥):客户对要发送的数据进行Hash运算的秘密值,它也是服务器接收数据时进行hash运算的秘密值2022/11/2SSLSession&SessionState(Cont.)Serverwritekey(服务器发送数据的加密密钥):服务器用来加密数据、客户用来解密数据的对称加密密钥Clientwritekey(客户端发送数据的加密密钥)

:客户用来加密、服务器用来解密的对称加密密钥InitializationVectors(IV):采用密码反馈模式是的初始化向量SequenceVectors:客户/服务器为其在一个连接中发送和接收消息分配的序列号2022/11/2SSLSession&SessionState(Cont.)Question:whyusestwowritekeysandtwoMACsecretes2022/11/2SSLSession&SessionState(Cont.)WriteKey(实际就是会话密钥)ClientServerClientServerKey1(M1)Key2(M2)OneConnection2022/11/2SSLSession&SessionState(Cont.)MACSecrete(实际就是MAC运算的秘密值)ClientServerClientServerHAC(S1,M1)HAC(S2,M2)OneConnection2022/11/2SSLSession&SessionState(Cont.)Question:连接和会话在SSL中是如何建立和维护的?Answer:为了回答这个问题,需要知道whatisrecordlayerprotocolandwhatishandshakeprotocol。2022/11/2建立在可靠的传输协议(如TCP)基础上提供连接安全性

保密性:使用对称加密算法完整性:使用HMAC算法SSLRecordprotocolLayer2022/11/2根据当前会话状态,给出压缩算法,CipherSpec给出对称加密算法、MAC算法、密钥长度、Hash长度、IV长度,以及连接状态中给出的Client和Server的随机数、加密密钥、MAC秘密值、IV,消息序列号等,对将要传送的数据实施以下操作:压缩/解压加密/解密MAC计算/MAC校验SSLRecordprotocolLayer(Cont.)2022/11/2用来封装高层的协议ChangeCipherSpecprotocolAlertprotocolHandshakeprotocolApplicationprotocol(HTTP,FTP,TELNET,etal)SSLRecordprotocolLayer(Cont.)2022/11/2SSLRecordprotocolLayer(Cont.)Question:Recordprotocollayer中使用的密码及相关信息从那里得到?2022/11/2ChangeCipherSpec:SSL修改密码规范协议标志加密策略的改变客户和服务器都发送该消息,通知接收方继该消息之后发送的消息,将采用握手层刚协商好的算法、密钥等进行压缩、MAC计算等该消息有一个值为一位的单字节构成,它是明文传送ChangeCipherSpec(Cont.)2022/11/2ChangeCipherSpec(Cont.)Question:在ChangeCipherSpec中,提到如果发送该消息后,将使用新的加密、压缩和MAC算法,请问:它和以前的这些信息是一个什么关系(换句话说,握手层协商的加密参数等何时对记录层生效)?Answer:SSL使用另外两个状态来管理这种关系预备状态当前操作状态2022/11/2PendingState(预备状态)用来保存握手协议协商的密码信息(如压缩、加密、计算MAC的算法以及密钥等)CurrentState(当前状态)用来保存记录层正在使用的密码信息(如压缩、加密、计算MAC的算法以及密钥等)ChangeCipherSpec(Cont.)2022/11/2SSLClientSSLServerSSLRecordProtocol当前状态当前状态SSLHandshakeProtocolSSLChangeCipherSpecProtocol预备状态预备状态SSLRecordProtocol当前状态当前状态ChangeCipherSpec(Cont.)2022/11/2AlertProtocol:SSL警报协议用于将SSL握手或者数据加密等过程有关的告警传输给对方,向对方发出警告或者中止当前连接根据错误程度,Alert消息分为两类:警告消息(warningMsg)和致命消息(FatalMsg)致命消息将导致连接被立即中止,并将与这个连接相关的会话(会话标识符)作废,以免这个会话被继续用来建立新的连接Alertprotocol2022/11/2Alertprotocol(Cont.)根据功能,Alert消息被分为两类:Close_Notify和ErrorAlertsClose_Notify:通知对方关闭该连接AlertError:通知对方关闭该连接区别:前者关闭的连接可以被恢复后者不能Alert消息被加密传输2022/11/2警告消息(WarningMsg)结束通知无证书证书出错不支持的证书证书撤销证书过期未知证书Alertprotocol(Cont.)2022/11/2Alertprotocol(Cont.)致命消息(FatalMsg)意外消息MAC记录出错解压失败握手失败非法参数2022/11/2警报协议格式LevelAlert字段取值含义Level1警告2SSL即将关闭Alertxx均为严重警告消息yyAlertprotocol(Cont.)2022/11/2应用层协议加密传输不透明的内容(大于1字节)Applicationprotocol2022/11/2第7章协议安全技术(安全协议实例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/11/2发方Step1分片:从上层接收任意大小的数据块(Records)Step2压缩:用当前会话状态中给出的压缩算法明文结构SSLPlaintext压缩为压缩记录SSLCompressedStep3MAC计算:用当前会话状态中指定的MAC算法对SSLCompressed计算消息摘要Step4机密:用加密算法加密压缩数据和消息摘要,形成密文结构SSLCiphertextStep5封装发送:将数据封装为可靠传输层协议的数据包,并发送到可靠传输层协议WorkingProcessofRecordlayer2022/11/2WorkingProcessofRecordlayer(Cont.)2022/11/2第一步:分片WorkingProcessofRecordlayer(Cont.)2022/11/2无损压缩不会增加1024字节以上长度的内容(短消息)没有默认压缩算法第二步:压缩WorkingProcessofRecordlayer(Cont.)2022/11/2消息摘要计算第三步:MAC计算WorkingProcessofRecordlayer(Cont.)2022/11/2消息摘要计算第四步:加密WorkingProcessofRecordlayer(Cont.)2022/11/2SSL协议头消息摘要计算第五步:封装发送WorkingProcessofRecordlayer(Cont.)2022/11/2WorkingProcessofRecordlayer(Cont.)2022/11/2WorkingProcessofRecordlayer(Cont.)2022/11/2WorkingProcessofRecordlayer(Cont.)2022/11/2练习请给出记录层收方的工作流程2022/11/2WorkingProcessofRecordlayer(Cont.)2022/11/2问题Question:Recordprotocollayer中使用的密码及相关信息如何得到?Answer:由handshakeprotocol协商并进一步计算得到。2022/11/2握手协议握手协议时SSL中最复杂的部分此协议允许客户端和服务器相互认证、协商加密和MAC算法,保护数据使用的密钥通过SSL记录传递握手协议在传递应用程序数据之前使用Handshakeprotocol2022/11/2握手协议层的功能客户和服务器之间相互鉴别协商密钥交换算法协商加密算法和密钥协商压缩算法生成密钥完成密钥交换Handshakeprotocol功能回顾2022/11/2使用三个协议SSLHandshakeprotocol核心协议SSLChangeCipherSpec改变参数时使用SSLAlertprotocol出现错误时使用Handshakeprotocol使用的协议2022/11/2握手协议建立一个会话或者恢复一个会话握手协议中每次握手都会生成新的密钥,MAC秘密值和初始化向量等。Client和Server之间要建立一个连接,必须进行握手过程,每次握手都会存在一个会话和一个连接,连接一定是新的,但会话可能是已经存在的。Handshakeprotocol的作用2022/11/2握手协议本质上是一个密钥交换协议,但它也包含认证功能,因此可以视为认证和密钥交换协议握手协议主要由四个过程组成建立安全能力服务器认证和密钥交换客户端认证和密钥交换完成Question:为什么需要服务器密钥交换和客户端密钥交换两个过程?Answer:因为SSL在同一个连接的两个方向采用不同的密钥Handshakeprotocol的本质2022/11/2

Client

Server

ClientHello > ServerHello <

Handshakeprotocol的第一步第一步完成:(1)客户告诉服务器自己的要求或能力(2)服务器按照自己的要求或能力选择并回应客户2022/11/2

Client

Server

Certificate* ServerKeyExchange* CertificateRequest* < ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished >Handshakeprotocol的第二步第二步完成(服务器):(1)向客户证明自己的身份(2)完成密钥交换(3)向客户提出自己的认证要求(可选)(4)告诉客户自己本阶段结束第二步完成(客户):(1)向服务器证明自己的身份(可选)(2)完成密钥交换(3)向服务器发送自己的认证校验信息(可选)(4)告诉服务器自己本阶段结束2022/11/2

Client

Server

[ChangeCipherSpec]Finished > [ChangeCipherSpec] < FinishedHandshakeprotocol的第三步第三步完成(服务器):(1)向客户通告启用新的密码参数(2)告诉客户自己本阶段结束第三步完成(客户):(1)向服务器通告启用新的密码参数(2)告诉服务器自己本阶段结束2022/11/2ApplicationData <> ApplicationData

Client

Server

Handshakeprotocol的第四步第四步完成(服务器):(1)利用启用的密码参数加密发送数据第四步完成(客户):(1)利用启用的密码参数加密发送数据2022/11/2

Client

Server

ClientHello > ServerHello <

Handshakeprotocol总结

Certificate* ServerKeyExchange* CertificateRequest* < ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished >[ChangeCipherSpec]Finished > [ChangeCipherSpec] < FinishedApplicationData <> ApplicationData2022/11/2ClientHelloSSLClientSSLServerPort443第一阶段:建立安全能力(客户->服务器)TheClientHellomessage(a)SSLVersion(highest)thatisunderstoodbytheclient.(SSL版本号)(b)ARandomnumbertocomputethesecretkey(随机数,防重放攻击,记为ClientHello.random)(c)SessionIdentifier(会话标识)

0:新建一个会话和连接 非0:在已有会话上建立连接(d)DataEncryptiontoidentifytheencryptionmethodsavailabletotheClient(密码组),包括两个部分 密钥交换算法(KeyExchange) 密码规范(cihperSpec)(e)DataCompressionmethodformessageexchange(压缩方法)2022/11/2ServerHello(a)SSLVersion(highest)thatisunderstoodbytheclient.(SSL版本号)(b)ARandomnumbertocomputethesecretkey(随机数,防重放攻击,记为ServerHello.random)(c)SessionIdentifier(会话标识)(d)DataEncryptiontoidentifytheencryptionmethods(密码组)(e)DataCompressionmethodformessagecompression(压缩方法)SSLClientSSLServerPort443第一阶段:建立安全能力(服务器->客户)TheServerHellomessage2022/11/2问题两个遗留问题:(1)消息如何产生(2)哪些密码参数?2022/11/2问题客户端根据自己的实际情况构建clientHellomessageQuestion:Howdoestheservercomputetheserverhellomessageandsendtoclient?Answer:

a.SSLVersion?

Thehighesttheclientavailableb.ARandomnumbertocomputethesecretkey?

Servergenerateitanditisindependentofclient’snumberc.SessionIdentifier(会话标识)?

Iftheclient’sidentifierisnot0thenthesameasclient’s,else generateanewidentifierd.DataEncryptiontoidentifytheencryptionmethods?

Theonechosefromclient’sencryptionmethodslist.e.DataCompressionmethodformessagecompression?

Theonechosefromclient’scompressionmethodslist.问题1:消息如何产生2022/11/2密钥交换算法:问题(续)问题2:密码参数1RSA密钥交换协议客户端用服务器的RSA公钥加密的密钥(此时,客户端必须拥有服务器的公钥证书)2DH密钥交换协议3Fortezza密钥交换协议为Fortezza模式定义的技术密码算法MAC算法密码类型:流密码或者分组密码是否可出口(只在美国以外使用)MAC长度密钥材料IV大小压缩算法密码规范(CipherSpec)(1)固定DH:包含认证中心签发的Diffie-Hellman公钥参数的服务器证书(公钥证书包含客户端Diffie-Hellman公钥参数,该参数由客户端在证书数中提供,或者在密钥交换消息中提供)(2)瞬时Diffie-Hellman:此技术用来创建一次性密钥。在这种情况下,Diffie-Hellman公钥在交换时使用服务器的RSA或者DSS私钥签名,客户端使用服务器的相应公钥验证签名(3)匿名DH:使用基本的Diffie-Hellman2022/11/2问题(续)Question:WhydoesSSLusethreekindofDHalgorithms?Answer:Providesdifferentsecurityabilities瞬时DH安全最高匿名DH安全性最差,容易受到中间人攻击2022/11/2ClientHelloSSLClientSSLServerServerHello握手协议工作过程第一步2022/11/2握手协议工作过程第二步如果需要对客户端进行认证,服务器开始发送自己的证书消息等。该过程一般包含四条消息:证书消息(Certificate)服务器密钥交换消息(Server_Key_Exchange)客户端证书请求消息(Certificate_Request)服务器结束消息(Server_Hello_Done)2022/11/2第二阶段:服务器认证和密钥交换(服务器->客户)CertificateTheserverIdentifierinformationADigitalCertificateoftheseverinformationencryptedwiththeCAsPrivateKey(也可能是一组证书).Thiscontainstheserver‘sPublicKey

(包含服务器公钥)说明:服务器证书消息是服务器向客户端传送自己的证书,使得客户端知道服务器的公钥以及其他信息。SSLClientSSLServerPort443TheServerCertificatemessage2022/11/2Server_key_ExchangeTheCertificatetypetoindicatethetypeofpublickeyTheCertificateAuthorityisalistofdistinguishednamesofCertificateAuthoritiesacceptabletotheServer说明: (1)服务器密钥交换消息用来向客户端发送服务器自己的密钥信息 (2)TheServerKeyexchangemessage不是必须的 如果使用了固定Diffie-Hellman或者RSA密钥交换,则不需要。 反之,如果使用匿名Diffie-Hellman、瞬时Diffie-Hellman、Fortzza 或者服务器在使用RSA时仅用了RSA签名密钥。RSA:在第一阶段包含了服务器的公钥固定DH:由于在固定DH中,服务器在第一阶段发送的证书消息中包含了服务器自己的公钥SSLClientSSLServerPort443第二阶段:服务器认证和密钥交换(服务器->客户)ServerKeyexchangemessage2022/11/2Certificate_RequestTheCertificatetypetoindicatethetypeofpublickey(证书类型)(1)RSA(2)DSS(3)Diffie-HellmanTheCertificateAuthorityisalistofdistinguishednamesofCertificateAuthoritiesacceptabletotheServer(认证中心CA列表)服务器可以接受的认证中心列表说明:如果服务器不使用匿名Diffie-Hellman,则客户端证书请求消息是必须的。它的目的是要求客户端向自己发送证书等消息,以便进行认证。SSLClientSSLServerPort443第二阶段:服务器认证和密钥交换(服务器->客户)TheClientCertificateRequestmessage2022/11/2Server_Hello_Done表明服务器的hello和相关信息结束在此消息之后,服务器将等待客户端的应答SSLClientSSLServerPort443第二阶段:服务器认证和密钥交换(服务器->客户)ServerDonemessage2022/11/2SSLClientSSLServerServerCertificateClientCertificateRequestServerDoneMessageServer_key_Exchange第二阶段:服务器认证和密钥交换(服务器->客户)总结2022/11/2第三阶段:客户机验证和密钥交换在接收到服务器完成消息之后如果请求了证书,客户端需要验证服务器是否提供了合法的证书检查server_hello参数是否可以接受如果所有条件满足,则客户端向服务器发回一个或者多个消息:1)客户端证书消息(Certificate):如果服务器请求了证书,必须有该消息2)客户端密钥交换消息(Client_Key_Exchange):必须发送3)客户端证书校验消息(Ceritificate_Verify):可以发送(便于服务器验证自己的证书)2022/11/2CertificateTheClientIdentifierinformationADigitalCertificateoftheclientinformation说明:如果服务器请求了证书,但是客户端没有合适的证书,则发送”无证书警报“消息SSLClientSSLServerPort443第三阶段:客户机验证和密钥交换(客户->服务器)ClientCertificatemessage2022/11/2ClientKeyExchangeTheencryptedsessionkeywhichwillserveasapre-mastersecretkeyencryptedwiththeserver’spublickey.说明: 如果是RSA,该消息包含客户端生成的48字节的次密钥(pre-mastersecretkey),并使用服务器证书中的公钥或者服务器密钥交换消息中的临时RSA密钥加密,它用于生成主密钥(mastersecretkey) 如果是Diffie-Hellman,该消息包含客户端的Diffie-Hellman公钥参数 如果是Fortezza,则包含客户端的Fortezza参数SSLClientSSLServerPort443第三阶段:客户机验证和密钥交换(客户->服务器)ClientKeyExchangemessage2022/11/2Certificate_Verify说明:

Hash签名很复杂,它对签名的所有消息即密钥信息等进行Hash运算,并用自己的私钥加密,从而即是有人盗用了客户端证书,也无法发送该证书验证消息TheCertificateVerifyMessageiscomposedoftheHashvalueoftheclient’scertificate.SSLClientSSLServerPort443第三阶段:客户机验证和密钥交换(客户->服务器)CertificateVerifyMessage2022/11/2SSLClientSSLServerCertificateClientKeyExchangeCertificate_Verify第三阶段:客户机验证和密钥交换(客户->服务器)总结2022/11/2第四阶段:完成此阶段完成安全连接的设置,主要包含以下消息:客户:1)客户端发送的修改密码规范消息(Change_Cipher_Spec)2)客户端发送的完成消息(Finished)服务器3)服务器发送的修改密码规范消息(Change_Cipher_Spec)4)服务器发送的完成消息(Finished)2022/11/2Change_Cipher_Spec说明:该消息不是握手协议的一部分,是使用修改密码规范协议来完成的.它通知服务器启用新的密钥和算法。在此之后,客户端使用新的算法、密钥和密码发送新的完成消息SSLClientSSLServerPort443TheClient’sChangecipherspec第四阶段:完成(客户->服务器)2022/11/2TheClientFinishmessageiscomposedofTheclientauthenticatestheserverwithamessageencryptedwiththenewlygeneratedsharedkeys.(客户端用新建立的会话密钥来认证服务器)Thisvalidatestotheserverthatasecureconnectionhasbeencreated(确保连接的合法性).ClientFinishSSLClientSSLServerPort443第四阶段:完成(客户->服务器)TheClientFinishmessage2022/11/2Change_Cipher_Spec说明:该消息不是握手协议的一部分,是使用修改密码规范协议来完成的。它通知客户端启用新的密钥和算法。在此之后,服务器端使用新的算法、密钥和密码发送新的完成消息SSLClientSSLServerPort443第四阶段:完成(客户->服务器)TheServer’sChangecipherspec2022/11/2TheServerFinishmessageiscomposedofTheserverauthenticatestheclientwithamessageencryptedwiththenewlygeneratedsharedkeys(服务器用新的会话密钥来认证客户).Thisvalidatestotheclientthatasecureconnectionhasbeencreated(确保连接的合法性)说明:theServerandclientcannowbegintousetheirsixsharedkeysforbulkdataencryptionutilizingtheSSLRecordLayerprotocol(从此刻开始,客户端和服务器的记录层协议将启用新的密钥和算法进行数据加密)ServerFinish第四阶段:完成(客户->服务器)SSLClientSSLServerPort443ServerFinishmessage2022/11/2SSLClientSSLServerChange_Cipher_SpecClientFinishChange_Cipher_SpecServerFinish第四阶段:完成(客户->服务器)总结2022/11/2问题Question:WhydoesSSLneedthefinishoperation?Answer:从预备状态向当前状态改变2022/11/2第四阶段:完成(客户->服务器)SSLRecordProtocol当前状态当前状态SSLHandshakeProtocolSSLChangeCipherSpecProtocol预备状态预备状态SSLRecordProtocol当前状态当前状态SSLClientSSLServerPort4432022/11/2SSL握手协议报文-总结2022/11/2SSL握手协议报文-总结2022/11/2SSL握手协议报文-总结在握手协议中,服务器证书请求和客户端证书请求都是可选的,因此SSL的握手过程实际蕴含三种验证方式:客户端和服务器均被认证只验证服务器客户端和服务器均不被认证(即匿名模式)2022/11/2SSL握手协议报文-总结2022/11/2问题Question:在handshake协议中,只交换了一个秘密(称之为次秘密),请问,SSL是如何得到通信中需要的加密密钥(即工作密钥)、MAC计算密钥和密码算法需要的IV值的?Answer:回答这个问题需要知道SSL的密钥计算规则2022/11/2SSLClientSSLServerC>SS>CC>SS>CEncryptionMACIV第二&三阶段交换结果:六对密钥总结2022/11/2次秘密(pre_master_secret)主秘密(mastersecret)ClientwriteMACsecretClientwritesecretClientwriteIVServerwriteMACsecretServerwritesecretServerwriteIV密码参数的生成2022/11/2主秘密的创建共享主秘密(MasterSecret)由客户机和服务器共享,是依据通过安全密钥交换后得到的次秘密(pre_master_secret)来生成的一次性48字节值(384)次密钥pre_master_secret交换方法主要有两种:

RSA:由客户端生成48字节的次密钥,并用服务器的RSA公钥加密后发送到服务器,服务器用其密钥解密,得到次密钥

Diffie-Hellman:客户端和服务器同时生成Diffie-Hellman公钥,密钥交换后双方执行Diffie-Hellman计算,创建共享次密钥MasterSecret分两个步骤生成:

Exchangepre_master_secret(交换次密钥)

Computethemaster_secret(双方计算主密钥)2022/11/2主秘密的创建(续)master_secret=MD5(pre_master_secret+SHA('A'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('BB'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('CCC'+pre_master_secret+ClientHello.random+ServerHello.random));

ForAsymmetriccryptographiccomputations(非对称密码算法计算)Theasymmetricalgorithmsareusedinthehandshakeprotocoltoauthenticatepartiesandtogeneratesharedkeysandsecrets.Thepre_master_secretshouldbedeletedfrommemoryoncethemaster_secrethasbeencomputed(计算后需从内存中删除)2022/11/2主秘密的创建(续)对于RSAWhenRSAisusedforserverauthenticationandkeyexchange

A48-bytepre_master_secretisgeneratedbytheclientEncryptedundertheserver'spublickey,andsenttotheserverTheserverusesitsprivatekeytodecryptthepre_master_secretBothpartiesthenconvertthepre_master_secretintothemaster_secret,asspecifiedabove.Thepre_master_secretshouldbedeletedfrommemoryoncethemaster_secrethasbeencomputed(计算后需从内存中删除)master_secret=MD5(pre_master_secret+SHA('A'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('BB'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('CCC'+pre_master_secret+ClientHello.random+ServerHello.random));2022/11/2主秘密的创建(续)对于Diffie-HellmanAconventionalDiffie-HellmancomputationisperformedThenegotiatedkey(K)isusedasthepre_master_secretandisconvertedintothemaster_secret,asspecifiedabove.master_secret=MD5(pre_master_secret+SHA('A'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('BB'+pre_master_secret+ClientHello.random+ServerHello.random))+MD5(pre_master_secret+SHA('CCC'+pre_master_secret+ClientHello.random+ServerHello.random));2022/11/2其他密码参数的创建SymmetriccryptographiccalculationsandtheCipherSpec(SSL中的密码规约参数)ThetechniqueusedtoencryptandverifytheintegrityofSSLrecordsisspecifiedbythecurrentlyactiveCipherSpec(密码规约).AtypicalexamplewouldbetoencryptdatausingDESandgenerateauthenticationcodesusingMD5.TheencryptionandMACalgorithmsaresettoSSL_NULL_WITH_NULL_NULLatthebeginningoftheSSLHandshakeProtocol,indicatingthatnomessageauthenticationorencryptionisperformed(SSL协议开始是并不进行加密或完整性验证).ThehandshakeprotocolisusedtonegotiateamoresecureCipherSpecandtogeneratecryptographickeys(握手协议用来协商密码参数,并生成密钥)2022/11/2其他密码参数的创建:加密密钥和MAC密钥ConvertingthemastersecretintokeysandMACsecretsThemastersecretishashedintoasequenceofsecurebytes,whichareassignedtotheMACsecrets,keys,andnon-exportIVsrequiredbythecurrentCipherSpec(当前的密码参数).CipherSpecsrequireaclientwriteMACsecret,aserverwriteMACsecret,aclientwritekey,aserverwritekey,aclientwriteIV,andaserverwriteIV,whicharegeneratedfromthemastersecretinthatorder.Unusedvalues,suchasFORTEZZAkeyscommunicatedintheKeyExchangemessage,areempty.2022/11/2其他密码参数的创建:加密密钥和MAC密钥(续)Thefollowinginputsareavailabletothekeydefinitionprocess:MasterSecret[48]ClientHello.randomServerHello.random

WhengeneratingkeysandMACsecretsthemastersecretisusedasanentropysource(熵源)andtherandomvaluesprovideunencryptedsaltmaterialandIVsforexportableciphers.2022/11/2其他密码参数的创建:加密密钥和MAC密钥(续)

key_block=MD5(master_secret+SHA(`A'+master_secret+ServerHello.random+ClientHello.random))+MD5(master_secret+SHA(`BB'+master_secret+ServerHello.random+ClientHello.random))+MD5(master_secret+SHA(`CCC'+master_secret+ServerHello.random+ClientHello.random))+[...];

untilenoughoutputhasbeengenerated.

Togeneratethekeymaterial(计算方法):2022/11/2其他密码参数的创建:加密密钥和MAC密钥(续)

client_write_MAC_secret[CipherSpec.hash_size]server_write_MAC_secret[CipherSpec.hash_size]client_write_key[CipherSpec.key_material]server_write_key[CipherSpec.key_material]client_write_IV[CipherSpec.IV_size]/*non-exportciphers*/server_write_IV[CipherSpec.IV_size]/*non-exportciphers*/

Thenthekey_blockispartitionedasfollows.2022/11/2ClientServer2022/11/2第7章协议安全技术(安全协议实例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/11/2SSL的具体实现2022/11/2SSL与web安全HTTP-ThefirstapplicationlayersecuredwithSSLRFC2817andRFC2818describesHTTPoverTLS2022/11/2SSL与web安全FirstimplementationofHTTPoverSSLwasissuedin1995byNetscapeNetscapewaspreventedfromchoosingshttpS-HTTP(secureHTTP)anotherprotocolforsecuringmessagesTreatseachrequest–responsepairasasingleunitAllowsprotectdifferentmessagesbetweenserver-clientdifferently2022/11/2HTTP1.0Closeconnectionaftereachresponse

Images:requireresponse/requestpairHTTP1.1

Connection:Keep-Alive(persistentconnection)SomebrowsersstillopennumberofconnectionstoloadpagewithimagesinparallelLargenumberofparallelconnectionsisoptimizedbySSLsessionresumption.HTTPconnectionbehavior2022/11/2BasicTechnologiesHTTP(HypertextTransferProtocol)FirstprotocoltouseSSLRequest/ResponsestructureMostbrowsersspeakhttpprotocolHTML(HypertextMarkupLanguage)OfferstheabilitytostructurethedocumentProvidelinkstomovetoanotherdocumentsURL(UniformResourceLocator)2022/11/2Securityofweb-Summary2022/11/2提供双向的服务,攻击防范能力脆弱作为可视化窗口和商业交互平台,提供多种服务,事关声誉底层软件庞大,如apache约10M,历来是漏洞之最,攻击手段最多如果被攻破可能导致成为进入企业的跳板配置比较复杂Web安全的特点2022/11/2Browser安全WebServer安全Browser与WebServer之间网络通信安全HTTPBrowerWebServerWeb安全的组成部分2022/11/2网络层:IPSec传输层:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论