Elliptic-Curves

為什麼 ECDSA 公鑰可以通過不安全的網路發送,而 ECDSA 用於簽署 ECDH 公鑰以安全地通過網路傳輸?

  • June 20, 2017

基本上標題說明了一切。我正在嘗試開發和理解 ECDH-ECDSA 加密。

我目前為 ECDH 提供某種形式的身份驗證的方法是使用 ECDSA 在通過網路發送 ECDH 的公鑰之前對其進行簽名,以允許接收方驗證發送方。

然而,在閱讀了一些 ECDSA 實現之後,我對 ECDSA 公鑰的處理方式感到非常困惑。

在我的實現中,我想將一個靜態密鑰對硬編碼到雙方,因為我不打算讓它成為一個大規模的公共實現。這樣我就不必暴露我的鑰匙,也不必擔心任何中間人的攻擊——因為我理解一切都是正確的。

然而,大多數解決方案似乎只是通過不安全的通道發送 ECDSA 公鑰。

但這不是 ECDSA 試圖阻止的嗎?為什麼算法正在做它試圖阻止自己的事情?

我們試圖阻止的攻擊是中間人攻擊;這是攻擊者(假定能夠修改消息)可以介入協商的地方。實際上,當 Alice 試圖與 Bob 談判時,Mallet 介入,因此 Alice 實際上與 Mallet 談判。然後,Mallet 可以與 Bob(冒充 Alice)協商,然後將他從 Alice 獲得的任何流量轉發給 Bob,並將他從 Bob 獲得的任何流量轉發給 Alice。就 Alice 和 Bob 而言,看起來他們有一個安全的連接(但是 Mallet 可以監聽他們所有的流量,並且還可以隨意修改它)。

為了防止這種情況發生,Alice 和 Bob 需要能夠做一些 Mallet 做不到的事情。有幾種可能的方法,包括:

  • Alice 已經知道 Bob 的公鑰,而 Bob 已經擁有 Alice 的公鑰。
  • Alice 和 Bob 都擁有來自受信任的證書頒發機構的證書。

還有其他可能性;無論這兩個與您的問題有關。

然而,大多數解決方案似乎只是通過不安全的通道發送 ECDSA 公鑰。

我當然希望不會;如您所見,Mallet 可以生成他自己的 ECDSA 公鑰,因此這對防止 MITM 攻擊沒有任何作用。

這些解決方案實際上是讓 Alice 和 Bob 擁有證書。證書本質上是一條消息“Alice 的公鑰是

$$ this $$, signed Trent”(其中 Trent 是友好鄰域 CA)。在協商發生之前,Trent 向 Alice 提供了她的證書(基於 Alice 的公鑰),Trent 還向 Alice 提供了他的公鑰。在協商期間,Alice 將她的證書提供給 Bob;Bob然後可以驗證 a) 證書中列出的身份是 Bob 認為他正在與之交談的那個人,並且 b) 它實際上是由 Trent 簽名的。如果兩者都是真實的,那麼 Bob 就知道 Alice 的公鑰,並且可以在協議。Mallet 無法生成這樣的證書;Trent 不會向 Mallet 提供將 Alice 列為所有者的證書;Mallet 無法重用 Alice 的證書(因為他不知道 Alice 的私鑰);Mallet 無法生成自己的證書(如他不知道 Trent 的私鑰)。 因此,一旦 Bob 知道 Alice 的公鑰(同樣,Alice 知道 Bob 的公鑰),他們就可以使用彼此的公鑰來驗證 ECDH 交換,一切都很好。

我想提出的另一件事:

在我的實現中,我想將靜態密鑰對硬編碼到雙方

如果您實際上沒有使用證書頒發機構,那麼您可以讓雙方生成一個長期的 ECDH 密鑰對,並將 Alice 的公鑰安裝在 Bob 上,並將 Bob 的公鑰安裝在 Alice 上。這也將挫敗 MITM 攻擊(因為 Mallet 無法用自己的公鑰替換公鑰)。更新密鑰有一個問題(我們永遠不想要一個不朽的密鑰;每個密鑰都應該有一個到期日期),並且這裡沒有明顯的方法來更新密鑰。

當然,如果這就是您正在做的事情,並且您對此感到滿意,那麼不清楚為什麼您實際上需要將公鑰加密帶到桌面上。如果 Alice 和 Bob 都共享一個消息驗證碼 (MAC) 密鑰,那麼在協商過程中,Alice 和 Bob 可以交換 nonce,然後雙方計算 $ \text{MAC}{key}( Nonce{Alice} | Nonce_{Bob} ) $ ; 這是一個共享秘密,比 ECDH 更快、更容易。

另一個問題是潛在的設備危害攻擊(可能與您相關,也可能與您無關)。在這次攻擊中,我們假設 Mallet 闖入 Alice,並了解了她的所有秘密。現在,接下來,Mallet 可以假裝是 Alice(我們對此無能為力)。然而,使用 ECDH 預配置的私鑰(或共享的 MAC 密鑰),Mallet 可以做的是返回並解密 Alice 之前記錄的通信(因為 Mallet 現在密鑰是 Alice 的私鑰)。相反,在 ECDSA/ECDH 場景中(Alice 和 Bob 每次都隨機選擇 ECDH 密鑰),他不能(假設 Alice 完成後將她的所有密鑰材料歸零)。

現在,很明顯,ECDSA/ECDH 協議將比僅使用 ECDH 的協議更複雜。您的情況是否需要額外的並發症?那,你必須自己決定。

引用自:https://crypto.stackexchange.com/questions/48500