Argon2id Hash / Key Generator
Argon2id란?
Argon2id는 비밀번호나 문장에서 안전한 키를 만들어내는 암호학적 키 유도 함수(KDF, Key Derivation Function)입니다. 해커가 GPU나 병렬 연산으로 수백만 번의 비밀번호를 시도하더라도, 시간과 메모리를 함께 소모하게 만들어 사실상 공격이 불가능하도록 설계되었습니다.
이 도구는 PHP의 password_hash() 및 libsodium에서 사용하는 Argon2id 방식을 동일하게 구현했습니다.
비밀번호를 저장하거나, AES 같은 대칭키 암호화를 위한 안전한 키를 생성하는 데 사용할 수 있습니다.
왜 Argon2id를 사용해야 하나요?
예전에는 단순한 해시(SHA256, MD5 등)로 비밀번호를 처리했지만, 이런 방식은 GPU로 수십억 번의 시도를 할 수 있어 매우 위험합니다. Argon2id는 메모리 기반 연산을 사용하기 때문에, 공격자가 아무리 빠른 CPU나 GPU를 써도 병렬화가 어렵습니다.
- PHC(Password Hashing Competition) 우승 알고리즘 – 전 세계적으로 표준 채택
- GPU·ASIC 공격에 강함 – 메모리 의존적 구조로 병렬 연산 방지
- Side-channel 안전성 – 타이밍 공격 및 캐시 공격에 강한 설계
사용 방법
Argon2id는 두 가지 방식으로 사용할 수 있습니다. 목적에 따라 적절한 모드를 선택하세요.
① Encoded 모드 (password_hash 스타일)
입력한 비밀번호를 안전하게 저장할 수 있는 문자열로 변환합니다.
솔트와 파라미터가 내장되어 있으며, PHP의 password_verify()로 검증 가능합니다.
회원가입·로그인 시스템에 적합합니다.
② Raw 모드 (libsodium 스타일)
AES나 ChaCha20 같은 암호화 알고리즘에 직접 사용할 수 있는 키를 만듭니다.
결과는 JSON 형태로, 내부에 솔트와 파라미터가 함께 포함됩니다.
파일 암호화, 데이터 보호, 개인키 암호화 등에 적합합니다.
설정값 가이드
Memory 는 사용하는 메모리 용량(KiB), Time 은 반복 횟수, Threads 는 병렬 처리 스레드 수를 의미합니다. 이 값이 클수록 보안이 강해지지만 속도가 느려집니다.
일반적으로 64 MiB / 3회 / 1스레드가 좋은 균형입니다. 로그인 같은 단건 검증에는 충분하며, 서버 여유가 있다면 128 MiB 이상으로 설정해도 좋습니다.
참고사항
Argon2id 결과에는 항상 무작위 솔트(salt)가 포함되어 있습니다. 솔트는 비밀 정보가 아니며, 검증이나 복호화를 위해 결과 문자열이나 JSON과 함께 보관해야 합니다.