TLS1.3抓包分析(3)——EncryptedExtentions等

其實在最開始抓包的時候就發(fā)現(xiàn)了一個問題,就是在ChangeCipherSpec消息之后,沒有加密擴展、證書,甚至Finished消息都沒有。在握手過程中,F(xiàn)inished消息是一定存在的,所以說明用Wireshark抓的包存在問題,之前提到過,ChangeCipherSpec之后的消息都是進(jìn)行加密了的,所以可能是因為Wireshark沒有對后續(xù)的消息進(jìn)行解密,所以只是顯示了ApplicationData,即加密傳輸?shù)臄?shù)據(jù)。

wireshark抓包1

那么要想利用wireshark對其進(jìn)行分析,就要想辦法得到密鑰,對加密的消息進(jìn)行解密,這里的解決方法參照https://jingyan.baidu.com/article/20b68a88b2af7f796cec62b3.html。
簡要步驟:
1.創(chuàng)建一個log文件,因為Firefox和Chrome瀏覽器都支持用log文件的方式記錄下用來加密TLS數(shù)據(jù)包對稱會話秘鑰的,所以創(chuàng)建ssl.log來保存會話密鑰。
2.配置環(huán)境變量。右鍵點擊我的電腦->屬性->高級系統(tǒng)設(shè)置->高級->環(huán)境變量->系統(tǒng)變量
環(huán)境變量1

然后新建一個系統(tǒng)環(huán)境變量,變量名是SSLKEYLOGFILE,變量值就是你的log文件的位置。
環(huán)境變量2

3.在Wireshark中進(jìn)行配置。編輯->首選項->協(xié)議Protocols->SSL,在(pre)-Master-Secret log filename一欄中添加剛才的log文件位置。
Wireshark配置

然后再進(jìn)行抓包,抓包結(jié)果如圖:

抓包結(jié)果

可以看到之前的Application Data被解析為EncryptedExtentions、Certificate、Certificate verrify、Finished,下面將對這幾個消息進(jìn)行逐個分析。
解析后的消息

Encrypted Extentions加密擴展

Encrypted Extentions

加密擴展中包含兩個擴展內(nèi)容——supported_groupsserver_name。
Type、Length依舊表示類型和長度,不再進(jìn)行單獨解釋。
supported_groups包含的是服務(wù)器所支持的曲線組,這里有x25519、secp256r1、secp384r1。
server_name表示服務(wù)器名,此處加密擴展是服務(wù)器發(fā)給客戶端的,所以置為空。

Certificate

Certificate1

Certificate Request Context Length,在此處置為空,即長度為0。
Certificate Request一般是在加密擴展消息之后服務(wù)器(可選)進(jìn)行發(fā)送的,服務(wù)器用它來請求客戶端發(fā)送證書,如果服務(wù)器發(fā)送了Certificate Request,客戶端一般需要在后面發(fā)送自己的Certificate,并在Certificate消息中包含Certificate Request Context來進(jìn)行響應(yīng);所以服務(wù)器發(fā)送的證書中,Certificate Request Context為空,長度為0。
Certificates,證書(CertificateEntry)序列,每個CertificateEntry包含一個證書和一組擴展。

signedCertificate
version,版本為v3;serialNumber,序列號。
signatureAlgorithm Id,簽名算法ID,這里表示sha256WithRSAEncryption。
issuer,證書頒發(fā)者,用X.509 DN表示,DN是由RDN構(gòu)成的序列,RDN用“屬性類型=屬性值”的形式表示。
CountryName,國家,此處為US。
OrganizationName,機構(gòu)名,此處為Let's Encrypted。
commonName,通用名稱,此處為Let's Encrypted Authority X3。

Certificate2

validity,表示證書的合法性,包含證書有效期的起止時間。
subject,證書的主體,也用X.509 DN表示,即RDN序列。
commonName,通用名稱,此處為tls13.crypto.mozilla.org,即所頒發(fā)證書的對象。 subjectPublicKeyInfo,證書主體公鑰信息。
Algorithm,公鑰算法,這里用的是RSA。
subjectPublicKey包含的就是具體的公鑰,包括modulus(系數(shù))和Exponent(指數(shù))。
Certificate3

extentions,擴展,這里有9個擴展,分別是keyUsage、extKeyUsagebasicConstraintssubjectKeyIdentifier、authorityKeyIdentifier、authorityInfoAccessSyntaxsubjectAltName、certificatePolicies、SignedCertificateTimestampList
keyUsage

keyUsage,表示證書的公鑰可以完成的功能或服務(wù),這里包含digitalSignature和keyEncipherment。
extensions

extKeyUsage,表示Extended Key Usage,包含一系列的KeyPurposeID,每一個都表示一種用途,這里包括serverAuth和clientAuth。
basicConstraints,基本約束擴展,標(biāo)識證書的主體是否為CA以及包含有效證書路徑的最大深度
subjectKeyIdentifier,主體密鑰標(biāo)識符,用來識別包含特定密鑰的證書。
authorityKeyIdentifier,**密鑰標(biāo)識符,用來識別證書所用私鑰對應(yīng)的公鑰。
extensions

authorityInfoAccessSyntax,序列中的每個條目都描述了擴展所在的證書的頒發(fā)者提供的附加信息的格式和位置。信息的類型和格式由accessMethod字段指定;accessLocation字段指定信息的位置。
subjectAltName,表示Subject Alternative Name,主體可選名,可使身份與證書主體綁定,此處只給出了一個GeneralName。
certificatePolicies擴展

certificatePolicies,證書策略擴展包含一個或多個策略信息術(shù)語的序列,每個術(shù)語由對象標(biāo)識符(object identifier,OID)和可選限定符(optional qualifiers)組成。
SignedCertificateTimestampList

SignedCertificateTimestampList,表示證書時間戳序列,包含時間戳(Timestamp)、簽名算法(Signature Algorithm)、簽名(Signature)以及其他字段。
signature到剛才的extensions都是signedCertificate中的內(nèi)容。

Certificate4

algorithmIdentifier,表示算法標(biāo)識符,包含Algorithm ID,對應(yīng)于特定算法,此處為sha256WithRSA。
Padding,填充內(nèi)容,此處為空。

另外一個證書的內(nèi)容和上述內(nèi)容類似,不再進(jìn)行詳細(xì)敘述,因為證書的內(nèi)容不是研究的重點,所以敘述比較簡單,具體看rfc5280對X.509證書的定義https://tools.ietf.org/html/rfc5280#section-4.1.2.9。

Certificate Verify

Certificate Verify and Finished

Signature Algorithm,簽名算法,此處為rsa_pss_rsae_sha256。
Signature,簽名內(nèi)容。

Finished

Finished消息是身份驗證階段的最后一條消息,Verify Data是通過HMAC計算得來的,包含finished_key和握手消息的hash。
verify_data =HMAC(finished_key,Transcript-Hash(Handshake Context,Certificate, CertificateVerify))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容