Rsa

PyCryptodome 的帶有密碼的 export_key 是否安全?

  • February 20, 2021

當使用 PyCryptodome、DER 格式、PKCS#8 和適當的強密碼導出私鑰時,導出的密鑰是否足夠安全,可以放置在您通常不希望儲存敏感資訊的地方,例如數據庫或硬碟上?

PyCryptodome.readthedocs.io

對於“DER”,使用 PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC 方案。執行以下操作:

  1. 一個 16 字節的三重 DES 密鑰是使用 Crypto.Protocol.KDF.PBKDF2() 與 8 字節的鹽和 Crypto.Hash.HMAC 的 1 000 次迭代從密碼片語派生而來的。
  2. 私鑰使用 CBC 加密。
  3. 加密密鑰根據 PKCS#8 進行編碼。

嗯,這有點安全。沒有嚴重的問題,但有幾個問題:

  • 3DES - 由三輪 DES 密碼組成的密碼。DES 的密鑰大小太低,只有 56 位,但執行 3 次(首先在加密方向,然後是解密方向,然後再次加密,因此縮寫為“EDE”)使密鑰大小達到 168 位,儘管有效的密鑰空間只有 112 位,這是由於適用於這種類型的構造的中間相遇攻擊。儘管它已被棄用,但 3DES 不像 DES 那樣被認為是可破壞的。只是有更快、更安全的替代方案。

3DES 的另一個問題是它具有 64 位的小塊大小。隨著更多數據在單個密鑰下加密,這會導致嚴重的安全問題。因為私鑰很小(大小僅以千字節為單位),所以小塊大小不是問題。

  • 小鹽- 鹽的大小太小,只有 8 個字節(64 位)。這在實踐中不太可能是一個嚴重的問題。攻擊者需要建構一個非常大的彩虹表來攻擊 64 位鹽。在使用 12 位鹽的時代,使用隨機鹽為雜湊建構彩虹表是可能的,但在今天使用 64 位鹽時卻不行。不過我推薦128位。
  • 低 PBKDF2 迭代- PBKDF2 是一個緩慢散列密碼的函式,迫使任何試圖破解散列的人使用相同的慢速函式。PBKDF2 的 1000 次迭代並不多。這比直接使用密碼的雜湊值要好得多,但並不理想。最好使用至少 100,000 次迭代,或者甚至切換到像 Argon2 這樣的高級記憶體硬 KDF。

總的來說,我會說它可能足夠安全,但它並不理想,如果我能提供幫助,我也不會使用它。

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