有人可以向我解釋什麼 Diffie-Hellman密鑰交換是純英語的嗎?我在一個非技術新聞頁面上讀到,Twitter剛剛實現了這項技術,該技術允許兩個人在非安全通道的頂部交換加密消息。怎麼樣(如果這是真的)?
有人可以向我解釋什麼 Diffie-Hellman密鑰交換是純英語的嗎?我在一個非技術新聞頁面上讀到,Twitter剛剛實現了這項技術,該技術允許兩個人在非安全通道的頂部交換加密消息。怎麼樣(如果這是真的)?
Diffie-Hellman是在兩個人之間生成共享秘密的一種方式,這種秘密無法通過觀察通信來看到。這是一個重要的區別:您不是在密鑰交換期間共享信息,而是一起創建密鑰。
這特別有用,因為您可以使用此技術與某人創建一個加密密鑰,然後開始使用該密鑰加密您的流量。即使記錄了流量並在以後進行了分析,也絕對沒有辦法弄清楚密鑰是什麼,即使創建密鑰的交換可能已經可見。這就是完美的前向機密的來源。以後再分析流量的人都不會闖入,因為該密鑰從未保存,從未傳輸過,也從未在任何地方公開。
它的工作方式相當簡單。很多數學與您在公鑰加密中看到的相同,因為使用了活板門功能。而且,雖然傳統上使用離散對數問題( x y sup> mod p 業務),但一般過程也可以修改為使用橢圓曲線密碼學。
但是,儘管它使用了與公鑰密碼學相同的基本原理,但這並不是非對稱密碼學,因為在交換過程中沒有任何加密或解密的內容。但是,它是必不可少的組成部分,實際上是後來建立不對稱加密的基礎。
基本思想如下:
這裡的“魔法”是,我在第5步中得到的答案與在第4步中得到的答案相同。魔術,這只是數學,它歸結為模指數的奇特屬性。具體來說:
(g a sup> mod p) b sup> mod p = g ab sup> mod p
(g b sup> mod p) a sup> mod p = g ba sup> mod p
這其中,如果您仔細研究,則意味著無論以什麼順序進行冪運算,都將得到相同的答案。因此,我以一種順序進行,而以另一種順序進行。我不知道您用來獲得結果的秘密號碼,您也不知道我使用了什麼秘密,但是我們仍然得出相同的結果。
這個結果,就是我們在第4步和第5步中偶然發現的那個數字,就是我們的共享密鑰。我們可以將其用作AES或Blowfish或任何其他使用共享機密的算法的密碼。而且我們可以肯定,除了我們以外,沒有其他人知道我們共同創建的密鑰。
其他答案在解釋密鑰交換背後的數學方面做得很好。如果您想要更多的圖片表示形式,那麼 Diffie-Hellman密鑰交換 Wikipedia條目上顯示的出色的繪畫類比沒有什麼比這更好的了:
圖片在公共領域 sub>
Diffie-Hellman是一種用於在兩方之間建立共享機密的算法。它主要用作交換密碼密鑰的方法,以用於AES等對稱加密算法。
該算法本身非常簡單。假設愛麗絲想與鮑勃建立一個共享秘密。
p
和底數 g
。對於我們的示例,假設 p = 23
和 g = 5
。 a
值為6併計算 A = g ^ a mod p
。在此示例中,A的值為8。 B = g ^ b mod p
。在此示例中,B的值為19。 A
發送給Bob,Bob將 B
發送給Alice。 s = B ^ a mod p
。在此示例中,愛麗絲獲取 s = 2
s = A ^ b mod p
。在此示例中,Bob獲得 s = 2
的值。該算法是安全的,因為 a
和 s
所需的> b 根本不會通過電線傳輸。
如果您想要簡單的英文DH解釋,即使是非技術人員也可以輕鬆理解,那就有雙重鎖框的類比。
Alice提出了一個秘密放在一個盒子裡,並用掛鎖將其鎖上,因為只有她才能打開。然後,她將盒子寄給了鮑勃。
鮑勃收到了盒子,放了另一個只有他有鑰匙的掛鎖,然後又把它寄回了愛麗絲。 b> p>
Alice移除了她的鎖,並將盒子再次寄給了Bob。
Bob移除了他的鎖,打開了盒子,然後可以訪問愛麗絲發送給他的秘密。
由於箱子在運輸過程中始終至少有一個鎖,所以夏娃從沒有機會看到裡面的東西並竊取了機密:在此密鑰中,該密鑰將用於加密Alice和Bob的其餘通信內容。
安全連接需要交換密鑰。但是密鑰本身需要在安全連接上進行傳輸。
有兩種可能的解決方案:
Diffie-Hellman利用數學函數以下屬性:
x
計算 f [x]
(從 x
開始)很容易 f [x]
反轉為 x
A
和 f [B]
B
和 f [ A]
A
或 B
的情況下計算 S
(即使使用 > f [A]
和 f [B]
) A
。她計算 f [A]
,然後將 f [A]
發送給Bob。愛麗絲從未公開過她的 A
,甚至沒有向Bob公開。 B
。他計算 f [B]
,然後將 f [B]
發送給Alice。鮑勃從未公開自己的 B
,甚至沒有向愛麗絲公開。 A
和 f [ B]
。 Bob使用 B
和 f [A]
S
[A] 和 f [B]
,所以她很難計算 S
。Diffie-Hellman計劃不提供任何形式的身份驗證。它僅允許2個匿名方共享一個公共秘密。但就愛麗絲所知,她可能正在與魔鬼(而不是鮑勃)握手。這就是為什麼我們需要至少一方進行身份驗證的原因。
例如:SSL(https),使用PKI(公鑰基礎結構)對Web服務器進行身份驗證,然後建立安全連接(DH)在網站和客戶之間。由於網站已通過身份驗證,因此客戶端可以信任該網站,但是該網站不能信任該客戶端。現在,客戶端可以在網頁上提供自己的身份驗證詳細信息。
保護數據通過互聯網的安全通常需要以兩種方式對其進行保護:
使用對稱加密提供機密性,並使用消息認證代碼(MAC)提供完整性。
對稱加密和MAC都要求雙方都具有相同和秘密密鑰(在這種意義上,“密鑰”只是一個數字,轉換為
然後出現的問題是雙方如何在互聯網上建立相同和秘密密鑰?(或任何其他不安全的媒體)。這就是所謂的“ 密鑰交換問題”。
Diffie-Hellman允許兩個方在不安全的介質上建立共享秘密。或者,更簡單地說。...
想像一下,您和您的朋友站在擁擠的房間裡,周圍都是可疑的人。假設您和您的朋友需要同意相同的號碼,但不希望房間中的其他任何人知道該號碼是多少。 Diffie-Hellman允許您和您的朋友巧妙地交換一些數字,然後根據這些數字計算出相同的另一個數字。即使房間中的每個人都聽到了正在交換的號碼,他們也無法確定您和您的朋友到達的最終號碼。
我們可以在下圖中看到一個發生這種情況的示例。愛麗絲和鮑勃將使用Diffie-Hellman密鑰交換來建立共享機密。
任何在對話中“聽”的人只會“聽到”中間交換的數字: 13
, 6
, 2
, 9
。沒有一致的方法來組合這四個數字來獲得最終的共享密鑰: 3
,而又不知道Alice或Bob的Private值( 5
或 4
),但從未共享。
這是Diffie-Hellman的美麗。
上面的示例中使用的數字較小,以使數學保持簡單。實際上,現代Diffie-Hellman交換中使用的數字(或應該是)至少為 2048位長-寫出大約需要 617位!
完成Diffie-Hellman密鑰交換後,雙方現在具有相同的值,只有雙方都知道。
此值成為“起點”,從此開始可以生成其他密鑰。
之前,我們提到了對稱加密和消息身份驗證代碼,每個代碼都需要一個秘密密鑰。好吧,將您的DH共享密鑰與其他一些值組合起來,現在您便擁有了所需的加密和MAC密鑰。
將值組合起來以創建密鑰的額外好處很容易...它可以
實際上,許多安全協議(SSL / TLS,IPsec等)會生成一組密鑰來保護每個方向上的流量 總共四個密鑰(一個方向上的MAC +加密,另一個方向上的MAC +加密)。所有四個鍵都是從Diffie-Hellman派生的相同初始起始值生成的。
Diffie-Hellman是一種數學算法,用於在兩方之間交換共享的秘密。此共享機密可用於加密這兩方之間的消息。請注意,Diffie-Hellman算法不提供這兩方之間的身份驗證。
Computerphile的Diffie-Hellman視頻在解釋這種密鑰交換時絕對令人讚嘆。他們的視頻“ 秘密密鑰交換(Diffie-Hellman)”相當詳盡,但是他們對DH背後的數學解釋是我迄今為止在任何媒介中遇到的最好的(當然比我個人可以在這里為您寫的內容)。 在這裡觀看。
Diffie-Hellman的目標:通過公開渠道在兩方之間秘密共享一個號碼。
首先從學校召回這些取冪規則:(xᵃ)ᵇ=xᵃᵇ=xᵇᵃ
例如(2³)⁴=(2⁴)³= 4096
。這個想法是,如果愛麗絲將 x
和xᵃ
發送給Bob,則Bob和其他任何人都無法計算 a
。很難說2³是什麼,但是給定8很難說要獲得8的2的冪。所以歸結為:
x
,例如 2
a = 3
並發送2³ = 8
發送給Bob b = 4
並將2⁴= 16
發送給Alice 16³= 4096
,而鮑勃計算8⁴= 4096
因此,愛麗絲·阿里福克科普(Alice & Bob)都知道4096,但沒人知道 > a 和 b
,因此無法計算xᵃᵇ。
實際上,計算對數並不那麼複雜。但是一旦包含模塊化算術,就會變得很複雜。
Diffie和Hellman發明了 Diffie-Hellman密鑰交換
,以通俗易懂的英語而不使用上面的答案中的任何數學表達式。
本發明是關於兩個人在同一號碼上達成一致的一種方式。然後,這個共同商定的號碼將用於兩個人的任何目的。例如,遵循 DH Key Exchange
步驟之後,最終結果是兩個人現在到達的號碼相同。兩個人都無法控制這個公用號碼。 DH Key Exchange
(DH密鑰交換)發明僅保證兩個人都能到達一個共同的號碼。一旦達到該通用數字,示例用法就是使用該數字轉發字母。例如,如果公用數字為5,則在發送消息時字母A變為F,字母B變為G,依此類推。然後,接收消息的其他人將向後退消息的每個字母以進行閱讀。
Person-A
和 person-B
不能大聲說話以約定一個公用號碼,因為第三個 person-C
會聽到。如果 person-C
知道商定的號碼,那麼他也可以閱讀該秘密消息。 DH密鑰交換
始終要求總是有 第三個人 person-C
可以收聽 person-A
和 person-B
以及這種三人場景是本發明的全部目的,即如何使 person-C
無法閱讀 person-A
和 person-B
之間的秘密編碼消息。
在 DH密鑰交換
的第一步中, person-A
和 person-B
將來回發送一些數字。這個早期的 person-C
可以讀取這些第一條消息。在第二階段中, person-A
和 person-B
將發送加密的消息,而 person-C
無法再讀取。儘管 person-C
在最初的步驟中可以聽到初始消息,但 person-C
無法到達商定的編號,即 person-A
和 person-B
現在有了。
Diffie和Hellman曾因這項發明在2015年獲得 Turing Award
。
我寫這篇文章只是一次我從未講過的演講的概念。
由於它是作為談話內容而寫的,所以這是Diffie-Hellman用普通的英語!
嘿!讓我們設置一個加密通道。我將把您的鑰匙寄給您,然後您將您的鑰匙寄給我,然後我們就可以進行私人交談。
您說了什麼?每個人都能聽到我們的聲音嗎?是的,那沒問題!
我們可以使用Diffie-Hellman。只需考慮一個隨機數,並將該隨機數的冪提高5。將結果除以23,然後取餘數。給我原來的隨機數,您應該保密,其他數字均為公眾知識。
您的餘數是8?好的。我的餘數是10。現在,將我的餘數再次提高到您的秘密隨機數的冪,再除以23,得到餘數。同樣的事情,輕鬆自在。我將用您的號碼和我的秘密隨機數做同樣的事情。
您得到了結果嗎?太好了,我也是!我知道您和我一樣有6歲,但這個房間裡沒有其他人能算出這個。他們可以嘗試所有可能的組合,直到找到與所聽到的聲音相匹配的隨機數(您身邊的8個,我身邊的10個),但是沒有比嘗試所有可能性更有效的方法了。我們可以將結果6用作密碼。儘管聽到了交流,但沒人知道我們使用的密碼。但這是一個非常弱的密碼。下次,我們應該選擇更大的數字,並使用計算器來創建更長,更強的密碼。
請注意,這種方法有效,因為我們可以彼此看到對方。我知道當您告訴我您的電話號碼是8時,不是在別人說話,因為我可以看到您的嘴唇在動。在互聯網上,有人可以偽裝成對方並為我們提供假號碼,從而對此設置攻擊。另一天我們將如何防止這些攻擊。