Diffle Hellman 金鑰交換過程描述

2021-09-25 10:33:54 字數 3823 閱讀 6253

前言:僅個人小記。

前要知識和約定

金鑰交換雙方 alice 和 bob, 竊聽者 eve。

規定 p 是乙個大的質數,具體為乙個 1024 位的二進位制數(相應為乙個300位的十進位制數),即 2

1024

2^21

024 規模的質數。

g ab

%p=(

ga%p

)b%p

=(gb

%p)a

%pg^\%p = \%p)}^b\%p= \%p)}^a\%p

gab%p=

(ga%

p)b%

p=(g

b%p)

a%p計算 ga%

pg^a\%p

ga%p

的複雜度為 o(loga),其中 a < p-1, 可以採用指數降冪運算,屬於輕量級別的計算複雜度。按指數函式的速度從 1 跑到 2

1024

2^21

024,只需要1024步即可,不到 1 秒就可以解決。

被告知 a, g, p 以及滿足 a=g

a%pa = g^a\%p

a=ga%p

,求解 a 採用普通的方法就是窮舉,從 a = 0 開始嘗試,一直到 a = p-2, 一定能試出來 a 值。計算複雜度為 o( p )。按線性函式的速度從 1 跑到 2

1024

2^21

024,那真的是要 2

1024

2^21

024 步, 則需要超過百年的時間才可以解決。

金鑰交換三個步驟

步驟一引入大的質數 p進而得到基於大質數 p 的乙個迴圈群(後面解釋為什麼要引入迴圈群) g =

計算出這個迴圈群的乙個生成元 g。關於 g 如下**釋:

關於 p 的選定以及相應生成元 g 的計算與選擇(因為生成元可能不只有乙個),這個任務不強制歸屬於alice 或者 bob哪一方, p, g 也可能是由系統提供(這是一句含糊的話)。

任務一中存在疑問: 1. 引入大的質數,這個「引入」具體是怎麼引入,是參看現有的素數表然後選出乙個嗎? 的確這樣子做是可行的。 2. g 的計算的複雜度在實際中有多高 ?目測感覺不小,而講道理計算 g 只是乙個前奏,不應該計算量很大。

步驟二alice選擇乙個小於 p 的數字 a 作為自己的私鑰,然後可以快速計算出 ga%

pg^a\%p

ga%p

,該計算結果作為相應的公鑰 a。然後 alice 將公鑰 a 傳送給 bob, 同時 eve 竊聽到了公鑰 a。

bob選擇乙個小於 p 的數字 b 作為自己的私鑰,然後快速計算出gb%

pg^b\%p

gb%p

,計算結果作為 bob 自己的公鑰 b 。然後 bob 將公鑰 b 傳送給 alice, 同時 eve 竊聽到了公鑰 b。

步驟三三人各自所持有的資料情況:

alice 有 g, p, a, b=g

b%pb=g^b\%p

b=gb%p

bob 有 g, p, b, a=g

a%pa=g^a\%p

a=ga%p

eve 有 g, p, a, b

根據前要知識(2),容易發現alice 和 bob 可以通過計算得到乙個共同的值,而eve 還不具備計算條件。alice 和 bob 計算的共同的值就作為共享金鑰 c。具體計算如下:

alice 計算c=b

a%p=

gab%

pc = b^a\%p=g^\%p

c=ba%p

=gab

%pbob 計算 c=a

b%p=

gab%

pc = a^b\%p=g^\%p

c=ab%p

=gab

%p對於 eve , eve 希望知道他們的 共享金鑰c ,而 eve 手裡目前只有 g, p, a, b,想要計算 c 那麼 eve必須再補充乙個資訊,即 alice 的私鑰 a 或者 bob 的私鑰。 故而,eve 需要嘗試計算出alice 或者 bob 的私鑰,而計算私鑰的過程正如前要知識(5)所描述的,計算量很大。等到 eve 計算出來私鑰,eve 的原始任務已經沒有意義了,所以這裡認為 eve雖然可以竊聽 alice 和 bob 在網上的所有通訊,但是 eve 仍然無法獲知 alice 和 bob 的共享金鑰。

後續討論

如果發生中間人攻擊的話,即上面步驟一中雙方互動資訊都必須經由 eve 進行間接傳達,而不存在直接的雙方通訊,即如下圖:

則 diffle-hellman 不安全,因為 eve 完全可以對 alice 充當 bob 角色,配合 alice 完成想要進行的金鑰交換過程;而又對 bob 充當 alice 角色,配合 bob 完成想要進行的金鑰交換過程。

第六版的《密碼學與網路安全-原理與實踐》書中,對於中間人攻擊,簡要提及說可以通過數字簽名和公鑰認證的方法來避免。但我個人認為這種說法不絕對成立,只有當且僅當 eve 只能夠對上述金鑰交換過程進行中間人攻擊而無法對數字簽名+公鑰認證進行中間人攻擊時候成立。倘若,eve 在數字簽名+公鑰認證的過程中也能夠發動中間人攻擊,則數字簽名+公鑰認證機制無效(因為eve 完全可以控制公鑰認證進行身份偽造,但,的確這個難度上公升了許多,由此可以說,數字簽名+公鑰認證這個方法的確是有一定效果的。)

如果把共享金鑰 c 看作是訊息,這個訊息最終被 alice 和 bob 共享,而且 eve 無法竊聽,從這個最終態角度來看,似乎可以直接用於加密通訊,因為加密通訊希望的就是通訊雙方都掌握訊息c,而同時不被別人竊聽。但實際上是不可以的,根源在於對 c認知時機不吻合。在金鑰交換過程中,c 是最後才被揭曉的,即不管 alice 還是 bob 實現都是無法判定 c值的。 而在加密通訊過程中, 訊息 c 是事先由 alice 或者 bob 知曉的。

什麼是主金鑰 工作金鑰 會話金鑰 PIN金鑰?

主秘鑰,即 terminal master key tmk,主要作用是用來驗證工作秘鑰是否合法,以及加密tpk 終端pin金鑰 保證tpk在傳輸線路上的安全性。一般情況下是人工在pos設定或者通過ic卡匯入,tmk被寫入金鑰保護晶元,也就是我們說的se,其具有開機程式自毀功能,能很好的保護tmk的安...

公有金鑰 私有金鑰加密

如果你的朋友給你傳送了一封郵件,老朋友多日未見說了些寒暄的話,最後你的朋友又來了一句,今天晚上六點我請你到北京飯店吃飯吧,怎麼樣?你可能對這句話比較懷疑,這小子今天頭腦是不是有問題?在看看這封郵件的位址,還真是他的郵件位址,但認識這小子很多年了,從來沒請我吃過飯。今天?一連串的問號在你的頭腦中。如果...

公有金鑰 私有金鑰加密

如果你的朋友給你傳送了一封郵件,老朋友多日未見說了些寒暄的話,最後你的朋友又來了一句,今天晚上六點我請你到北京飯店吃飯吧,怎麼樣?你可能對這句話比較懷疑,這小子今天頭腦是不是有問題?在看看這封郵件的位址,還真是他的郵件位址,但認識這小子很多年了,從來沒請我吃過飯。今天?一連串的問號在你的頭腦中。如果...