1、引言
CSDN搞什么短信驗證,7年的賬號居然登陸不了,真心抓狂,WTF!!!!
DH,全稱為“Diffie-Hellman”,這是一種確保共享KEY安全穿越不安全網絡的方法,換句話說就是密鑰一致協議,由公開密鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。
簡單的說就是允許兩名用戶在公開媒體上交換信息以生成“一致”的、可以共享的密鑰。也就是由甲方產出一對密鑰(公鑰、私鑰),乙方依照甲方公鑰產生乙方密鑰對(公鑰、私鑰)。它可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道建立起一個密鑰。這個密鑰可以在后續的通訊中作為對稱密鑰來加密通訊內容。
2、DH密鑰交換模型分析
那具體是怎樣的一個流程呢?我們還是以甲乙雙方發送數據為模型進行分析
- 1、甲方(消息發送方,下同)構建密鑰對(公鑰+私鑰),甲方公布公鑰給乙方(消息接收方,下同)
- 2、乙方以甲方發送過來的公鑰作為參數構造密鑰對(公鑰+私鑰),將構造出來的公鑰公布給甲方
- 3、甲方用“甲方的私鑰+乙方的公鑰”構造本地密鑰
- 4、乙方用“乙方的私鑰+甲方的公鑰”構造本地的密鑰
- 5、這個時候,甲乙兩方本地新構造出來的密鑰應該一樣,甲乙雙方可以通過本地密鑰進行數據的加密和解密
- 6、然后就可以使用AES這類對稱加密算法進行數據的安全傳送了。
3、DH密鑰交換算法數學原理
有兩個全局公開的參數,一個素數p和一個整數g,g是p的一個原根。
服務端的私鑰和公鑰分別是a和A,客戶端的私鑰和公鑰分別是b和B;
服務端根據a、p、g,可以計算出公鑰A;
服務端將g, p, A明文傳送給客戶端,客戶端可以計算自己的公鑰B,以及共享密鑰K;
客戶端將B明文發送給服務端,服務端也可以計算出共享密鑰K。

4、中間人攻擊
在最初的描述中,迪菲-赫爾曼密鑰交換本身並沒有提供通訊雙方的身份驗證服務,因此它很容易受到中間人攻擊。
一個中間人“丙”在信道的中央進行兩次迪菲-赫爾曼密鑰交換,一次和甲,另一次和乙,就能夠成功的向甲假裝自己是乙,反之亦然。
而攻擊者可以解密(讀取和存儲)任何一個人的信息並重新加密信息,然后傳遞給另一個人。因此通常都需要一個能夠驗證通訊雙方身份的機制來防止這類攻擊。
有很多種安全身份驗證解決方案使用到了迪菲-赫爾曼密鑰交換。例如當甲和乙共有一個公鑰基礎設施時,可以將他們的返回密鑰進行簽名。
