PBKDF2 (PBKDF2)

정보보안학
한 줄 정의: PBKDF2는 비밀번호에 임의값(salt)을 더해 해시 연산을 반복 수행함으로써 무차별 대입 공격을 어렵게 만드는 키 유도 함수입니다.

쉽게 풀면

비밀번호를 그대로 저장하지 않고, 소금(salt)을 뿌려 섞은 뒤 같은 반죽 과정을 수천 번 반복해서 완전히 다른 모양으로 만드는 것과 비슷합니다. 공격자가 같은 비밀번호를 미리 계산해둔 표(레인보우 테이블)를 써도 소금 때문에 재사용할 수 없고, 반복 횟수 때문에 하나씩 시도하는 데 시간이 오래 걸립니다. 그래서 비밀번호 저장이나 암호화 키 생성에 널리 쓰입니다. 반복 횟수를 늘릴수록 공격은 더 느려지지만 정상 로그인 속도도 함께 느려지는 절충 관계가 있습니다.

왜 중요한가

정보보안학에서 비밀번호 저장 방식은 데이터 유출 사고 시 피해 규모를 좌우하는 핵심 요소로 다뤄집니다. PBKDF2는 오래전부터 표준화되어 다양한 시스템과 라이브러리에서 널리 채택되어 왔기 때문에, 인증 시스템 설계나 암호화 키 파생 관련 연구에서 비교 기준으로 자주 언급됩니다.

논문에서는 이렇게 쓰입니다

"본 시스템은 사용자 비밀번호를 PBKDF2로 반복 해싱하여 데이터베이스에 저장한다."

평문 비밀번호 대신 반복 연산을 거친 값을 저장해 유출 시 피해를 줄이는 방식입니다.

"제안 기법에서는 사용자 패스프레이즈로부터 PBKDF2를 이용해 AES 암호화 키를 유도한다."

사람이 기억하기 쉬운 패스프레이즈를 암호화에 쓸 수 있는 고정 길이 키로 변환하는 데 활용된 예입니다.

조금 더 깊게 보면

PBKDF2는 내부적으로 HMAC 같은 의사난수 함수를 반복 적용하며, 반복 횟수(iteration count)를 늘려 계산 비용을 높이는 방식으로 안전성을 확보합니다. 다만 CPU 연산 위주라 전용 하드웨어(GPU, ASIC)를 이용한 병렬 공격에는 상대적으로 취약하다는 지적이 있어, 이후 메모리 사용량까지 요구하는 Argon2 같은 함수가 대안으로 제시되었습니다.

주의할 점

반복 횟수가 너무 적으면 보호 효과가 크게 줄어들며, salt를 생략하거나 재사용하면 레인보우 테이블 공격에 다시 노출될 수 있습니다. 최신 권고에서는 메모리 하드 함수와 비교해 상대적 강도를 고려해야 한다는 점도 유의해야 합니다.

관련 용어