Key-Exchange

安全的密碼驗證密鑰交換,允許將密碼儲存為散列,但不會使散列與密碼等效

  • December 5, 2018

是否有任何安全的密碼驗證密鑰交換允許將密碼儲存為散列,但不會使散列與密碼等效?這對於許多身份驗證應用程序很有用。

是否有任何安全的密碼驗證密鑰交換允許將密碼儲存為散列,但不會使散列與密碼等效?

是的,它們被稱為增強或非對稱密碼認證密鑰交換 (aPAKE)。它們通常建立在使用者知道密碼並且伺服器可能只儲存一個“驗證者”的場景之上與正確的驗證者。

這種方法的擴展還考慮了使用者擁有第二個設備(例如智能卡或電話)以及他的主要和次要設備之間的連接的情況,有關協議的概述,請參見此處

目前最著名的 aPAKE 標準是OPAQUE,它已經宣布很快會獲得 IRTF / CFRG 草案,並希望有朝一日成為 RFC,請參閱此電子郵件執行緒

OPAQUE 的基本思想如下:

  1. 註冊後,伺服器會生成一個隨機密鑰 $ k $ 和兩個 DH 密鑰對,並將其中一個私鑰以及隨機密鑰和兩個公鑰明文儲存併計算 $ H(pw,H’(pw)^k) $ 使用隨機密鑰獲得一個加密密鑰,該密鑰用於對完整的第二個 DH 密鑰及其自己的 DH 公鑰執行經過身份驗證的加密。
  2. 根據登錄請求,客戶端選擇自己的 DH 公鑰以及用於對密碼的內部散列求冪的隨機密鑰,即 $ H(pw) $ .
  3. 然後,伺服器檢索註冊時儲存的數據,生成新的 DH 密鑰對,將接收到的取冪散列與儲存的 $ k $ 併計算其長期秘密 DH 密鑰、其短期 DH 秘密密鑰、接收到的短期 DH 公鑰和儲存的長期 DH 公鑰的密鑰交換(推薦 HMQV)。
  4. 客戶端從 2. 撤消冪運算並評估 $ H(pw,X) $ 結果上。這可以是例如將第二個輸入作為鹽的記憶硬散列函式。它使用生成的密鑰來解密儲存的密文,並自己計算密鑰交換。

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