Key-Exchange
安全的密碼驗證密鑰交換,允許將密碼儲存為散列,但不會使散列與密碼等效
是否有任何安全的密碼驗證密鑰交換允許將密碼儲存為散列,但不會使散列與密碼等效?這對於許多身份驗證應用程序很有用。
是否有任何安全的密碼驗證密鑰交換允許將密碼儲存為散列,但不會使散列與密碼等效?
是的,它們被稱為增強或非對稱密碼認證密鑰交換 (aPAKE)。它們通常建立在使用者知道密碼並且伺服器可能只儲存一個“驗證者”的場景之上與正確的驗證者。
這種方法的擴展還考慮了使用者擁有第二個設備(例如智能卡或電話)以及他的主要和次要設備之間的連接的情況,有關協議的概述,請參見此處。
目前最著名的 aPAKE 標準是OPAQUE,它已經宣布很快會獲得 IRTF / CFRG 草案,並希望有朝一日成為 RFC,請參閱此電子郵件執行緒。
OPAQUE 的基本思想如下:
- 註冊後,伺服器會生成一個隨機密鑰 $ k $ 和兩個 DH 密鑰對,並將其中一個私鑰以及隨機密鑰和兩個公鑰明文儲存併計算 $ H(pw,H’(pw)^k) $ 使用隨機密鑰獲得一個加密密鑰,該密鑰用於對完整的第二個 DH 密鑰及其自己的 DH 公鑰執行經過身份驗證的加密。
- 根據登錄請求,客戶端選擇自己的 DH 公鑰以及用於對密碼的內部散列求冪的隨機密鑰,即 $ H(pw) $ .
- 然後,伺服器檢索註冊時儲存的數據,生成新的 DH 密鑰對,將接收到的取冪散列與儲存的 $ k $ 併計算其長期秘密 DH 密鑰、其短期 DH 秘密密鑰、接收到的短期 DH 公鑰和儲存的長期 DH 公鑰的密鑰交換(推薦 HMQV)。
- 客戶端從 2. 撤消冪運算並評估 $ H(pw,X) $ 結果上。這可以是例如將第二個輸入作為鹽的記憶硬散列函式。它使用生成的密鑰來解密儲存的密文,並自己計算密鑰交換。