加密通訊過程

一次加密通訊的過程

xx.png

1、client_hello

  客戶端發起請求,以明文傳輸請求信息,包含版本信息,加密套件候選列表,壓縮算法候選列表,隨機數,擴展字段等信息,相關信息如下:
  • 支持的最高TSL協議版本version,從低到高依次 SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,當前基本不再使用低于 TLSv1 的版本

  • 客戶端支持的加密套件 cipher suites 列表, 每個加密套件對應前面 TLS 原理中的四個功能的組合:認證算法 Au (身份驗證)、密鑰交換算法 KeyExchange(密鑰協商)、對稱加密算法 Enc (信息加密)和信息摘要 Mac(完整性校驗)

  • 支持的壓縮算法 compression methods 列表,用于后續的信息壓縮傳輸

  • 隨機數 random_C,用于后續的密鑰的生成

2、server_hello+server_certificate+sever_hello_done

  • server_hello, 服務端返回協商的信息結果,包括選擇使用的協議版本 version,選擇的加密套件 cipher suite,選擇的壓縮算法 compression method、隨機數 random_S 等,其中隨機數用于后續的密鑰協商

  • server_certificates, 服務器端配置對應的證書鏈,用于身份驗證與密鑰交換

  • server_hello_done,通知客戶端 server_hello 信息發送結束

3、證書校驗

  客戶端驗證證書的合法性,如果驗證通過才會進行后續通信,否則根據錯誤情況不同做出提示和操作,合法性驗證包括如下:
  • [證書鏈]的可信性 trusted certificate path

  • 證書是否吊銷 revocation,有兩類方式離線 CRL 與在線 OCSP,不同的客戶端行為會不同

  • 有效期 expiry date,證書是否在有效時間范圍

  • 域名 domain,核查證書域名是否與當前的訪問域名匹配,匹配規則后續分析

4、client_key_exchange+change_cipher_spec+encrypted_handshake_message

  • client_key_exchange,合法性驗證通過之后,客戶端計算產生隨機數字 Pre-master,并用證書公鑰加密,發送給服務器

  • 此時客戶端已經獲取全部的計算協商密鑰需要的信息:兩個明文隨機數 random_C 和 random_S 與自己計算產生的 Pre-master,計算得到協商密鑰
    enc_key=Fuc(random_C, random_S, Pre-Master)

  • change_cipher_spec,客戶端通知服務器后續的通信都采用協商的通信密鑰和加密算法進行加密通信

  • encrypted_handshake_message,結合之前所有通信參數的 hash 值與其它相關信息生成一段數據,采用協商密鑰 session secret 與算法進行加密,然后發送給服務器用于數據與握手驗證

5、change_cipher_spec+encrypted_handshake_message

  • 服務器用私鑰解密加密的 Pre-master 數據,基于之前交換的兩個明文隨機數 random_C 和 random_S,計算得到協商密鑰:enc_key=Fuc(random_C, random_S, Pre-Master)

  • 計算之前所有接收信息的 hash 值,然后解密客戶端發送的 encrypted_handshake_message,驗證數據和密鑰正確性

  • change_cipher_spec, 驗證通過之后,服務器同樣發送 change_cipher_spec 以告知客戶端后續的通信都采用協商的密鑰與算法進行加密通信

  • encrypted_handshake_message, 服務器也結合所有當前的通信參數信息生成一段數據并采用協商密鑰 session secret 與算法加密并發送到客戶端

6、握手結束

  • 客戶端計算所有接收信息的 hash 值,并采用協商密鑰解密 encrypted_handshake_message,驗證服務器發送的數據和密鑰,驗證通過則握手完成

7、加密通信

  • 開始使用協商密鑰與算法進行加密通信

 

原創文章,作者:641348038@qq.com,如若轉載,請注明出處:http://www.www58058.com/67644

(1)
641348038@qq.com641348038@qq.com
上一篇 2017-02-07 12:21
下一篇 2017-02-07 13:58

相關推薦

  • HA cluster應用—CoroSync+Pacemaker

    HA cluster應用——CoroSync v2 (quorum system)+Pacemaker (standalone daemon)+ crmsh/pcsh corosync簡述: Corosync是OpenAIS發展到Wilson版本后衍生出來的開放性集群引擎工程??梢哉fCorosync是OpenAIS工程的一部分。OpenAIS從openais…

    2016-11-27
  • linux系統及簡單使用

    簡介:CentOS(Community Enterprise Operating System)社區企業操作系統,安全和穩定性較好,有優秀的社區支持。   Linux系統的原則: 1、由單一目的的較小的程序程序組成 2、一切皆文件 3、避免捕獲用戶接口 4、配置文件保存在文本中 5、鏈接程序完成復雜的功能   Linux系統安裝: 英文安…

    Linux干貨 2017-07-15
  • LINUX-用戶和組管理

    LINUX用戶和組管理 linux用戶分類:Username/UID      管理員:root,UID 0號,擁有最高權限;負責系統的啟功、停止,安裝新軟件,               增加、刪除用戶,保證系統正常運轉;     &nb…

    2017-05-30
  • 程序包管理及定時任務

    程序包管理及定時任務

    Linux干貨 2018-01-01
  • 上下文管理練習(為加法函數計時)

    上下文管理(為加法函數計時) 為加法函數計時 使用裝飾器顯示該函數的執行時長 使用上下文管理顯示該函數的執行時長 裝飾器實現 import time import datetime from functools import wraps def logger(fn): @wraps(fn) # wraps(fn)(wrapper) def wrapper(*…

    2017-11-18
  • Linux系統修復

    在boot里面我們可以根據自己的需求去設置一些啟動選項,我們今天來了解一下Linux啟動流程,以及boot下的選項。       加載BIOS的硬件信息,獲取第一個啟動設備。 讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息 加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。 核型執行init程序…

    Linux干貨 2016-09-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 13:58

    圖文并茂,不錯,還可以更好,加油。

欧美性久久久久