PBKDF2

암호학에서 PBKDF1 및 PBKDF2(Password-Based Key Derivation Function 1 및 2)는 무차별 대입 공격에 대한 취약성을 줄이는 데 사용되는 슬라이딩 계산 비용이 있는 키 유도 함수이다.

PBKDF2는 RSA Laboratories의 PKCS(공개 키 암호 표준) 시리즈, 특히 PKCS #5 v2.0의 일부이며 국제 인터넷 표준화 기구의 RFC 2898로도 게시되었다. 이는 최대 160비트 길이의 유도 키만 생성할 수 있는 PBKDF1을 대체한다. 2017년에 게시된 RFC 8018(PKCS #5 v2.1)에서는 비밀번호 해싱에 PBKDF2를 권장한다.

 목적 및 운영 
섬네일|비밀번호 기반 키 도출 함수 2의 반복 과정을 알고리즘으로 표현한 것이다.
PBKDF2는 입력된 비밀번호 또는 패스프레이즈에 솔트 (암호학) 값과 함께 HMAC(해시 기반 메시지 인증 코드)와 같은 의사 난수 기능을 적용하고 이 과정을 여러 번 반복하여 유도 키를 생성한 후 후속 작업에서 암호화 키로 사용할 수 있다. 추가된 계산 작업으로 인해 비밀번호 크래킹이 훨씬 더 어려워지며 이를 키 스트레칭이라고 한다.

2000년에 표준이 작성되었을 때 권장되는 최소 반복 횟수는 1,000회였지만, 매개변수는 CPU 속도가 증가함에 따라 시간이 지남에 따라 증가하도록 의도되었다. 2005년 커버로스 표준에서는 4,096번의 반복을 권장했다. 애플은 iOS 3에 2,000개, iOS 4에 10,000개를 사용한 것으로 알려졌다. 2011년 라스트패스는 자바스크립트 클라이언트에 5,000번의 반복을 사용했고 서버 측 해싱에 100,000번의 반복을 사용했다. 2023년에 OWASP는 PBKDF2-HMAC-SHA256에는 600,000번, PBKDF2-HMAC-SHA512에는 210,000번의 반복을 사용할 것을 권장했다.

비밀번호에 솔트를 추가하면 공격에 미리 계산된 해시(레인보 테이블)를 사용하는 능력이 줄어들고, 여러 비밀번호를 한꺼번에 테스트하는 것이 아니라 개별적으로 테스트해야 한다는 의미이다. 공개 키 암호화 표준에서는 최소 64비트의 솔트 길이를 권장한다. 미국 국립표준기술연구소에서는 최소 128비트의 솔트 길이를 권장한다.

 각주 

 외부 링크 

  – Specification of PKCS#5 v2.0.
  – Test vectors for PBKDF2 with HMAC-SHA1.
 NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation

분류:암호 표준