日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TLS1.3握手流程以及参数详解

發布時間:2024/4/11 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TLS1.3握手流程以及参数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TLS1.3概述

TLS1.3總共有兩層,分別是握手協議(handshake protocol)和記錄協議(record protocol),握手協議在記錄協議的上層,記錄協議是一個分層協議。其中握手協議中還包括了警告協議(alert protocol)。

TLS1.3概括如表格所示:

本文將詳細闡述握手協議,并且抓包分析。

TLS1.3記錄協議:

記錄協議位于握手協議下層,發送方從高層接受任意長度的非空數據,對其進行合并或分塊處理,然后利用帶有輔助數據的認證加密AEAD(authenticated encryption with associated data)進行加密傳輸。

接收方接受數據后對其進行解密和驗證,重組后再傳送給高層用戶。

TLS1.3警告協議:

目的是以簡單的通知機制告知通信出現異常情況,警告消息通常會攜帶Close_notify異常,在連接關閉的時候報告錯誤,Alert_Level字段標識告警的嚴重程度,可取值Warning或者Fatal,嚴重程度為Fatal時會立即終止當前連接。

TLS1.3握手協議:

握手協議主要分為三個流程

  • 密鑰交換:選擇TLS協議版本和加密的算法,并且協商算法所需的參數。這段是明文傳輸的
  • 服務器參數:建立其他握手協議參數,例如是否需要認證客戶端,支持何種應用層協議等。
  • 認證:對服務器進行認證(包括可選的客戶端認證)并且提供密鑰確認和驗證握手完整性功能。
  • 這三個階段完成后就可以進行應用層數據傳輸。

    流程圖如下所示:

    注:+:上一消息的擴展消息;*:可選發送

    {}:用握手層流密鑰加密;[]:用流密鑰加密

    TLS1.3的交互過程分為1-RTT,RTT是時延往返的意思。RTT越小速度越快。

    在TLS1.2里交互過程需要2-RTT,可見TLS1.3加快了交互的速度。

    正常連接(1-RTT)流程如下:

    第1步,客戶端發送 ClientHello 消息,該消息主要包括客戶端支持的協議版本、會話ID、密碼套件、壓縮算法、以及擴展消息(密鑰共享、預共享密鑰、預共享密鑰模式);

    第2步,服務端回復 ServerHello,包含選定的加密套件;發送證書給客戶端;使用證書對應的私鑰對握手消息簽名,將結果發送給客戶端;選用客戶端提供的參數生成臨時公鑰,結合選定的參數計算出用于加密 HTTP 消息的共享密鑰;服務端生成的臨時公鑰通過 KeyShare 消息發送給客戶端;

    第3步,客戶端接收到 KeyShare 消息后,使用證書公鑰進行簽名驗證,獲取服務器端的臨時公鑰,生成會話所需要的共享密鑰;

    第4步,雙方使用生成的共享密鑰對消息加密傳輸,保證消息安全。

    簡單的說就是:


    即4部分。ClientHello,SeverHello,Client認證,數據交互。

    接下來分析這4個部分。

    分析ClinetHello:



    Handshake Type:ClientHello,表示握手消息類型,此處是ClientHello
    Length:574,即長度為574
    Version:TLS1.2(0x0303),表示版本號為1.2,TLS1.3中規定此處必須置為0x0303,即TLS1.2,起到向后兼容的作用。1.3版本用來協商版本號的部分在擴展當中,而之前的版本就在此處進行。
    Random : 隨機數,是由安全隨機數生成器生成的32個字節。
    Session ID Length :會話ID的長度。
    Session ID :會話ID,TLS 1.3之前的版本支持“會話恢復”功能,該功能已與1.3版本中的預共享密鑰合并。為了兼容以前的版本,該字段必須是非空的,因此不提供TLS 1.3之前會話的客戶端必須生成一個新的32字節值。該值不必是隨機的,但應該是不可預測的,以避免實現固定在特定值,否則,必須將其設置為空。
    Cipher Suites Length: 即下面Cipher Suites的長度
    Cipher Suites是密碼套件,表示客戶端提供可選擇的加密方式,如圖所示:

    每個加密套件都包含,密鑰交換,簽名算法,加密算法,哈希算法。

    Compression Methons (1 method)表示壓縮方法,長度為1,內容為空

    Exentisons擴展部分,是TLS1.3才開始使用,是TLS1.3的顯著特征。每一個擴展都包含類型(type),長度(length)和數據(data)三個部分。

    下面分析幾個相對重要的擴展:

    1)key_share

    key_share 是橢圓曲線類型對應的公鑰,如圖所示

    此處包含兩個KeyShareEntry,第一個是預留的空值,第二個是x25519曲線組,具體數據在KeyExchange字段中;每個KeyShareEntry都代表一組密鑰交換參數。

    2)signature_algorithms

    Signature_algorithms擴展是,客戶端提供簽名算法,讓服務器選擇

    以第一個簽名算法為例,ecdsa_secp256r1_sha256,使用sha256作為簽名中的哈希,簽名算法為ecdsa。

    3)psk_key_exchange_modes

    psk_key_exchange_modes是psk密鑰交互模式選擇

    此處的PSK模式為(EC)DHE下的PSK,客戶端和服務器必須提供KeyShare

    如果是僅PSK模式,則服務器不需要提供KeyShare。

    4)pre_shared_key

    psk是預共享密鑰認證機制,相當于session ticket再加一些檢驗的東西

    Identity中包含的是客戶端愿意進行協商的服務器身份列表

    PSK binder表示已經構建當前PSK與當前握手之間的綁定。

    分析ServerHello:


    發現和ClientHello類似。

    CkientHello提供加密方式的選擇,而ServerHello實質是在Client提供的多種加密中選定加密的方式

    client 的認證部分:


    待到client認證完成,發送給服務端,至此建立連接,可以發送數據。

    數據傳輸部分


    可見數據經過TLS1.3加密,進行傳輸。

    轉載自: nsfocus 技術博客
    原文作者: 陳健
    原文鏈接: http://blog.nsfocus.net/tls1-3protocol/

    總結

    以上是生活随笔為你收集整理的TLS1.3握手流程以及参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。