Encryption

enc 的 OpenSSL 命令行實用程序中的 KDF 參數是什麼?

  • February 16, 2020

我參考https://www.openssl.org/docs/manmaster/apps/enc.html並看到我可以明確設置的密鑰派生的唯一參數(不考慮-S設置鹽的顯而易見性)-md是 MD用於密鑰派生算法。

**現在的問題是:**在 cmd 模式下使用 OpenSSL 時,KDF 的其他隱式參數是什麼?特別是,它是否使用 PBKDF2?如果是這樣 - 最重要的問題是:KDF 迭代次數的預設值是多少?我找不到這些值。

我正在使用 OpenSSL cmd 實用程序來加密明文。結果使用另一個加密庫解密。我特別需要測試基於密碼的加密。

更清楚地說:我想保存生成的鹽和密碼,然後使用另一個使用 PBKDF2 和 HMAC_SHAxxx 算法的加密庫解密密文,並提供設置 KDF 輪數的機會。所以我希望有可能從密碼和鹽中派生出與 OpenSSL cmd 實用程序完全相同的密鑰。

最後,考慮到我的任務,也許依賴 cmd 實用程序的想法有點糟糕。如果是這樣,我也想听聽您對此的看法。

我有 OpenSSL 0.9.8zh 2016 年 1 月 14 日(OS X)。

OpenSSL 使用 OpenSSLEVP_BytesToKey專有的算法,將 salt 和迭代計數設置為 1。該算法是安全的;1 的迭代計數當然是不安全的(對於具有平均強度的密碼)。可以通過按名稱搜尋來找到其他語言/執行時的實現。

此頁面(在 nabble.com 上)解釋了一些有關從命令行訪問 PBKDF2 的資訊。它還表明 OpenSSL CLI 並不總是那麼認真。OpenSSL 主要是一個密碼庫,也可以從命令行使用。

可以在安全站點上的此問題的答案中找到包含 CLI 中的迭代計數的程式碼(未經我審查)。然而,該程式碼特定於使用 PKCS#8 標準加密的私鑰。

PGP 很可能更適合端到端密碼加密(我已經有一段時間沒有查看它了)。它肯定是專門為它創建的。

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