PBKDF2
암호학에서 PBKDF1 및 PBKDF2(Password-Based Key Derivation Function 1 및 2)는 무차별 대입 공격에 대한 취약성을 줄이는 데 사용되는 슬라이딩 계산 비용이 있는 키 유도 함수이다.[1]
PBKDF2는 RSA Laboratories의 PKCS(공개 키 암호 표준) 시리즈, 특히 PKCS #5 v2.0의 일부이며 국제 인터넷 표준화 기구의 RFC 2898로도 게시되었다. 이는 최대 160비트 길이의 유도 키만 생성할 수 있는 PBKDF1을 대체한다.[2] 2017년에 게시된 RFC 8018(PKCS #5 v2.1)에서는 비밀번호 해싱에 PBKDF2를 권장한다.[3]
목적 및 운영
[편집]PBKDF2는 입력된 비밀번호 또는 패스프레이즈에 솔트 (암호학) 값과 함께 HMAC(해시 기반 메시지 인증 코드)와 같은 의사 난수 기능을 적용하고 이 과정을 여러 번 반복하여 유도 키를 생성한 후 후속 작업에서 암호화 키로 사용할 수 있다. 추가된 계산 작업으로 인해 비밀번호 크래킹이 훨씬 더 어려워지며 이를 키 스트레칭이라고 한다.
2000년에 표준이 작성되었을 때 권장되는 최소 반복 횟수는 1,000회였지만, 매개변수는 CPU 속도가 증가함에 따라 시간이 지남에 따라 증가하도록 의도되었다. 2005년 커버로스 표준에서는 4,096번의 반복을 권장했다.[1] 애플은 iOS 3에 2,000개, iOS 4[4]에 10,000개를 사용한 것으로 알려졌다. 2011년 라스트패스는 자바스크립트 클라이언트에 5,000번의 반복을 사용했고 서버 측 해싱에 100,000번의 반복을 사용했다.[5] 2023년에 OWASP는 PBKDF2-HMAC-SHA256에는 600,000번, PBKDF2-HMAC-SHA512에는 210,000번의 반복을 사용할 것을 권장했다.[6]
비밀번호에 솔트를 추가하면 공격에 미리 계산된 해시(레인보 테이블)를 사용하는 능력이 줄어들고, 여러 비밀번호를 한꺼번에 테스트하는 것이 아니라 개별적으로 테스트해야 한다는 의미이다. 공개 키 암호화 표준에서는 최소 64비트의 솔트 길이를 권장한다.[7] 미국 국립표준기술연구소에서는 최소 128비트의 솔트 길이를 권장한다.[8]
각주
[편집]- ↑ 가 나 Raeburn, Kenneth (2005). “Advanced Encryption Standard (AES) Encryption for Kerberos 5”. 《tools.ietf.org》. doi:10.17487/RFC3962. RFC 3962. 2015년 10월 23일에 확인함.
- ↑ Kaliski, Burt (2000). “PKCS #5: Password-Based Cryptography Specification, Version 2.0”. 《tools.ietf.org》. doi:10.17487/RFC2898. RFC 2898. 2015년 10월 23일에 확인함.
- ↑ Moriarty, Kathleen; 외. (2017). Moriarty, K, 편집. “PKCS #5: Password-Based Cryptography Specification, Version 2.1”. 《tools.ietf.org》. doi:10.17487/RFC8018. RFC 8018.
- ↑ “Smartphone Forensics: Cracking BlackBerry Backup Passwords”. 《Advanced Password Cracking – Insight》. ElcomSoft. 2010년 9월 30일. 2015년 10월 23일에 확인함.
- ↑ “LastPass Security Notification”. 《The LastPass Blog》. 2011년 5월 5일. 2023년 1월 31일에 확인함.
- ↑ “Password Storage Cheat Sheet”. 《OWASP Cheat Sheet Series》. 2021년 8월 15일. 2023년 1월 23일에 원본 문서에서 보존된 문서. 2023년 1월 23일에 확인함.
- ↑ Moriarty, Kathleen; 외. (2017). Moriarty, K, 편집. “PKCS #5: Password-Based Cryptography Specification, Version 2.1: Section 4. Salt and Iteration Count”. 《tools.ietf.org》. doi:10.17487/RFC8018. RFC 8018. 2018년 1월 24일에 확인함.
- ↑ Sönmez Turan, Meltem; Barker, Elaine; Burr, William; Chen, Lily. “Recommendation for Password-Based Key Derivation Part 1: Storage Applications” (PDF). 《NIST》. SP 800-132. 2018년 12월 20일에 확인함.
외부 링크
[편집]- “PKCS #5 v2.1” (PDF). 《RSA Laboratories》. 2017년 4월 11일에 원본 문서 (PDF)에서 보존된 문서.
- RFC 2898 – Specification of PKCS #5 v2.0.
- RFC 6070 – Test vectors for PBKDF2 with HMAC-SHA1.
- NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation