小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

SSL/TLS詳解

 竹林深處371 2014-10-29
該文章主要提供一個詳細(xì)的解釋關(guān)于SSL/TLS協(xié)議,特別是握手協(xié)議,它關(guān)聯(lián)到信息,警告以及記錄協(xié)議。

1.握手協(xié)議(The handshake protocol)9b1c0823-16f3-43fb-95cd-1f1f4911be67

初始化發(fā)給服務(wù)器的客戶端消息
client Hello
客戶端通過發(fā)送hello消息給服務(wù)器來初始化一個會話(簡單的說就是客戶端想要連上服務(wù)器,就必須經(jīng)歷這個會話過程),hello消息包括:
  • Version Number(版本號):客戶端發(fā)送他支持的最高的版本號。2表示SSL2.0, 3表示SSL3.0, 3.1表示TLS。雖然在IETF RFC中TLS版本為1.0,1.1或者1.2, 但是這里用3.1表示TLS只是想表達出比SSLv3更高級別。
  • Randomly Generated Data(隨機生成的數(shù)據(jù)):ClientRandom[32],由4個字節(jié)的日期時間加上28個字節(jié)的隨機生成數(shù)組成。這個28字節(jié)的隨機生成數(shù)最后和服務(wù)器的隨機生成數(shù)一起來生成一個主密(master key)。
  • Session Identification(sessionID-會話標(biāo)識):sessionID用于恢復(fù)上一個會話。這個恢復(fù)功能是很有用的,因為創(chuàng)建一個新的會話需要一系列處理器密集操作才能完成。會話信息通過sessionID來標(biāo)識,它被保存在各自的會話緩存中(服務(wù)器和客戶端都保存)。
  • Cipher Suit(密碼):客戶端可用的密碼清單,例如TLS_RSA_WITH_DES_CBC_SHA,TLS是協(xié)議版本,RSA是算法(用于交換key),DES_CBC是加密算法,SHA是hash函數(shù)。
  • Compression Algorithm(壓縮算法)
client hello消息實例
ClientVersion 3,1
ClientRandom[32]
SessionID: None (new session)
Suggested Cipher Suites:
   TLS_RSA_WITH_3DES_EDE_CBC_SHA
   TLS_RSA_WITH_DES_CBC_SHA
Suggested Compression Algorithm: NONE

服務(wù)器回應(yīng)客戶端
Server Hello.包括:
  • Version Number:雙方都支持的最高版本。
  • Randomly Generated Data:ServerRandom[32],由4字節(jié)的日期時間和28字節(jié)的隨機生成數(shù)組成,這個28字節(jié)的隨機生成數(shù)和客戶端的隨機生成數(shù)一起生成主密(master key).
  • Session Identification(SessionID):有3個選擇
  1. 新的sessionID:如果客戶端沒有要求用前一個session,服務(wù)器將生成一個新的sessionID,或者服務(wù)器無法恢復(fù)客戶端指定的session,也將生成一個新的。
  2. 恢復(fù)的sessionID:和client發(fā)送過來的sessionID一樣,服務(wù)器將會嘗試恢復(fù)這個session
  3. NULL:表示新的session,并且服務(wù)器不希望這個session被恢復(fù)在以后,所以沒有指定id
  • Cipher Suit:服務(wù)器選擇雙方都支持的最強密碼。如果沒有雙發(fā)都支持的密碼,session將以"handshake failure"警告結(jié)束。
  • Compression Algorithm:壓縮算法。
server hello實例:
Version 3,1
ServerRandom[32]
SessionID: bd608869f0c629767ea7e3ebf7a63bdcffb0ef58b1b941e6b0c044acb6820a77
Use Cipher Suite:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
Compression Algorithm: NONE

Server Certificate.服務(wù)器發(fā)送它自己的證書給客戶端,這個證書包含了服務(wù)器的公鑰,客戶端將使用這個公鑰來認(rèn)證服務(wù)器以及加密premaster secret(預(yù)置密碼)。
客戶端也會檢查服務(wù)器證書中包含的名字,檢查是否和client連接的一樣,如果用戶在瀏覽器中輸入www.test.com,那么服務(wù)器證書應(yīng)該也包含一個結(jié)構(gòu)名為www.test.com 或者*.test.com.如果不匹配,瀏覽器將會發(fā)出警告。

Server Key Exchange.這是可選的一步(服務(wù)器創(chuàng)建一個臨時的key發(fā)給客戶端),這個key被客戶端用于加密client key exchange message,這一步當(dāng)且僅當(dāng)公鑰算法無法提供關(guān)鍵的必要材料時被執(zhí)行,例如服務(wù)器證書不包含公鑰。

Client Certificate Request:這也是可選的一步,當(dāng)服務(wù)器需要認(rèn)證客戶端的時候。像銀行的網(wǎng)站之類的需要用到這個,只有認(rèn)證成功后才會提供敏感信息。

Server Hello Done:表示服務(wù)器消息結(jié)束并且等待客戶端的回復(fù)。


客戶端回應(yīng)服務(wù)器
Client certificate:如果服務(wù)器發(fā)送了client certificate request,客戶端將發(fā)送它的的證書給服務(wù)器,用于讓服務(wù)器認(rèn)證客戶端,該證書包含了客戶端的公鑰。

Client Key Exchange:客戶端用雙方的28字節(jié)隨機數(shù)來生成一個premaster secret(預(yù)置密碼),然后用客戶端發(fā)送過來的服務(wù)器公鑰來加密這個premaster secret,最后發(fā)送給server。

只有擁有與服務(wù)器公鑰匹配的密鑰來能解密這個premaster secret.解密成功后來才能繼續(xù)協(xié)商.

這個消息也包含協(xié)議版本,服務(wù)器將驗證該版本與client hello message中包含的版本是否吻合,該措施用于防止rollback attacks(通過操縱消息來降低雙方使用協(xié)議的安全性,早期版本的協(xié)議)。

Certificate Verify:只有當(dāng)client發(fā)送了client certificate message后才會發(fā)送這個消息.客戶端用自己的私鑰來加密消息的做法到此為止(后面將使用雙發(fā)協(xié)商的算法和密碼來加密消息,不在使用客戶端的私鑰),服務(wù)器通過client的公鑰來驗證簽名,從而確保了該消息是由客戶端私鑰簽名過的。

Change Cipher Spec:該消息告訴服務(wù)器在client Finished message之后的所有信息將用雙方協(xié)商的密碼和算法來加密。

Client Finished:該消息是整個會談的哈希,用于提供對client的進一步認(rèn)證,它是第一個記錄層加密和散列(之前的消息都在在協(xié)商).

服務(wù)器回復(fù)給客戶端的最終消息

Change Cipher Spec Message:服務(wù)器告訴客戶端,將開始使用雙方協(xié)商的key來加密數(shù)據(jù)了

Server Finished Messge:該消息是真?zhèn)€信息交換的哈希值(這個信息交換過程使用session key和MAC secret)。如果客戶端能夠解密這個消息并且驗證哈希值的有效性,那么SSL/TLS協(xié)商過程才算成功。

2.告警協(xié)議(The alert Sub-protocol)
告警協(xié)議是握手協(xié)議的組成部分,它包含一些事件驅(qū)動消息,可以被雙發(fā)發(fā)送。根據(jù)警告消息,雙發(fā)可以決定是否結(jié)束該會話或者繼續(xù),TLS specification in RFC 2246定義了這些警告,如下表:

Table 1.   Event-Driven Alert Messages from the Alert Sub-Protocol

 

Alert MessageFatal?Description

unexpected_message

Yes

Inappropriate message

bad_record_mac

Yes

Incorrect MAC

decryption_failed

Yes

Unable to decrypt TLSCiphertext correctly

record_overflow

Yes

Record is more than 2^14+1024 bytes

handshake_failure

Yes

Unacceptable security parameters

bad_certificate

Yes

There is a problem with the Certificate

unsupported_certificate

No

Certificate is unsupported

certificate_revoked

No

Certificate has been revoked

certificate_expired

No

Certificate has expired

certificate_unknown

No

Certificate is unknown

illegal_parameter

Yes

Security parameters violated

unknown_ca

Yes

CA unknown

access_denied

Yes

Sender does not want to negotiate

decode_error

Yes

Unable to decode message

decrypt_error

Yes

Handshake cryptographic operation failed

export_restriction

Yes

Not in compliance with export regulations

protocol_version

Yes

Protocol version not supported by both parties

insufficient_security

Yes

Security requirements no met

internal_error

Yes

Error not related to protocol

user_canceled

Yes

Not related to protocol failure

no_renegotiation

No

Negotiation request rejected.



3.數(shù)據(jù)層協(xié)議(the record protocol)
the record protocol 從應(yīng)用層收到消息,包括:
  • 合并碎片數(shù)據(jù)
  • 通過數(shù)據(jù)塊的序列號來保護數(shù)據(jù)
  • 用協(xié)商的壓縮算法壓縮或者解壓數(shù)據(jù)
  • 加密或者解密數(shù)據(jù)
  • 提供HMAC(SSLv3 使用MAC)給發(fā)送出去的數(shù)據(jù),用于數(shù)據(jù)被接收后來檢查數(shù)據(jù)的完整性
一旦在數(shù)據(jù)上完成了它的操作后,數(shù)據(jù)發(fā)送個tcp/ip傳輸層。如果數(shù)據(jù)是進來的,它將被發(fā)送給相應(yīng)的進程進行處理。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多