모든 아티클

PBKDF2: 가장 오래된 키 스트레칭 표준

한국의 개인정보보호법(PIPA)은 개인정보처리자에게 비밀번호를 포함한 개인정보 보호를 위해 "안전성 확보에 필요한 기술적·관리적 조치"를 취하도록 요구합니다. 특정 알고리즘을 못박지는 않지만, 한국인터넷진흥원(KISA)의 암호 이용 안내서는 PBKDF2 같은 키 유도 함수를 비밀번호 저장에 적합한 구체적인 방법으로 제시하고 있습니다.

키 스트레칭의 원리

비밀번호를 한 번만 해싱하는 대신, PBKDF2는 기본 해시 함수(보통 HMAC-SHA256)를 수천 번 연속으로 적용하며, 각 반복의 결과를 다음 반복의 입력으로 사용합니다. 이는 해시 하나를 계산하는 것을 일부러 늦춰서, 대량 무차별 대입을 공격자에게 훨씬 더 비싸게 만듭니다.

Wi-Fi 속의 PBKDF2: WPA2

PBKDF2의 가장 널리 쓰이는 활용 사례 중 하나는 WPA2-PSK 표준에서 네트워크 비밀번호로부터 Wi-Fi 암호화 키를 유도하는 것입니다. 네트워크 비밀번호는 네트워크 이름(SSID)을 솔트로 사용해 4096회 반복의 PBKDF2-HMAC-SHA1을 거쳐 256비트 키를 만들어냅니다. 짧은 Wi-Fi 비밀번호가 핸드셰이크 하나만 가로채도 오프라인 무차별 대입에 이렇게 취약한 이유가 바로 이것입니다.

이 도구가 HTTPS를 요구하는 이유

이 도구는 직접 작성한 JavaScript 구현이 아니라 브라우저에 내장된 Web Crypto API로 PBKDF2를 계산합니다. 브라우저는 "보안 컨텍스트"—즉 HTTPS나 개발 중의 localhost—에서만 crypto.subtle을 노출하므로, 암호화된 연결이 없으면 이 도구를 포함해 사이트의 모든 암호화 도구는 기기 성능과 무관하게 전혀 작동하지 않습니다.

왜 필요한가

  • 암호화를 위해 비밀번호로부터 암호 키를 유도하기(예: Wi-Fi의 WPA2/WPA3).
  • 비밀번호 저장에 PBKDF2를 사용하는 레거시 시스템과의 호환성 유지하기.
  • 새 표준 버전에서 권장 반복 횟수가 계속 늘어나는 이유 이해하기.

기본 해시 함수의 선택이 중요한 이유

예전 PBKDF2 구현은 기본값으로 HMAC-SHA1을 사용하는 경우가 많았습니다 — SHA-1 자체는 단독 해싱 용도로는 암호학적으로 약하다고 여겨지지만, HMAC 구조 안에서는 이 약점이 치명적인 취약점이 되지 않습니다. 그럼에도 현대의 권장 사항은 HMAC-SHA256이나 HMAC-SHA512를 명확히 권장합니다 — SHA-1의 직접적인 위협 때문이 아니라, 더 긴 출력과 더 최신 함수가 속도 저하 없이 더 큰 안전 여유를 제공하기 때문입니다.

도구 사용해보기