Key-Derivation

PKCS12 密鑰派生

  • December 5, 2020

在舊版本的 PKCS#12 中,有一個密鑰派生函式,據我所知,該函式在該標準之外的任何地方都沒有使用:

https://www.rfc-editor.org/rfc/rfc7292#appendix-B

那討論它。所以在那個標準中有一個循環:

  6.  For i=1, 2, ..., c, do the following:

      A.  Set A2=H^r(D||I). (i.e., the r-th hash of D||1,
          H(H(H(... H(D||I))))

      B.  Concatenate copies of Ai to create a string B of length v
          bits (the final copy of Ai may be truncated to create B).

      C.  Treating I as a concatenation I_0, I_1, ..., I_(k-1) of v-bit
          blocks, where k=ceiling(s/v)+ceiling(p/v), modify I by
          setting I_j=(I_j+B+1) mod 2^v for each j.

  7.  Concatenate A_1, A_2, ..., A_c together to form a pseudorandom
      bit string, A.

有一個針對 RFC 的公開勘誤表表明步驟 A 應該更像這樣:

Set A2=H^r(D||I). (i.e., the r-th hash of D||I, H(H(H(... H(D||I))))

IE。它應該替換D||1D||I. 我的問題是…應該A2替換為Ai? 因為如果不是,那麼它似乎不會在A2任何地方實際使用,而AIis。

當然,即使這樣做了……如果我每次都被改變,那麼在我看來你必須做很多雜湊。就像c您需要多次執行雜湊操作而不是執行雜湊操作一樣:

$$ \sum _{ n=1 }^{ c }{ n } $$

這是正確的解釋嗎?

是的,它應該是 Ai,或者更準確地說是 A_i 表示下標。請注意,i(塊下標)不是 I(加鹽密碼輸入)。我在 2 月將其送出給 rfc-editor(請參閱https://security.stackexchange.com/questions/112627/what-password-based-key-derivation-does-pkcs-12-use),他們說他們要修理它; 估計是丟了

為了確認,您可以在此處查看來自 RSAlabs-now-EMC 的源文件,至少只要戴爾沒有像多年來 EMC 破壞 RSAlabs 網站那樣開始破壞 EMC 網站。

儘管現在推薦使用 PKCS5v2 中的 PBES2/PBKDF2(以及其他選項,例如 bcrypt、scrypt、Argon2 甚至更多),但仍然使用 PKCS12 PBE。

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