정의
PBKDF2(Password-Based Key Derivation Function 2)는 사용자가 입력한 비밀번호와 임의의 소금(salt) 값을 이용해 고정된 길이의 암호화 키를 생성하는 표준화된 키 파생 함수이다. 주로 비밀번호 기반 인증 시스템에서 비밀번호를 저장하거나 암호화 키를 도출할 때 사용되며, NIST SP 800‑132와 RFC 2898에 정의되어 있다.
개요
PBKDF2는 HMAC(해시 기반 메시지 인증 코드)를 내부적으로 사용하며, 입력 파라미터로 비밀번호, 소금, 반복 횟수(iteration count), 출력 키 길이 등을 받는다. 반복 횟수를 크게 설정함으로써 키 도출 연산에 소요되는 계산량을 증가시켜 무차별 대입(brute‑force) 공격에 대한 저항성을 높인다. 구현은 다양한 프로그래밍 언어와 암호 라이브러리(OpenSSL, Bouncy Castle, Crypto++ 등)에서 제공된다.
어원/유래
- PBKDF*는 “Password‑Based Key Derivation Function”의 약어이며, “2”는 이 함수가 RFC 2898에 명시된 두 번째 버전임을 나타낸다. 첫 번째 버전인 PBKDF1은 RFC 2898 초안에서 제시되었지만, 출력 길이 제한 등 여러 제한으로 인해 실제 사용에서는 PBKDF2가 표준으로 자리 잡았다.
특징
| 구분 | 내용 |
|---|---|
| 핵심 알고리즘 | HMAC‑SHA‑1, HMAC‑SHA‑256, HMAC‑SHA‑512 등 해시 함수와 결합된 HMAC을 사용 |
| 소금(salt) | 공격자가 사전 계산된 레인보우 테이블을 활용하지 못하도록 무작위 값을 반드시 포함 |
| 반복 횟수 | 보안 요구 수준에 따라 조정 가능; 일반적으로 수천에서 수십만 회 정도 사용 |
| 출력 길이 | 사용 목적에 따라 가변적이며, 128비트, 256비트 등 원하는 크기로 설정 가능 |
| 보안성 | 높은 반복 횟수와 소금을 결합함으로써 비밀번호 해시화에 대한 저항성을 제공 |
| 표준화 | NIST SP 800‑132, RFC 2898에 명시된 국제 표준 |
| 응용 분야 | 비밀번호 저장, 파일 및 디스크 암호화, TLS/SSL 세션 키 도출, 모바일 기기 보안 등 |
관련 항목
- PBKDF1 – PBKDF2 이전에 제안된 키 파생 함수, 출력 길이 제한이 있음.
- HKDF (HMAC‑based Extract-and‑Expand Key Derivation Function) – HMAC 기반의 다른 키 파생 방식.
- bcrypt, scrypt – 메모리·CPU 비용을 조절해 보안을 강화하는 비밀번호 해시 함수.
- NIST SP 800‑132 – 비밀번호 기반 암호키 관리에 관한 기술 가이드라인.
- RFC 2898 – PKCS 5 v2.0 표준, PBKDF2를 정의.
※ 본 문서는 최신 공개 문헌과 표준 문서에 기반하여 작성되었으며, 특정 구현 세부 사항은 라이브러리마다 상이할 수 있다.