PBKDF2

위키백과, 우리 모두의 백과사전.

암호학에서 PBKDF1PBKDF2(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]

목적 및 운영[편집]

비밀번호 기반 키 도출 함수 2의 반복 과정을 알고리즘으로 표현한 것이다.

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]

각주[편집]

  1. Raeburn, Kenneth (2005). “Advanced Encryption Standard (AES) Encryption for Kerberos 5”. 《tools.ietf.org》. doi:10.17487/RFC3962. RFC 3962. 2015년 10월 23일에 확인함. 
  2. Kaliski, Burt (2000). “PKCS #5: Password-Based Cryptography Specification, Version 2.0”. 《tools.ietf.org》. doi:10.17487/RFC2898. RFC 2898. 2015년 10월 23일에 확인함. 
  3. Moriarty, Kathleen; 외. (2017). Moriarty, K, 편집. “PKCS #5: Password-Based Cryptography Specification, Version 2.1”. 《tools.ietf.org》. doi:10.17487/RFC8018. RFC 8018. 
  4. “Smartphone Forensics: Cracking BlackBerry Backup Passwords”. 《Advanced Password Cracking – Insight》. ElcomSoft. 2010년 9월 30일. 2015년 10월 23일에 확인함. 
  5. “LastPass Security Notification”. 《The LastPass Blog》. 2011년 5월 5일. 2023년 1월 31일에 확인함. 
  6. “Password Storage Cheat Sheet”. 《OWASP Cheat Sheet Series》. 2021년 8월 15일. 2023년 1월 23일에 원본 문서에서 보존된 문서. 2023년 1월 23일에 확인함. 
  7. 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일에 확인함. 
  8. 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