使用者: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上使用000 ; 10[4]而LastPass在2011年為JavaScript客戶端使用了5000次迭代,為伺服器端散列使用000次迭代。 100[5]
在密碼中加入「鹽」能預防使用預先計算的哈希值(彩虹表)進行攻擊,因為這樣意味著必須單獨測試各個密碼,而不是一次生成判斷所有密碼。該標準建議鹽的長度至少為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:口令认证]]
- ^ <bkaliski@rsasecurity.com>, Burt Kaliski. PKCS #5: Password-Based Cryptography Specification Version 2.0. tools.ietf.org. [2015-10-23].
- ^ PKCS #5: Password-Based Cryptography Specification Version 2.1. tools.ietf.org.
- ^ Kenneth Raeburn. Advanced Encryption Standard (AES) Encryption for Kerberos 5. tools.ietf.org. [2015-10-23].
- ^ Smartphone Forensics: Cracking BlackBerry Backup Passwords. Advanced Password Cracking – Insight (ElcomSoft). [2015-10-23].
- ^ LastPass Security Notification. The LastPass Blog. [2015-10-23].
- ^ K. Moriarty. RFC 8018 - PKCS #5: Password-Based Cryptography Specification, Version 2.1. tools.ietf.org. [2018-01-24]. 無效
|subscription=etal
(幫助) - ^ 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].
- ^ RFC 2898