跳至內容

使用者:YFdyh000/PBKDF2

維基百科,自由的百科全書

密碼學中,基於密碼的密鑰派生函數Password-Based Key Derivation Function)是具有可滑動計算成本的密鑰派生函數,用於減少面對暴力攻擊時的脆弱性。

PBKDF2是RSA實驗室公共密鑰密碼標準(PKCS)系列的一部分,尤其是PKCS #5 v2.0,也已作為Internet工程任務組的[rfc:2898 RFC 2898發布] 。PBKDF2取代了PBKDF1,後者只能生成最長160位的派生密鑰。 [1] RFC 8018 (PKCS #5 v2.1)於2017年發布,建議使用PBKDF2進行密碼的散列化。 [2]

目的和操作

[編輯]

PBKDF2採用一個偽隨機函數(如hash-based message authentication code)來輸入password口令短語,伴隨一個salt值,並重複此過程許多次,生成一個派生的密鑰,然後它可以用作之後過程中的cryptographic key。增加的計算工作時密碼破解更加困難,這被稱為key stretching

當2000年編寫該標準時,建議的最小迭代次數為1000,但該參數有意隨着CPU速度提升而增加。2005年的Kerberos標準中建議做4096次迭代。[3]據稱,蘋果公司在iOS 3上使用2000,在iOS 4上使用10000[4]而LastPass在2011年為JavaScript客戶端使用了5000次迭代,為服務器端散列使用100000次迭代。 [5]

PBKDF2迭代過程的算法表示。

在密碼中加入「鹽」能預防使用預先計算的哈希值(彩虹表)進行攻擊,因為這樣意味着必須單獨測試各個密碼,而不是一次生成判斷所有密碼。該標準建議鹽的長度至少為64位。 [6]美國國家標準技術研究院建議128位的鹽長度。 [7]

密鑰派生過程

[編輯]

PBKDF2密鑰派生函數有五個輸入參數: [8]

DK = PBKDF2(PRF, Password, Salt, c, dkLen)

其中:

  • PRF 是具有輸出長度hLen的兩個參數的偽隨機函數(例如,鍵控HMAC)
  • Password是從中生成派生密鑰的主密碼
  • 是位序列,稱為加密鹽
  • c是所需的迭代次數
  • dkLen是派生密鑰的所需位長
  • DK是生成的派生密鑰

派生密鑰DK的每個hLen位塊T i的計算如下(帶有+標記字符串連接): [[Category:口令认证]]

  1. ^ <bkaliski@rsasecurity.com>, Burt Kaliski. PKCS #5: Password-Based Cryptography Specification Version 2.0. tools.ietf.org. [2015-10-23]. 
  2. ^ PKCS #5: Password-Based Cryptography Specification Version 2.1. tools.ietf.org. 
  3. ^ Kenneth Raeburn. Advanced Encryption Standard (AES) Encryption for Kerberos 5. tools.ietf.org. [2015-10-23]. 
  4. ^ Smartphone Forensics: Cracking BlackBerry Backup Passwords. Advanced Password Cracking – Insight (ElcomSoft). [2015-10-23]. 
  5. ^ LastPass Security Notification. The LastPass Blog. [2015-10-23]. 
  6. ^ K. Moriarty. RFC 8018 - PKCS #5: Password-Based Cryptography Specification, Version 2.1. tools.ietf.org. [2018-01-24].  無效|subscription=etal (幫助)
  7. ^ Meltem Sönmez Turan, Elaine Barker, William Burr, and Lily Chen. NIST SP 800-132, Recommendation for Password-Based Key Derivation Part 1: Storage Applications (PDF). www.nist.gov. [2018-12-20]. 
  8. ^ RFC 2898