Protocol-Design
使用社會主義百萬富翁協議從秘密回答問題的密鑰建立
我讀過這篇文章告訴共享低熵秘密(例如問題的秘密答案)的兩方可以在社會主義百萬富翁協議的幫助下使用它在經典的不安全通道上建立高熵共享密鑰.
這是如何實現的?從數量上看,MitM 攻擊至少成功一次的機率是多少? $ n $ 試圖?
或者換一種方式問,但同等地問:如何從社會主義百萬富翁協議 (SMP) 建構密碼驗證密鑰交換(PAKE)?
我讀過這篇文章告訴共享低熵秘密(例如問題的秘密答案)的兩方可以在社會主義百萬富翁協議的幫助下使用它在經典的不安全通道上建立高熵共享密鑰.
首先,我認為這通常不會這樣做,因為 SMP 協議往往不會比密鑰交換快,而且您可以通過簡單地事後比較結果密鑰是否為相等(例如,通過將它們用於對稱傳輸層並雙向發送預先商定的值)。
從數量上看,MitM 攻擊至少成功一次的機率是多少? $ n $ 試圖?
我想任何這樣的協議都具有與您的標準 PAKE 協議類似的安全屬性,也就是說,如果您闖入其中一方,遊戲就結束了,但是您不會從成績單中了解有關密碼的任何資訊,您只能測試一個猜測每次連接嘗試的密碼。所以如果選擇密碼的過程有熵 $ E $ ,您正確的機會(每次線上連接嘗試)應該是 $ 2^{-E} $ .
這是如何實現的?
我剛剛提出的一種協議如下:
- 在兩方之間執行未經身份驗證的 Diffie-Hellman $ A $ 和 $ B $ 獲取共享的秘密 $ m_A,m_B $ . 請注意,如果有活躍的中間人攻擊者 $ m_A\neq m_B $ .
- 讓 $ p $ 是雙方共享的密碼。制定 $ \langle p,m_A\rangle $ 和 $ \langle p,m_B\rangle $ ,例如作為 $ \langle x,y\rangle=\operatorname{HMAC-SHA256}_y(x) $ ,即以某種方式將它們配對,因此結果 $ \langle\cdot,\cdot\rangle $ 只能由知道這兩種輸入的人學習。
- 之間執行 SMP 協議 $ A $ 和 $ B $ 並讓他們比較 $ \langle p,m_B\rangle $ 和 $ \langle p,m_A\rangle $ 為了平等。如果結果為 1,則輸出 $ m_A=m_B=m $ 作為共享秘密,如果結果是 $ 0 $ , 輸出 $ \perp $ ,這是一個錯誤。
這個想法是,對 DH 的攻擊會導致雙方看到 SMP 協議應該揭示的不同共享秘密,同時確保如果雙方實際上到達相同的 DH 秘密,他們也都知道相同的密碼並因此得到身份驗證通過密碼的知識。
當然,上述內容並不構成正式的安全分析,因此如果沒有在生產中進行事先正式的協議分析,則不應使用此(低效)協議!