PBKDF2 해시 생성기
무료 온라인 PBKDF2 해시 생성기 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.
결과가 여기에 표시됩니다...
입력 → 해시 계산
Usage Guide
PBKDF2에 대하여
PBKDF2(패스워드 기반 키 유도 함수 2)는 RFC 8018(PKCS#5) 및 NIST SP 800-132에서 표준화된 키 유도 함수입니다. 단순한 해시 함수와 달리, PBKDF2는 의사 난수 함수(HMAC-SHA256 또는 HMAC-SHA512)를 수십만 번 반복 적용하여 패스워드에서 암호화 키를 유도하도록 특별히 설계되었습니다. 이로 인해 무차별 대입 공격의 계산 비용이 크게 증가합니다. PBKDF2는 FIPS 140-2 준수이며 LUKS 디스크 암호화, WPA2/WPA3 Wi-Fi, iOS/Android 보안 스토리지, 패스워드 관리자에 광범위하게 사용됩니다.
사용 단계
이 도구는 두 가지 작업을 지원합니다: 키 유도(암호화 모드)와 패스워드 검증(복호화 모드):
파라미터 가이드
PBKDF2에는 유도된 키의 보안과 출력을 제어하는 4가지 주요 파라미터가 있습니다:
PBKDF2 대 Argon2 / bcrypt
다른 패스워드 해싱 알고리즘보다 PBKDF2를 선택해야 하는 시점 이해:
FAQ
Q: PBKDF2의 출력 형식은 무엇인가요?
A: 이 도구는 자체 포함 해시 문자열을 출력합니다: {반복횟수}:{알고리즘}:{솔트_base64}:{유도키_hex}.
예시: 600000:sha256:abc123...==:d4e5f6....
구성 요소:반복횟수: 사용된 HMAC 라운드 수(예: 600000).알고리즘: 해시 함수(sha256 또는 sha512).솔트_base64: Base64 인코딩된 랜덤 솔트.유도키_hex: 16진수 인코딩된 유도 키.
검증하려면 복호화 모드에서 입력: 패스워드|{전체 해시 문자열}.
Q: 왜 PBKDF2는 600,000회 반복이 필요한가요?
A: PBKDF2는 메모리 하드가 아닙니다 — GPU에서 저렴하게 병렬화할 수 있습니다. 현대 GPU는 초당 약 10억~20억 번의 PBKDF2-SHA256 반복을 계산할 수 있습니다. 해시당 600,000회 반복에서도 GPU당 초당 약 1,600번의 해시 시도가 가능합니다. 높은 반복 횟수가 주요 방어 메커니즘입니다 — 공격자의 비용을 직접 곱합니다. OWASP 2023은 SHA-256의 최솟값을 600,000으로 설정합니다; SHA-512에는 210,000을 사용하세요. 시간이 지남에 따라 이 값을 늘려가세요.
Q: PBKDF2는 bcrypt나 Argon2와 어떻게 다른가요?
A: PBKDF2: 계산 하드만, 메모리 하드 아님. GPU 병렬화 가능. FIPS 140-2 승인. 매우 높은 반복 횟수 필요. FIPS 규제 환경에 최적. bcrypt: 계산 하드, ~4KB 메모리, 중간 GPU 저항성. 72바이트 패스워드 제한. 임의 길이 키를 유도할 수 없음. Argon2id: 메모리 하드, GPU/ASIC 저항성, 현대 OWASP 선호. FIPS 미승인. 동등한 보안 수준에서의 성능: 메모리 하드성 덕분에 Argon2는 동일한 실효 보안 수준에서 PBKDF2보다 훨씬 빠릅니다.
Q: PBKDF2는 FIPS 140-2를 준수하나요?
A: 예. PBKDF2는 NIST SP 800-132에 명시적으로 정의되어 FIPS 140-2 하에서 승인되었습니다. 이로 인해 미국 연방 기관, 계약업체, HIPAA 대상 의료 시스템, PCI-DSS 요구사항이 있는 금융 애플리케이션의 필수 선택이 됩니다. Argon2와 scrypt는 FIPS 미승인입니다. FIPS 준수가 필요한 경우, PBKDF2는 현재 유일하게 널리 사용 가능한 옵션입니다. PBKDF2 구현이 FIPS 검증된 암호화 모듈을 사용하는지 확인하세요.
Q: 솔트가 왜 중요하며 저장해야 하나요?
A: 솔트는 해싱 전에 패스워드에 추가되는 랜덤 값으로, 두 개의 동일한 패스워드가 다른 유도 키를 생성하도록 보장합니다. 솔트 없이는 공격자가 사전 계산된 레인보우 테이블을 사용하여 여러 해시를 동시에 크랙할 수 있습니다. 솔트는 비밀일 필요가 없습니다 — 패스워드당 고유하기만 하면 됩니다. 솔트는 출력 문자열에 포함되어 있으며 검증 시 동일한 해시를 재현하기 위해 유도된 키와 함께 저장해야 합니다. 패스워드 간에 솔트를 재사용하지 마세요.
Q: AES 키 유도에 PBKDF2를 어떻게 사용하나요?
A: AES-256 키를 직접 유도하려면 키 길이를 32바이트(256비트)로 설정하세요. SHA-256으로 600,000회 반복을 사용하세요. 암호화된 데이터와 함께 솔트를 저장하세요. 복호화 시 동일한 패스워드, 솔트, 반복 횟수, 알고리즘으로 키를 재유도한 후 AES-256-GCM으로 복호화하는 데 사용하세요. 이것이 바로 LUKS 디스크 암호화, iOS 데이터 보호, 많은 패스워드 관리자의 작동 원리입니다. 유도된 키는 결정론적입니다 — 동일한 입력은 항상 동일한 키를 생성합니다.
Use Cases
권장: FIPS 준수 패스워드 저장
FIPS 140-2, NIST SP 800-131A, HIPAA, 또는 PCI-DSS 대상 조직은 승인된 암호화 알고리즘을 사용해야 합니다. HMAC-SHA256 또는 HMAC-SHA512를 사용한 PBKDF2는 이러한 요구사항을 충족하는 유일하게 널리 사용 가능한 패스워드 KDF입니다. SHA-256에 최소 600,000회 반복을 사용하고 전체 출력 문자열을 저장하세요. 규제 환경에서 Argon2id 보다 PBKDF2를 선택하는 주된 이유가 바로 이것입니다.
- ✅ PBKDF2-HMAC-SHA256(≥600,000회 반복) — FIPS 준수
- ✅ PBKDF2-HMAC-SHA512(≥210,000회 반복) — FIPS 준수
- ❌ Argon2 / scrypt — FIPS 140-2 미승인
- ❌ bcrypt — FIPS 140-2 미승인
권장: 디스크 암호화 키 유도(LUKS)
LUKS(Linux 통합 키 설정)는 기본적으로 PBKDF2(LUKS1)와 PBKDF2/Argon2(LUKS2)를 사용하여 패스프레이즈에서 볼륨 암호화 키를 유도합니다. PBKDF2는 사용자의 패스워드에서 고정 길이 키(AES-256에 32바이트)를 유도하고, 이를 사용하여 LUKS 헤더에 저장된 마스터 키를 암호화합니다. WPA2/WPA3 Wi-Fi 보안도 Wi-Fi 패스워드에서 Pairwise Master Key(PMK)를 유도하기 위해 PBKDF2를 사용합니다.
- ✅ PBKDF2-HMAC-SHA512(LUKS1 표준)
- ✅ Argon2id(LUKS2 선호 — 더 나은 메모리 하드성)
- 💡 대상 하드웨어에서 유도에 0.5~2초가 걸릴 만큼 충분히 높은 반복 횟수 설정
- 💡 솔트를 디스크/헤더 메타데이터에 저장, 절대 별도로 저장하지 말 것
허용: 레거시 시스템에서의 패스워드 검증
많은 기존 시스템(오래된 Django 버전, .NET Membership, Java PBKDF2WithHmacSHA1)은 이미 PBKDF2 해시를 저장하고 있습니다. 이러한 시스템에는 PBKDF2를 계속 사용하고 하드웨어가 개선됨에 따라 반복 횟수를 점진적으로 늘려가세요. 검증에는 저장된 반복 횟수를 사용하고(해시 문자열에 내장됨), 새 등록 및 패스워드 변경에는 현재 OWASP 권고사항으로 업데이트하세요. 이렇게 하면 강제 패스워드 재설정 없이 시간이 지남에 따라 보안이 향상됩니다.
- ✅ PBKDF2(기존 해시 유지 — 마이그레이션 불필요)
- ✅ 새 해시의 반복 횟수를 현재 OWASP 최솟값으로 증가
- 💡 다음 로그인 시 반복 횟수를 투명하게 업그레이드
- 💡 FIPS가 불필요한 새 프로젝트의 경우 Argon2id로의 마이그레이션 고려
허용: 하나의 패스워드에서 여러 키 유도
PBKDF2는 임의 길이의 키를 유도할 수 있어 하나의 마스터 패스워드에서 여러 키가 필요할 때(예: 암호화용 키 하나, MAC 인증용 키 하나) 유용합니다. 독립적인 키를 유도하려면 다른 솔트 또는 인덱스 접미사를 사용하세요. 키 길이를 64바이트로 설정하고 출력을 두 개의 32바이트 키로 분할하거나, 다른 솔트로 PBKDF2를 두 번 실행하세요. 이 패턴은 일부 패스워드 관리자 아키텍처에서 사용됩니다.
- ✅ 유도 키 목적별로 다른 솔트 사용
- ✅ 초기 PBKDF2 유도 후 키 확장에 HKDF 사용
- ❌ 다른 키 목적에 동일한 솔트를 절대 재사용하지 말 것
- 💡 인증된 암호화를 위해 AES-256-GCM과 결합
권장하지 않음: 새 프로젝트에서 Argon2 대체
FIPS 요구사항 없이 새 프로젝트를 시작하는 경우, PBKDF2는 Argon2id에 비해 더 약한 선택입니다. PBKDF2는 메모리 하드가 아니어서 GPU가 저렴하게 공격을 병렬화할 수 있습니다. 600,000회 반복에서도 고성능 GPU는 초당 수천 번의 PBKDF2 추측을 시도할 수 있습니다. Argon2id는 기본 파라미터(47MB 메모리, 1회 반복)로 동등한 실행 시간을 달성하면서 메모리 요구사항으로 GPU 병렬화를 완전히 방지합니다.
- ❌ Argon2id가 사용 가능한 경우 새 프로젝트에서 PBKDF2 사용 피하기
- ✅ Argon2id(메모리 하드, OWASP 선호)
- ✅ scrypt(메모리 하드, 널리 사용 가능)
- 💡 FIPS 준수가 필수인 경우에만 PBKDF2 선호
권장하지 않음: 일반 데이터 해싱
PBKDF2는 키 유도 함수이며 범용 해시 함수가 아닙니다. 의도적으로 느리게 설계되어 있으며 파일 내용, 체크섬, 메시지 인증 또는 중복 제거를 위한 해싱에 절대 사용해서는 안 됩니다. 데이터 무결성을 위해서는 SHA-256또는 SHA-512를 사용하세요. 메시지 인증에는 HMAC-SHA256을 사용하세요. PBKDF2 출력을 일반 해시로 사용하면 보안상 이점 없이 상당한 CPU 사이클을 낭비하게 됩니다.
- ❌ 파일 체크섬이나 데이터 무결성에 PBKDF2 사용 금지
- ❌ 메시지 인증에 PBKDF2 사용 금지(HMAC-SHA256 사용)
- ✅ 일반 데이터 해싱에는 SHA-256 / SHA-512
- ✅ 인증된 메시지 무결성에는 HMAC-SHA256
모범 사례 요약
- FIPS 준수 환경에서는 PBKDF2-HMAC-SHA256(≥600,000회 반복) 또는 HMAC-SHA512(≥210,000회)를 사용하세요. 반복 횟수, 알고리즘, 솔트를 포함한 전체 해시 문자열을 저장하세요.
- FIPS 요구사항이 없는 새 프로젝트에서는 Argon2id를 선호하세요 — 메모리 하드이며 동등한 성능으로 GPU 공격에 훨씬 더 강합니다.
- 패스워드당 항상 고유한 랜덤 솔트를 사용하세요(이 도구에서 자동 생성). 애플리케이션 코드에서 솔트를 재사용하거나 하드코딩하지 마세요.
- 하드웨어가 개선됨에 따라 시간이 지나면서 반복 횟수를 늘려가세요. 반복 횟수는 해시 문자열에 저장되므로 이전 값과 새 값이 공존할 수 있습니다.
- PBKDF2는 로그인 또는 키 설정 시에만 사용하세요 — 모든 요청에서 사용하지 마세요. 인증 후 고빈도 작업에는 토큰(JWT, 세션)을 발급하세요.