DH ECDH? 數字簽名數字證書? 一篇文章幫你搞懂! (附Python源碼)

1. 相關的知識基礎

1.1 對稱加密和非對稱加密

對稱加密與非對稱加密

1.2 混合加密

混合加密
混合加密主要是爲了解決對稱加密祕鑰交換問題與非對稱加密速度慢的問題

1.3 AKE Authenticated Key Exchange

這個是解決對稱加密祕鑰無法交換的第二個問題也是我們今天的主題!, 具體的代碼會在下面演示. AKE的算法有很多但是基本是建立在:

1.31 迪菲-赫爾曼密鑰交換 DH algorithm

DH AKE

1.32 ECDH DH的安全加強版結合了橢圓曲線

DH 和 ECDH

ECC算法詳解

這兩個代碼在原理上都十分相像目的就是黑客能看到的東西組不成祕鑰, 組成祕鑰的是雙方的私有祕鑰和公共祕鑰, 但是黑客無法根據公共祕鑰或者公共祕鑰與私有祕鑰的結合得到私有祕鑰進而得到用於對稱加密的私鑰. 但是兩個算法的區別是DH的公共祕鑰是相同的, 而ECDH的公共祕鑰有兩個和私鑰對應.

1.4 數字簽名和數字證書 - 解決AKE 的中間人攻擊

中間人攻擊的相關問題有時間會寫.
數字簽名與數字證書動畫講解
數字簽名和數字證書詳解版 - 更全面但是不好理解

2. 環境準備

2.1 雲服務器 跑Server 和 CA

雲服務器這裏有一個坑, 就是你本地或者虛擬機跟雲服務器同行(雲服務器是主機)的話, 要綁定內網IP而並不是公網IP, 公網IP是用來映射到內網IP上的, 所以很多port都用來映射了, 這意味着如果你綁定公網會報錯原因port不足.

2.2 本地 跑Client

這個沒啥好說的, 但是注意安裝rsa庫 其它的沒啥

3. 開始實戰

3.1 設計理念

在這裏插入圖片描述

最關鍵的一點就是模擬CA, 用CA的私鑰加密服務器的公鑰已獲得數字證書從而確定服務器公鑰的正確性, 同時數字簽名是服務器私鑰簽名的, 如果被簽名額消息, 服務器公鑰 能驗證成功的話證明消息確實是服務器發出的, 並且消息未被更改, 因爲簽名是服務器私鑰籤的只有服務器公鑰能驗證, 由於CA保證了服務器公鑰的正確性, 因此如果驗證成功那麼消息一定來自CA公鑰解出的公鑰所屬的地方發來的-服務器. 同時如果驗證成功還說明消息沒有被更改過, 因爲簽名是消息哈希值用私鑰加密, 所以驗證的其實是公鑰解密的哈希值和消息原來的哈希值是否一樣一樣就說明消息未被改過, 注意黑客這裏是無法同時改消息和哈希值的, 因爲黑客沒有服務器的私鑰沒法重加密哈希值以獲得簽名.

3.2 程序運行

在這裏插入圖片描述
在這裏插入圖片描述

4 代碼上傳了 依賴包有點多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章