Passwords

使用者名和密碼:它是如何工作的?

  • July 27, 2016

假設客戶端 (Alice) 通過 TLS 1.2 訪問 HTTPS 網站 (Bob)。

  • Alice 用一些隨機數發送 Client Hello $ r_a $ .

  • Bob 向 Server Hello 發送另一個隨機數 $ r_b $ .

  • 假設他們選擇了一些密碼套件(例如 RSA、DHE、AES 和 SHA1)

  • Bob 發送伺服器證書

  • Bob 簽署並發送伺服器密鑰交換 ( $ g^b $ 在 Diffie-Hellman 中)

  • (Bob沒有請求客戶端證書,客戶端沒有。)

  • Alice 發送客戶端密鑰交換 ( $ g^a $ 在 Diffie Hellman 中)(沒有簽名)。

  • 現在兩者都共享“pre-master secret”,即( $ g^{ab}, r_a, r_b $ )

  • 接下來,對於密鑰派生,它們都使用偽隨機函式 (PRF) 從預主密鑰生成以下對稱密鑰:

    • 客戶端寫密鑰
    • 伺服器寫入密鑰
    • 客戶端 MAC 密鑰
    • 伺服器 MAC 密鑰
    • 客戶端寫入 IV(用於客戶端 AES 密碼)
    • 伺服器寫入 IV(用於伺服器 AES 密碼)
  • Alice 發送Change Cipher Spec和一個包含所有先前客戶端握手消息的 MAC的加密Finished 。

  • Bob 發送Change Cipher Spec和包含所有先前伺服器握手消息的 MAC的加密Finished 。

  • 他們交換一些加密的應用程序數據。

假設現在 Alice 開始使用她的使用者名和密碼登錄。接下來會發生什麼?他們是否會廢棄所有先前協商的密鑰並使用密碼驗證密鑰協議或基於密碼的密鑰派生切換到 TLS-PSK?您能否描述一下客戶端和伺服器如何使用使用者名和密碼?這其中使用了哪些步驟和算法?

“他們是否會廢棄所有先前協商的密鑰並使用

密碼驗證密鑰協議或基於密碼的密鑰派生切換到 TLS-PSK?”

不。

“接下來會發生什麼?”

“您能描述一下客戶端和伺服器如何使用使用者名和密碼嗎?”

“這其中使用了哪些步驟和算法?”

伺服器將查找使用者名的鹽,用它對密碼進行雜湊處理,然後將

結果與儲存的密碼進行比較。​ 如果相等,則認證成功,

否則認證失敗。​這裡使用的算法是PBKDF2bcryptscrypt

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