為什麼在密鑰建立方案中需要使用臨時密鑰來證明擁有靜態私鑰
在NIST 800-56A rev3 “Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography”中的第 5.6.2.2.3.2 節“收件人獲得保證”中
$$ of the Static Private Key $$直接來自聲稱的所有者(即對方)”它需要“公鑰接收方”在密鑰協商交易中滿足2個條件才能證明對方擁有相應的私鑰。基本上PKR需要貢獻一個臨時密鑰(條件 1)並確認約定的密鑰也由另一方共享(條件 2)。 據我了解,只要滿足這兩個條件,我們就不需要通過其他方法顯式檢查私鑰擁有,即不需要額外的挑戰/響應,因為計算已經證明擁有。然後將滿足這兩個條件的方案列為所有 C(1e, 2s) 和 C(1e, 1s) 方案,但沒有要求“應採用以下之一”的 C(2e, 2s) 方案.
更令人困惑的是,在 C(1e, 2s) 方案的假設中,它需要假設 6“靜態公鑰的接收者已獲得保證,即其(聲稱的)所有者是(或曾經)擁有相應的靜態私有密鑰密鑰,如第 5.6.2.2.3 節中所述。” “應該是真的”。
我的問題是:
- 密鑰確認的密鑰協議計算也證明了靜態私鑰的擁有,所以不需要向對方提出其他問題,這樣對嗎?
- 具有雙邊密鑰確認的 C(2e, 2s) 方案也應該滿足給定條件,對吧?
- 在我看來,具有雙邊密鑰確認的 C(0e, 2s) 方案也應該證明擁有靜態私鑰,為什麼需要臨時密鑰?
我們在此嘗試使用此類機制防止的一種攻擊稱為“密鑰洩露模擬”,其中一方獲取了您的私鑰(而不是另一方的)並試圖冒充您的其他方。
現在,我將嘗試以不同的順序解決您的不同問題,因為這對我來說更有意義,並且應該有助於對潛在條件的全球理解:
Q.3
- 在我看來,具有雙邊密鑰確認的 C(0e, 2s) 方案也應該證明擁有靜態私鑰,為什麼需要臨時密鑰?
不,當使用 2 個靜態密鑰和 0 個臨時密鑰時,攻擊者只知道您的私鑰,但不知道對方的私鑰能夠計算與您相同的共享密鑰。
問題在文本中有些隱藏,例如在 6.3.3.3 中它說:
密鑰確認過程的成功完成為每一方提供了保證,對方已經導出了相同的秘密 Z 值
因此,您得到的確認實際上只是派生的秘密與您的相同,而不是對方實際上使用了他們聲稱擁有的秘密靜態密鑰的知識。
所以在這裡你可以確保沒有中間人篡改你的密鑰協議:你們都得到了相同的商定密鑰。
為什麼需要臨時密鑰?
因為它是我們剛剛創建的臨時密鑰,所以對方不會知道其對應的臨時密鑰(假設對手只知道您的靜態密鑰)。
因此,在密鑰協商期間,由於您將秘密臨時密鑰與其(聲稱的)公共靜態密鑰相結合,如果他們不知道他們的(聲稱的)秘密靜態密鑰**,他們將無法執行與**您使用時相同的派生您發送給他們的臨時公鑰。
使用臨時密鑰,您通常會發生以下情況:
- 你將你的臨時密鑰與他們的(聲稱的)靜態公鑰結合起來,你得到了一個秘密 $ Z_e $
- 你將你的靜態密鑰與他們的(聲稱的)靜態公鑰結合起來,你得到了一個秘密 $ Z_s $
- 你同時使用 $ Z_e $ 和 $ Z_s $ 在您的推導過程中獲取最終的共享密鑰 $ Z $
- 您使用密鑰確認過程來確保你們都派生了相同的共享密鑰 $ Z $
另一方或多或少做同樣的事情,但他們正在使用您的公共臨時密鑰
(這是一個總結的經典 C(1e,2s) 密鑰協議。)
現在,知道您的密鑰的對手能夠模仿步驟 2,但無法模仿步驟 1,因此如果您使用臨時密鑰,則無法正確執行步驟 3 並將在步驟 4 中被*擷取。*但是,如果您沒有臨時密鑰,那麼您僅依賴第 3 步中的第 2 步,因此在第 4 步中不會檢測到模擬。
這確實是 5.6.2.2.3.2 第一個條件中所說的要點(強調我的):
- 靜態公鑰的接收者向密鑰協商過程提供一個臨時公鑰,該公鑰 旨在在由聲稱的所有者執行的計算中與聲稱的所有者(即另一方的)靜態私鑰進行算術組合。(如果採用了適當的密鑰協商方案, 則聲稱的所有者將面臨挑戰,以通過在交易期間成功執行這些計算來證明其靜態私鑰的目前知識。)
這意味著需要執行第 1 步和第 3 步。
然後我們有第二個條件:
- 靜態公鑰的接收者也是密鑰確認接收者,聲稱的所有者(即,另一方)充當密鑰確認提供者。(通過成功提供密鑰確認,聲稱的所有者可以證明收到的靜態公鑰的所有權以及相應靜態私鑰的目前知識。)
這基本上意味著步驟 4 必鬚髮生,從而保證密鑰派生過程按預期進行,從而保證步驟 1 不會被不知道接收到的靜態公共的秘密靜態密鑰的人“偽造”密鑰,而是您自己的秘密靜態密鑰。
Q.2
- 具有雙邊密鑰確認的 C(2e, 2s) 方案也應該滿足給定條件,對吧?
是的,他們通常會這樣做。它們實際上可以滿足更強大的版本,您還可以確保擁有(聲稱的)秘密臨時密鑰。如果你看5.6.2.2.4節,滿足條件2和3的C(2e,2s)方案自然滿足5.6.2.2.3.2的條件1和2。
請注意,那裡只引用了 DH 和 One Pass Unified 模型,這是因為正如 7.1 中所說(強調我的):
如果在與擁有受損靜態私鑰(或對應於該靜態私鑰的受損隱式簽名)的對手進行交易期間將採用 MQV 方案(MQV2 或完整 MQV),則對手僅限於偽裝成受損密鑰對的所有者(或作為對應於受損隱式簽名的靜態密鑰對的所有者)。然而,使用完全統一模型或 dhHybrid1 方案為攻擊者提供了額外的偽裝機會:如果攻擊者破壞了實體的靜態私鑰,那麼攻擊者可能能夠在完全統一模型或 dhHybrid1 期間冒充任何其他實體與該實體的基於密鑰協議的交易。
“兩次通過”形式的 MQV 方案已經能夠抵抗這些密鑰妥協模擬攻擊,並且不需要基於 DH 或基於完全統一模型的方案所做的額外步驟,詳見 5.6.2.2.3.2 和5.6.2.2.4。這大概就是為什麼它們沒有在 5.6.2.2.4 中明確引用的原因。
Q.1
最終我認為你的第一個問題的答案自然來自上面的細節:
- 密鑰確認的密鑰協議計算也證明了靜態私鑰的擁有,所以不需要向對方提出其他問題,這樣對嗎?
不,它沒有,它也可以證明擁有您的靜態私鑰。這就是為什麼我們需要短暫的關鍵步驟。