一種不依賴公開密鑰算法的密鑰交換(公鑰分發)方法

在這個越來越不安全的網絡環境中,要想保證兩個節點間通信中的數據是安全的,通常需要混合使用公開密鑰算法(非對稱加密算法)來進行密鑰交換,然後使用對稱加密算法將數據加密,使用單向散列函數生成數據指紋,使用簽名算法生成數據簽名,然後一起將加密數據,數據指紋,數據簽名一起發送給對方。 本文介紹一種不使用公開密鑰算法來進行密鑰交換的方法。

假設通信雙方爲A和B, 方法中x爲隨機數,y爲需要交換的n位加密密鑰,n是固定值

1、A 使用隨機數算法,生成x, 生成n位密鑰y, 使用y對x進行對稱加密生成密文Sx

2、A重複步驟1 執行m次,生成m個Sx。 因爲x是隨機生成的,所以m個x,y,Sx都是不一樣的

3、A將m個x,Sx 發送給B

4、B從m個x,Sx中隨機選擇一對,然後進行窮舉破解,破解出y。

5、B將選中的x發送給A。此時A 與 B都知道了密鑰y。之後使用y加密數據進行通信即可。

此方法的可行性主要在單次窮舉破解的複雜性以及消息的數量m。 破解的複雜度太高不行,消息的數量m太少也不行。

當然,上述方法還存在其他問題,比如如果在第3步,第5步數據被截獲,雖然通過第3步暫時無法破解具體的x,y,但是第5步是可以破解x,y的。 如果在後續的通信中,僅使用y對數據加密,也存在數據完整性和防抵賴方面的問題。

有一種情況是比較適合使用此方式的。就是雙方在不知道對方公鑰的情況下,可以依賴此方式進行安全的密鑰交換和公鑰分發以及安全通信。

1、上述步驟1,2不變。

2、A將m個x,Sx,Pxa發送給B,其中Pxa爲 使用y加密Pa的結果,Pa爲A的公鑰;

3、B隨機選擇一個暴力破解出y,同時也知道了Pa;

4、B使用Pa加密x,使用y加密Pb發送給A;

5、A收到使用私鑰解開x,則知道了y,使用y可以知道Pb。至此,A,B都知道y,以及對方的公鑰;

從安全性上,即使第2步,第4步中,即使數據包被截獲,攻擊者也無法從m個x,Sx中破解出來需要的y,也無法知道各自的公鑰。

以上方案其實還解決了另一個問題,就是公鑰的分發問題。現在常用的公鑰分發都是先將公鑰存儲在集中的數據庫中,然後到數據庫中獲取對應的公鑰,但是由於事前用戶並不知道需要跟誰通信,因此就必須保證用戶計算機與數據庫服務器是連通的。

THE END!

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