Authentication

我可以將 BIP39 密碼中的 SHA256 用於身份驗證憑據嗎?

  • November 13, 2021

我正在開發 E2E 加密應用程序。我正在使用 OpenPGP.js 並將公鑰和私鑰儲存在伺服器上。私鑰使用 BIP39 密碼加密,該密碼儲存在瀏覽器 LocalStorage 中,因此永遠不會發送到伺服器。但我還需要一些憑據供使用者登錄。

我的想法是從 BIP39 密碼片語製作 SHA256 並將其拆分為兩個字元串。第一個可用於“使用者名”,第二個可用於伺服器密碼。

這種方法安全嗎?據我所知應該是。BIP39 密碼具有足夠大的熵。我不能使用鹽,因為 BIP39 密碼應該是唯一要儲存的秘密。

這種方法有效嗎?謝謝你。

要回答您的實際問題,是的,您的想法聽起來很安全,但這不是通常的做法。

如果您有一個“主”機密並且需要將其拆分為兩個或多個機密,這樣任何一個機密的知識都不會提供有關主機密的資訊,那麼您想要的是RFC 5869中指定的 HKDF ,它使用 HMAC 生成來自單個秘密的任意數量的獨立秘密。

為此目的,HKDF 也有很多替代品。如果您未與 SHA-256 結婚,則可以使用支持“個性化雜湊”的 BLAKE2,它允許您混合個性化值。即使對於相同的輸入,唯一的個性化值也會產生唯一的雜湊值。

我可以將 BIP39 密碼中的 SHA256 用於身份驗證憑據嗎?

我的想法是從 BIP39 密碼片語製作 SHA256 並將其拆分為兩個字元串。

從安全設計的角度來看,這似乎是兩個嚴重的錯誤。

  • 那是使用像 SHA-256 這樣的快速雜湊函式來處理旨在被記憶的東西。相反,必須使用慢速密碼散列來進行密鑰拉伸。這些被稱為基於密碼的密鑰派生函式。如果可能的話,它必須是memory-hard。推薦的選擇包括 Argon2 或 scrypt。雖然BIP-39選擇 512 輪的 PBKDF2-HMAC-SHA512 很差(因為 HMAC 不是記憶體硬且適合 ASIC、FPGA 或 GPU 的大規模加速),但 SHA-256 大約快 1000 倍,因此更容易攻擊密碼破解者
  • 那就是將一個秘密的數據/熵分成兩個獨立的較短的秘密,可以單獨攻擊。類比:將進入建築物的 6 位數程式碼替換為兩個 3 位數程式碼,一個用於兩個連續門中的每一個。當一些秘密和令人難忘的東西必須被多次使用時,整個秘密必須進入一個基於密碼的密鑰派生函式,以及一些與預期用途相關的常數,如果可能的話,

注意:設計中可能存在其他錯誤。也許上述兩個明顯的問題確實被某些東西緩解了。我們無法確定,因為沒有說明安全目標、假設和詳細設計。

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