




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
電子科技大學計算機科學與工程學院計算系統與網絡安全
ComputerSystemandNetworkSecurity2022/12/11電子科技大學計算機科學與工程學院計算系統與網絡安全
Co1第7章協議安全技術(安全協議實例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/12/11第7章協議安全技術(安全協議實例)ConclusionsH2第7章協議安全技術(安全協議實例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/12/11第7章協議安全技術(安全協議實例)ConclusionsH3WhatisSSLSSL:SecureSocketsLayerprotocolSSLisasecureprotocolbetweenapplicationlayerandTCPlayer
whichprovidesconfidentialcommunicationinun-securenetwork2022/12/11WhatisSSLSSL:SecureSockets4ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP應用層傳輸層網絡層網絡接口層回顧:TCP/IP協議棧2022/12/11ARPRARPTCPUDPIPICMPIGMPSMTP5回顧:TCP/IP的安全性問題及其解決方法ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP應用層傳輸層層網絡層網絡接口層IP/IPSec網絡層安全2022/12/11回顧:TCP/IP的安全性問題及其解決方法ARPRARPT6ARPRARPTCPUDPIPICMPIGMPSMTPHTTPTELNETDNSSNMP應用層傳輸層層網絡層網絡接口層SSl/TLSSSL/TLS傳輸層安全回顧:TCP/IP的安全性問題及其解決方法2022/12/11ARPRARPTCPUDPIPICMPIGMPSMTP7TheGoalsofSSLEncryption(加密)SSL被設計用來使用TCP提供一個可靠的端到端安全服務為兩個通信實體之間提供保密性完整性驗證(身份鑒別)密鑰交換Scalability(可擴展性)新的密鑰算法可以容易的加入Efficiency(高效性)減少對CPU的使用透明性對應用層透明2022/12/11TheGoalsofSSLEncryption(加密)8TheGoalsofSSL(Cont.)透明性DHRSADESRC4IDEASHA應用程序TelnetHTTPFTPTCPSPXInternetEthernet可靠傳輸協議SSL協議實現應用協議明文數據流密文數據流2022/12/11TheGoalsofSSL(Cont.)透明性DHR9HistoryofSSLNetscape
公司于1994開發SSLv2releasedin1995SSLv3alsoreleasedin1995duetobugsinv2
1996年IETF成立工作組TransportLayerSecurity(TLS)committee
1999年推出TLSv1TLSv1wasbaseduponSSLv3
2003年推出TLS擴展2006年推出TLSv1.12022/12/11HistoryofSSLNetscape公司于199410CryptographicFeatureofSSL連接是保密的,對稱加密算法用于數據加密實體的身份通過公鑰加密算法得到驗證連接是可靠的,加密的消息摘要用于保證消息的完整性2022/12/11CryptographicFeatureofSSL連接11DataEncryption:RC2-40RC4-128DESDES403DESIDEAFortezzaMessageDigest:MD5SHA.KeyExchange.RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-HellmanFortezzaDataCompression:PKZipWinZipgzip
CryptographicFeatureofSSL2022/12/11DataEncryption:KeyExchange.12第7章協議安全技術(安全協議實例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/12/11第7章協議安全技術(安全協議實例)ConclusionsH13SSL中的通信實體通信實體(entity)是指SSL的參與者在SSLv3中定義了兩個通信實體客戶客戶是協議的發起者服務器服務器是協議的響應者SSLServer(SSL服務器)SSLClient(SSL客戶)2022/12/11SSL中的通信實體通信實體(entity)是指SSL的參與者14SSL的協議分層IPTCPSSLRecordProtocolSSLHandshakeProtocolSSLChangeCipherSpecProtocolSSLAlertProtocolHTTPProtocol握手協議:用來實現密鑰交換和認證記錄層協議:用來安全傳輸數據加密規約修改協議:啟用新的密碼參數報警協議:報警和錯誤2022/12/11SSL的協議分層IPTCPSSLRecordProto15一個問題Question:為什么在SSL中存在兩層:記錄層和握手層?2022/12/11一個問題Question:為什么在SSL中存在兩層:記錄層和16KeyTermsofSSL在SSL中,有幾個關鍵概念;SSLSession(SSL會話)SSLConnection(SSL連接)SSLSessionState(SSL會話狀態)SSLConnectionState(SSL連接狀態)2022/12/11KeyTermsofSSL在SSL中,有幾個關鍵概念;17SSL會話SSLsession(會話)anassociationbetweenclient&server(是客戶和服務器之間的一個關聯)createdbytheHandshakeProtocol(通過握手協議來創建)defineasetofcryptographicparameters(定義了一套加密參數)maybesharedbymultipleSSLconnections(可以被多個SSL連接共享)2022/12/11SSL會話SSLsession(會話)2022/12/1118SSL連接SSLconnection(連接)atransient,peer-to-peer,communicationslink(是一種通信實體具有對等關系的通信連接)associatedwithoneSSLsession(與一個SSLSession關聯)連接是瞬時的,用后即消失2022/12/11SSL連接SSLconnection(連接)2022/1219另外一個問題AnyquestionaboutSSLsessionandconnection?Question:Sessionandconnectionhasanyrelationship?2022/12/11另外一個問題AnyquestionaboutSSLs20連接&會話會話是用來協商安全參數的(如加密算法等)連接是用來安全傳輸應用程序數據的(如加密傳送消息)理論上,雙方可以存在多個同時會話,但在實踐中并未用到這個特性在任意一對通信雙方之間,也許會有多個安全連接每個連接都只和一個會話相關一個會話可能包含多個安全連接會話定義了一組可以被多個連接共用的密碼安全參數,對于每個連接,可以利用會話來避免對新的安全參數進行代價昂貴的協商會話與連接的關系2022/12/11連接&會話會話與連接的關系2022/12/1121連接&會話會話與連接的關系ConnectionSession2022/12/11連接&會話會話與連接的關系ConnectionSession22會話與連接的思考Anyquestionaboutsessionandconnection?Question:Whataboutsessionandconnection?2022/12/11會話與連接的思考Anyquestionaboutses23SSLSession&SessionStateSSLsessionAndSessionStates(會話與會話狀態)SessionStates(會話狀態):標識一個具體的SSL會話的信息客戶和服務器必須存儲已經建立的會話的及其響應會話狀態的信息會話狀態信息供握手協議層使用特別是恢復一個會話時2022/12/11SSLSession&SessionStateSSL24SSLSession&SessionState(Cont.)SSLConnectionandConnectionStates(連接與連接狀態)ConnectionStates(連接狀態)containsalltheinformationinonespecificconnectionOnlywhentheconnectionexists,theconnectionstateswillberemembered2022/12/11SSLSession&SessionState(25SSLSession&SessionState(Cont.)InformationofSessionStates(內容)SessionIdentifier(會話標識符)TheX.509certificatesofPeerCertificateServer(Client)(客戶或服務器的X.509證書,如果不需要驗證,則該信息為空)CompressionMethods(壓縮算法)CipherSpec(握手協議已經協商的一套加密參數)對稱加密算法MAC算法加密屬性(包括Hash長度等)2022/12/11SSLSession&SessionState(26SSLSession&SessionState(Cont.)ConnectionStatesincludes(內容包括):Serverandclientrandoms:本次連接的隨機數(包括客戶和服務器的)ServerwriteMACsecrete(服務器MAC計算密鑰):服務器對要發送的數據進行hash運算的秘密值,它也是客戶接收時進行Hash運行的秘密值ClientwriteMACsecrete(客戶端MAC計算密鑰):客戶對要發送的數據進行Hash運算的秘密值,它也是服務器接收數據時進行hash運算的秘密值2022/12/11SSLSession&SessionState(27SSLSession&SessionState(Cont.)Serverwritekey(服務器發送數據的加密密鑰):服務器用來加密數據、客戶用來解密數據的對稱加密密鑰Clientwritekey(客戶端發送數據的加密密鑰)
:客戶用來加密、服務器用來解密的對稱加密密鑰InitializationVectors(IV):采用密碼反饋模式是的初始化向量SequenceVectors:客戶/服務器為其在一個連接中發送和接收消息分配的序列號2022/12/11SSLSession&SessionState(28SSLSession&SessionState(Cont.)Question:whyusestwowritekeysandtwoMACsecretes2022/12/11SSLSession&SessionState(29SSLSession&SessionState(Cont.)WriteKey(實際就是會話密鑰)ClientServerClientServerKey1(M1)Key2(M2)OneConnection2022/12/11SSLSession&SessionState(30SSLSession&SessionState(Cont.)MACSecrete(實際就是MAC運算的秘密值)ClientServerClientServerHAC(S1,M1)HAC(S2,M2)OneConnection2022/12/11SSLSession&SessionState(31SSLSession&SessionState(Cont.)Question:連接和會話在SSL中是如何建立和維護的?Answer:為了回答這個問題,需要知道whatisrecordlayerprotocolandwhatishandshakeprotocol。2022/12/11SSLSession&SessionState(32建立在可靠的傳輸協議(如TCP)基礎上提供連接安全性
保密性:使用對稱加密算法完整性:使用HMAC算法SSLRecordprotocolLayer2022/12/11建立在可靠的傳輸協議(如TCP)基礎上SSLRecord33根據當前會話狀態,給出壓縮算法,CipherSpec給出對稱加密算法、MAC算法、密鑰長度、Hash長度、IV長度,以及連接狀態中給出的Client和Server的隨機數、加密密鑰、MAC秘密值、IV,消息序列號等,對將要傳送的數據實施以下操作:壓縮/解壓加密/解密MAC計算/MAC校驗SSLRecordprotocolLayer(Cont.)2022/12/11根據當前會話狀態,給出壓縮算法,CipherSpec給出對34用來封裝高層的協議ChangeCipherSpecprotocolAlertprotocolHandshakeprotocolApplicationprotocol(HTTP,FTP,TELNET,etal)SSLRecordprotocolLayer(Cont.)2022/12/11用來封裝高層的協議SSLRecordprotocolL35SSLRecordprotocolLayer(Cont.)Question:Recordprotocollayer中使用的密碼及相關信息從那里得到?2022/12/11SSLRecordprotocolLayer(Con36ChangeCipherSpec:SSL修改密碼規范協議標志加密策略的改變客戶和服務器都發送該消息,通知接收方繼該消息之后發送的消息,將采用握手層剛協商好的算法、密鑰等進行壓縮、MAC計算等該消息有一個值為一位的單字節構成,它是明文傳送ChangeCipherSpec(Cont.)2022/12/11ChangeCipherSpec:SSL修改密碼規范協37ChangeCipherSpec(Cont.)Question:在ChangeCipherSpec中,提到如果發送該消息后,將使用新的加密、壓縮和MAC算法,請問:它和以前的這些信息是一個什么關系(換句話說,握手層協商的加密參數等何時對記錄層生效)?Answer:SSL使用另外兩個狀態來管理這種關系預備狀態當前操作狀態2022/12/11ChangeCipherSpec(Cont.)Ques38PendingState(預備狀態)用來保存握手協議協商的密碼信息(如壓縮、加密、計算MAC的算法以及密鑰等)CurrentState(當前狀態)用來保存記錄層正在使用的密碼信息(如壓縮、加密、計算MAC的算法以及密鑰等)ChangeCipherSpec(Cont.)2022/12/11PendingState(預備狀態)ChangeCiph39SSLClientSSLServerSSLRecordProtocol當前狀態當前狀態SSLHandshakeProtocolSSLChangeCipherSpecProtocol預備狀態預備狀態SSLRecordProtocol當前狀態當前狀態ChangeCipherSpec(Cont.)2022/12/11SSLClientSSLServerSSLRecord40AlertProtocol:SSL警報協議用于將SSL握手或者數據加密等過程有關的告警傳輸給對方,向對方發出警告或者中止當前連接根據錯誤程度,Alert消息分為兩類:警告消息(warningMsg)和致命消息(FatalMsg)致命消息將導致連接被立即中止,并將與這個連接相關的會話(會話標識符)作廢,以免這個會話被繼續用來建立新的連接Alertprotocol2022/12/11AlertProtocol:SSL警報協議Alertpr41Alertprotocol(Cont.)根據功能,Alert消息被分為兩類:Close_Notify和ErrorAlertsClose_Notify:通知對方關閉該連接AlertError:通知對方關閉該連接區別:前者關閉的連接可以被恢復后者不能Alert消息被加密傳輸2022/12/11Alertprotocol(Cont.)根據功能,Ale42警告消息(WarningMsg)結束通知無證書證書出錯不支持的證書證書撤銷證書過期未知證書Alertprotocol(Cont.)2022/12/11警告消息(WarningMsg)Alertprotoco43Alertprotocol(Cont.)致命消息(FatalMsg)意外消息MAC記錄出錯解壓失敗握手失敗非法參數2022/12/11Alertprotocol(Cont.)致命消息(Fat44警報協議格式LevelAlert字段取值含義Level1警告2SSL即將關閉Alertxx均為嚴重警告消息yyAlertprotocol(Cont.)2022/12/11警報協議格式LevelAlert字段取值含義Level1警告45應用層協議加密傳輸不透明的內容(大于1字節)Applicationprotocol2022/12/11應用層協議不透明的內容(大于1字節)Application46第7章協議安全技術(安全協議實例)ConclusionsHowtousetheSSLinyoursecurityarchitectureHowDoesSSLwork?TheArchitectureofSSLWhatisSSL?2022/12/11第7章協議安全技術(安全協議實例)ConclusionsH47發方Step1分片:從上層接收任意大小的數據塊(Records)Step2壓縮:用當前會話狀態中給出的壓縮算法明文結構SSLPlaintext壓縮為壓縮記錄SSLCompressedStep3MAC計算:用當前會話狀態中指定的MAC算法對SSLCompressed計算消息摘要Step4機密:用加密算法加密壓縮數據和消息摘要,形成密文結構SSLCiphertextStep5封裝發送:將數據封裝為可靠傳輸層協議的數據包,并發送到可靠傳輸層協議WorkingProcessofRecordlayer2022/12/11發方WorkingProcessofRecordla48WorkingProcessofRecordlayer(Cont.)2022/12/11WorkingProcessofRecordlaye49第一步:分片WorkingProcessofRecordlayer(Cont.)2022/12/11第一步:分片WorkingProcessofRecor50無損壓縮不會增加1024字節以上長度的內容(短消息)沒有默認壓縮算法第二步:壓縮WorkingProcessofRecordlayer(Cont.)2022/12/11無損壓縮第二步:壓縮WorkingProcessofR51消息摘要計算第三步:MAC計算WorkingProcessofRecordlayer(Cont.)2022/12/11消息摘要計算第三步:MAC計算WorkingProcess52消息摘要計算第四步:加密WorkingProcessofRecordlayer(Cont.)2022/12/11消息摘要計算第四步:加密WorkingProcessof53SSL協議頭消息摘要計算第五步:封裝發送WorkingProcessofRecordlayer(Cont.)2022/12/11SSL協議頭消息摘要計算第五步:封裝發送WorkingPr54WorkingProcessofRecordlayer(Cont.)2022/12/11WorkingProcessofRecordlaye55WorkingProcessofRecordlayer(Cont.)2022/12/11WorkingProcessofRecordlaye56WorkingProcessofRecordlayer(Cont.)2022/12/11WorkingProcessofRecordlaye57練習請給出記錄層收方的工作流程2022/12/11練習請給出記錄層收方的工作流程2022/12/1158WorkingProcessofRecordlayer(Cont.)2022/12/11WorkingProcessofRecordlaye59問題Question:Recordprotocollayer中使用的密碼及相關信息如何得到?Answer:由handshakeprotocol協商并進一步計算得到。2022/12/11問題Question:Recordprotocollay60握手協議握手協議時SSL中最復雜的部分此協議允許客戶端和服務器相互認證、協商加密和MAC算法,保護數據使用的密鑰通過SSL記錄傳遞握手協議在傳遞應用程序數據之前使用Handshakeprotocol2022/12/11握手協議Handshakeprotocol2022/12/61握手協議層的功能客戶和服務器之間相互鑒別協商密鑰交換算法協商加密算法和密鑰協商壓縮算法生成密鑰完成密鑰交換Handshakeprotocol功能回顧2022/12/11握手協議層的功能Handshakeprotocol功能回62使用三個協議SSLHandshakeprotocol核心協議SSLChangeCipherSpec改變參數時使用SSLAlertprotocol出現錯誤時使用Handshakeprotocol使用的協議2022/12/11使用三個協議Handshakeprotocol使用的協議263握手協議建立一個會話或者恢復一個會話握手協議中每次握手都會生成新的密鑰,MAC秘密值和初始化向量等。Client和Server之間要建立一個連接,必須進行握手過程,每次握手都會存在一個會話和一個連接,連接一定是新的,但會話可能是已經存在的。Handshakeprotocol的作用2022/12/11握手協議建立一個會話或者恢復一個會話Handshakepr64握手協議本質上是一個密鑰交換協議,但它也包含認證功能,因此可以視為認證和密鑰交換協議握手協議主要由四個過程組成建立安全能力服務器認證和密鑰交換客戶端認證和密鑰交換完成Question:為什么需要服務器密鑰交換和客戶端密鑰交換兩個過程?Answer:因為SSL在同一個連接的兩個方向采用不同的密鑰Handshakeprotocol的本質2022/12/11握手協議本質上是一個密鑰交換協議,但它也包含認證功能,因此可65
Client
Server
ClientHello > ServerHello <
Handshakeprotocol的第一步第一步完成:(1)客戶告訴服務器自己的要求或能力(2)服務器按照自己的要求或能力選擇并回應客戶2022/12/11Client66
Client
Server
Certificate* ServerKeyExchange* CertificateRequest* < ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished >Handshakeprotocol的第二步第二步完成(服務器):(1)向客戶證明自己的身份(2)完成密鑰交換(3)向客戶提出自己的認證要求(可選)(4)告訴客戶自己本階段結束第二步完成(客戶):(1)向服務器證明自己的身份(可選)(2)完成密鑰交換(3)向服務器發送自己的認證校驗信息(可選)(4)告訴服務器自己本階段結束2022/12/11Client67
Client
Server
[ChangeCipherSpec]Finished > [ChangeCipherSpec] < FinishedHandshakeprotocol的第三步第三步完成(服務器):(1)向客戶通告啟用新的密碼參數(2)告訴客戶自己本階段結束第三步完成(客戶):(1)向服務器通告啟用新的密碼參數(2)告訴服務器自己本階段結束2022/12/11Client68ApplicationData <> ApplicationData
Client
Server
Handshakeprotocol的第四步第四步完成(服務器):(1)利用啟用的密碼參數加密發送數據第四步完成(客戶):(1)利用啟用的密碼參數加密發送數據2022/12/11ApplicationData <>69
Client
Server
ClientHello > ServerHello <
Handshakeprotocol總結
Certificate* ServerKeyExchange* CertificateRequest* < ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished >[ChangeCipherSpec]Finished > [ChangeCipherSpec] < FinishedApplicationData <> ApplicationData2022/12/11Client70ClientHelloSSLClientSSLServerPort443第一階段:建立安全能力(客戶->服務器)TheClientHellomessage(a)SSLVersion(highest)thatisunderstoodbytheclient.(SSL版本號)(b)ARandomnumbertocomputethesecretkey(隨機數,防重放攻擊,記為ClientHello.random)(c)SessionIdentifier(會話標識)
0:新建一個會話和連接 非0:在已有會話上建立連接(d)DataEncryptiontoidentifytheencryptionmethodsavailabletotheClient(密碼組),包括兩個部分 密鑰交換算法(KeyExchange) 密碼規范(cihperSpec)(e)DataCompressionmethodformessageexchange(壓縮方法)2022/12/11ClientHelloSSLClientSSLServ71ServerHello(a)SSLVersion(highest)thatisunderstoodbytheclient.(SSL版本號)(b)ARandomnumbertocomputethesecretkey(隨機數,防重放攻擊,記為ServerHello.random)(c)SessionIdentifier(會話標識)(d)DataEncryptiontoidentifytheencryptionmethods(密碼組)(e)DataCompressionmethodformessagecompression(壓縮方法)SSLClientSSLServerPort443第一階段:建立安全能力(服務器->客戶)TheServerHellomessage2022/12/11ServerHello(a)SSLVersion(h72問題兩個遺留問題:(1)消息如何產生(2)哪些密碼參數?2022/12/11問題兩個遺留問題:2022/12/1173問題客戶端根據自己的實際情況構建clientHellomessageQuestion:Howdoestheservercomputetheserverhellomessageandsendtoclient?Answer:
a.SSLVersion?
Thehighesttheclientavailableb.ARandomnumbertocomputethesecretkey?
Servergenerateitanditisindependentofclient’snumberc.SessionIdentifier(會話標識)?
Iftheclient’sidentifierisnot0thenthesameasclient’s,else generateanewidentifierd.DataEncryptiontoidentifytheencryptionmethods?
Theonechosefromclient’sencryptionmethodslist.e.DataCompressionmethodformessagecompression?
Theonechosefromclient’scompressionmethodslist.問題1:消息如何產生2022/12/11問題客戶端根據自己的實際情況構建clientHellom74密鑰交換算法:問題(續)問題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/12/11密鑰交換算法:問題(續)問題2:密碼參數1RSA密鑰交換協75問題(續)Question:WhydoesSSLusethreekindofDHalgorithms?Answer:Providesdifferentsecurityabilities瞬時DH安全最高匿名DH安全性最差,容易受到中間人攻擊2022/12/11問題(續)Question:WhydoesSSLuse76ClientHelloSSLClientSSLServerServerHello握手協議工作過程第一步2022/12/11ClientHelloSSLClientSSLServ77握手協議工作過程第二步如果需要對客戶端進行認證,服務器開始發送自己的證書消息等。該過程一般包含四條消息:證書消息(Certificate)服務器密鑰交換消息(Server_Key_Exchange)客戶端證書請求消息(Certificate_Request)服務器結束消息(Server_Hello_Done)2022/12/11握手協議工作過程第二步如果需要對客戶端進行認證,服務器開始發78第二階段:服務器認證和密鑰交換(服務器->客戶)CertificateTheserverIdentifierinformationADigitalCertificateoftheseverinformationencryptedwiththeCAsPrivateKey(也可能是一組證書).Thiscontainstheserver‘sPublicKey
(包含服務器公鑰)說明:服務器證書消息是服務器向客戶端傳送自己的證書,使得客戶端知道服務器的公鑰以及其他信息。SSLClientSSLServerPort443TheServerCertificatemessage2022/12/11第二階段:服務器認證和密鑰交換(服務器->客戶)Certif79Server_key_ExchangeTheCertificatetypetoindicatethetypeofpublickeyTheCertificateAuthorityisalistofdistinguishednamesofCertificateAuthoritiesacceptabletotheServer說明: (1)服務器密鑰交換消息用來向客戶端發送服務器自己的密鑰信息 (2)TheServerKeyexchangemessage不是必須的 如果使用了固定Diffie-Hellman或者RSA密鑰交換,則不需要。 反之,如果使用匿名Diffie-Hellman、瞬時Diffie-Hellman、Fortzza 或者服務器在使用RSA時僅用了RSA簽名密鑰。RSA:在第一階段包含了服務器的公鑰固定DH:由于在固定DH中,服務器在第一階段發送的證書消息中包含了服務器自己的公鑰SSLClientSSLServerPort443第二階段:服務器認證和密鑰交換(服務器->客戶)ServerKeyexchangemessage2022/12/11Server_key_ExchangeTheCertifi80Certificate_RequestTheCertificatetypetoindicatethetypeofpublickey(證書類型)(1)RSA(2)DSS(3)Diffie-HellmanTheCertificateAuthorityisalistofdistinguishednamesofCertificateAuthoritiesacceptabletotheServer(認證中心CA列表)服務器可以接受的認證中心列表說明:如果服務器不使用匿名Diffie-Hellman,則客戶端證書請求消息是必須的。它的目的是要求客戶端向自己發送證書等消息,以便進行認證。SSLClientSSLServerPort443第二階段:服務器認證和密鑰交換(服務器->客戶)TheClientCertificateRequestmessage2022/12/11Certificate_RequestTheCertifi81Server_Hello_Done表明服務器的hello和相關信息結束在此消息之后,服務器將等待客戶端的應答SSLClientSSLServerPort443第二階段:服務器認證和密鑰交換(服務器->客戶)ServerDonemessage2022/12/11Server_Hello_Done表明服務器的hello和82SSLClientSSLServerServerCertificateClientCertificateRequestServerDoneMessageServer_key_Exchange第二階段:服務器認證和密鑰交換(服務器->客戶)總結2022/12/11SSLClientSSLServerServerCer83第三階段:客戶機驗證和密鑰交換在接收到服務器完成消息之后如果請求了證書,客戶端需要驗證服務器是否提供了合法的證書檢查server_hello參數是否可以接受如果所有條件滿足,則客戶端向服務器發回一個或者多個消息:1)客戶端證書消息(Certificate):如果服務器請求了證書,必須有該消息2)客戶端密鑰交換消息(Client_Key_Exchange):必須發送3)客戶端證書校驗消息(Ceritificate_Verify):可以發送(便于服務器驗證自己的證書)2022/12/11第三階段:客戶機驗證和密鑰交換在接收到服務器完成消息之后2084CertificateTheClientIdentifierinformationADigitalCertificateoftheclientinformation說明:如果服務器請求了證書,但是客戶端沒有合適的證書,則發送”無證書警報“消息SSLClientSSLServerPort443第三階段:客戶機驗證和密鑰交換(客戶->服務器)ClientCertificatemessage2022/12/11CertificateTheClientIdentif85ClientKeyExchangeTheencryptedsessionkeywhichwillserveasapre-mastersecretkeyencryptedwiththeserver’spublickey.說明: 如果是RSA,該消息包含客戶端生成的48字節的次密鑰(pre-mastersecretkey),并使用服務器證書中的公鑰或者服務器密鑰交換消息中的臨時RSA密鑰加密,它用于生成主密鑰(mastersecretkey) 如果是Diffie-Hellman,該消息包含客戶端的Diffie-Hellman公鑰參數 如果是Fortezza,則包含客戶端的Fortezza參數SSLClientSSLServerPort443第三階段:客戶機驗證和密鑰交換(客戶->服務器)ClientKeyExchangemessage2022/12/11ClientKeyExchangeTheencrypt86Certificate_Verify說明:
Hash簽名很復雜,它對簽名的所有消息即密鑰信息等進行Hash運算,并用自己的私鑰加密,從而即是有人盜用了客戶端證書,也無法發送該證書驗證消息TheCertificateVerifyMessageiscomposedoftheHashvalueoftheclient’scertificate.SSLClientSSLServerPort443第三階段:客戶機驗證和密鑰交換(客戶->服務器)CertificateVerifyMessage2022/12/11Certificate_Verify說明:TheCerti87SSLClientSSLServerCertificateClientKeyExchangeCertificate_Verify第三階段:客戶機驗證和密鑰交換(客戶->服務器)總結2022/12/11SSLClientSSLServerCertificat88第四階段:完成此階段完成安全連接的設置,主要包含以下消息:客戶:1)客戶端發送的修改密碼規范消息(Change_Cipher_Spec)2)客戶端發送的完成消息(Finished)服務器3)服務器發送的修改密碼規范消息(Change_Cipher_Spec)4)服務器發送的完成消息(Finished)2022/12/11第四階段:完成此階段完成安全連接的設置,主要包含以下消息:289Change_Cipher_Spec說明:該消息不是握手協議的一部分,是使用修改密碼規范協議來完成的.它通知服務器啟用新的密鑰和算法。在此之后,客戶端使用新的算法、密鑰和密碼發送新的完成消息SSLClientSSLServerPort443TheClient’sChangecipherspec第四階段:完成(客戶->服務器)2022/12/11Change_Cipher_Spec說明:SSLClien90TheClientFinishmessageiscomposedofTheclientauthenticatestheserverwithamessageencryptedwiththenewlygeneratedsharedkeys.(客戶端用新建立的會話密鑰來認證服務器)Thisvalidatestotheserverthatasecureconnectionhasbeencreated(確保連接的合法性).ClientFinishSSLClientSSLServerPort443第四階段:完成(客戶->服務器)TheClientFinishmessage2022/12/11TheClientFinishmessageis91Change_Cipher_Spec說明:該消息不是握手協議的一部分,是使用修改密碼規范協議來完成的。它通知客戶端啟用新的密鑰和算法。在此之后,服務器端使用新的算法、密鑰和密碼發送新的完成消息SSLClientSSLServerPort443第四階段:完成(客戶->服務器)TheServer’sChangecipherspec2022/12/11Change_Cipher_Spec說明:SSLClien92TheServerFinishmessageiscomposedofTheserverauthenticatestheclientwithamessageencryptedwiththenewlygeneratedsharedkeys(服務器用新的會話密鑰來認證客戶).Thisvalidatestotheclientthatasecureconnectionhasbeencreated(確保連接的合法性)說明:theServerandclientcannowbegintousetheirsixsharedkeysforbulkdataencryptionutilizingtheSSLRecordLayerprotocol(從此刻開始,客戶端和服務器的記錄層協議將啟用新的密鑰和算法進行數據加密)ServerFinish第四階段:完成(客戶->服務器)SSLClientSSLServerPort443ServerFinishmessage2022/12/11TheServerFinishmessageis93SSLClientSSLServerChange_Cipher_SpecClientFinishChange_Cipher_SpecServerFinish第四階段:完成(客戶->服務器)總結2022/12/11SSLClientSSLServerChange_Cip94問題Question:WhydoesSSLneedthefinishoperation?Answer:從預備狀態向當前狀態改變2022/12/11問題Question:WhydoesSSLneedt95第四階段:完成(客戶->服務器)SSLRecordProtocol當前狀態當前狀態SSLHandshakeProtocolSSLChangeCipherSpecProtocol預備狀態預備狀態SSLRecordProtocol當前狀態當前狀態SSLClientSSLServerPort4432022/12/11第四階段:完成(客戶->服務器)SSLRecordPro96SSL握手協議報文-總結2022/12/11SSL握手協議報文-總結2022/12/1197SSL握手協議報文-總結2022/12/11SSL握手協議報文-總結2022/12/1198SSL握手協議報文-總結在握手協議中,服務器證書請求和客戶端證書請求都是可選的,因此SSL的握手過程實際蘊含三種驗證方式:客戶端和服務器均被認證只驗證服務器客戶端和服務器均不被認證(即匿名模式)2022/12/11SSL握手協議報文-總結在握手協議中,服務器證書請求和客戶端99SSL握手協議報文-總結2022/12/11SSL握手協議報文-總結2022/12/11100問題Question:在handshake協議中,只交換了一個秘密(稱之為次秘密),請問,SSL是如何得到通信中需要的加密密鑰(即工作密鑰)、MAC計算密鑰和密碼算法需要的IV值的?Answer:回答這個問題需要知道SSL的密鑰計算規則2022/12/11問題Question:在handshake協議中,只交換了一101SSLClientSSLServerC>SS>CC>SS>CEncryptionMACIV第二&三階段交換結果:六對密鑰總結2022/12/11SSLClientSSLServerC>SS>C102次秘密(pre_master_secret)主秘密(mastersecret)ClientwriteMACsecretClientwritesecretClientwriteIVServerwriteMACsecretServerwritesecretServerwriteIV密碼參數的生成2022/12/11次秘密主秘密ClientwriteMACsecretS103主秘密的創建共享主秘密(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/12/11主秘密的創建共享主秘密(MasterSecret)由客戶機104主秘密的創建(續)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/12/11主秘密的創建(續)master_secret=ForA105主秘密的創建(續)對于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/12/11主秘密的創建(續)對于RSAmaster_secret=106主秘密的創建(續)對于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/12/11主秘密的創建(續)對于Diffie-Hellmanmaste107其他密碼參數的創建SymmetriccryptographiccalculationsandtheCipherSpec(SSL中的密碼規約參數)ThetechniqueusedtoencryptandverifytheintegrityofSSLrecordsisspecifiedbythecurrentlyactiveCipherSpec(密碼規約).AtypicalexamplewouldbetoencryptdatausingDESandgenerateauthenticationcodesusingMD5.TheencryptionandMACalgorithmsaresettoSSL_NULL_WITH_NULL_NULLatthebeginningoftheSSLHandshakeProtocol,indicatingthatnomessageauthenticationorencryptionisperformed(SSL協議開始是并不進行加密或完整性驗證).ThehandshakeprotocolisusedtonegotiateamoresecureCipherSpecandtogeneratecryptographickeys(握手協議用來協商密碼參數,并生成密鑰)2022/12/11其他密碼參數的創建Symmetriccryptograph108其他密碼參數的創建:加密密鑰和MAC密鑰ConvertingthemastersecretintokeysandMACsecretsThemastersecretishashedintoasequenceofsecurebytes,whichareassignedtotheMACsecrets,keys,andnon-exportIVsrequiredbythecurrentCipherSpec(當前的密碼參數).CipherSpecsrequireaclientwriteMACsecret,aserverwriteMACsecret,aclientwritekey,aserverwritekey,acl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產褥感染護理
- 創意餐飲店員工權益保障合同范本
- 股權激勵財產分配及退出協議
- 邴嵐與張華離婚后子女贍養及教育責任協議書
- 醫療健康產品代言人簽約范本
- 車輛抵押貸款合同(含車輛過戶)
- 環保項目補貼資金合同模板
- 巢湖軍供站公房租賃與設施設備維護及租賃管理合同
- 金融衍生品交易財產保全擔保合同模板
- 柴油大宗購銷合同十項標準
- 2024北京大興區高一(下)期末數學試題及答案
- PLCS7-300課后習題答案
- 肘管綜合癥患者護理查房
- 2023年演出經紀人考試歷年真題附答案(鞏固)
- 媒介與性別文化傳播智慧樹知到期末考試答案章節答案2024年浙江工業大學
- 工作場所職業病危害作業分級第1部分:生產性粉塵
- 24春國家開放大學《學前兒童美術教育活動指導》期末大作業參考答案
- 頭孢他啶的代謝研究
- 智能輪椅項目融資方案
- 2024年江蘇武進經濟發展集團招聘筆試參考題庫含答案解析
- 安全生產監測與預警
評論
0/150
提交評論