PBKDF2이란 무엇인가요?
PBKDF2(Password-Based Key Derivation Function 2)는 RFC 8018에 정의된 키 파생 알고리즘으로, 유사 무작위 함수(일반적으로 HMAC-SHA-256)를 패스워드와 솔트에 반복 적용해 무차별 대입으로 깨기 계산적으로 비싼 파생 키를 생성한다.
다른 이름: Password-Based Key Derivation Function 2, PBKDF, RFC 8018
PBKDF2는 패스워드와 무작위 솔트의 조합에 해시 기반 메시지 인증 코드(HMAC)를 반복 적용하는 방식으로 동작한다. 반복 횟수는 이 연산이 몇 번 수행되는지를 제어한다. 반복 횟수가 많을수록 키 파생 시도당 CPU 시간이 많이 들어 패스워드를 추측하려는 공격자의 비용이 직접적으로 증가한다.
솔트는 각 키 파생 연산에 고유한 무작위 값이다. 동일한 패스워드가 서로 다른 솔트를 사용할 때 다른 파생 키를 생성하도록 보장하여 사전 계산된 조회 공격(레인보우 테이블)을 방지한다. 솔트는 비밀일 필요가 없으며, 일반적으로 파생 키 또는 암호문과 함께 저장된다.
PBKDF2는 2000년에 표준화되었으며 특히 브라우저의 Web Crypto API를 통해 광범위하게 지원된다. Argon2 같은 최신 KDF는 대량의 메모리를 요구하여 GPU 및 ASIC 공격에 더 강하지만, PBKDF2는 Web Crypto API 호환성이 필수이고 충분한 보안을 위해 반복 횟수를 높게 설정할 수 있는 브라우저 기반 애플리케이션에서 여전히 견고한 선택이다.
Vaulted가 PBKDF2을 사용하는 방법
Vaulted는 비밀에 패스프레이즈를 추가할 때 Web Crypto API를 통해 PBKDF2를 사용한다. 구현은 HMAC-SHA-256과 무작위 16바이트 솔트로 100,000회 반복을 사용한다. 파생된 256비트 키는 AES-KW 래핑 키로 사용되어 메인 AES-256-GCM 키를 암호화한다. 솔트는 래핑된 키와 함께 URL 프래그먼트에 포함되어 수신자가 패스프레이즈에서 동일한 래핑 키를 재파생할 수 있도록 한다.