Argon2 해시 생성기

무료 온라인 Argon2 해시 생성기 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.

General
Password Hashing / KDF
Specialized
Deprecated
KiB
iterations

Verify: input format is "password|hash"

출력

결과가 여기에 표시됩니다...

입력 해시 계산

Usage Guide

Argon2 소개

Argon2는 룩셈부르크 대학교가 설계한 2015년 Password Hashing Competition 우승 알고리즘입니다. 현재 가장 안전한 패스워드 해싱 알고리즘으로, OWASP와 NIST 같은 권위 있는 기관에서 패스워드 저장에 권장합니다. Argon2에는 세 가지 변형이 있습니다: Argon2d(GPU 저항), Argon2i(사이드채널 저항), Argon2id(하이브리드 모드, 권장). 기존 해시 알고리즘과 달리 Argon2는 계산 비용과 메모리 소비를 조정할 수 있어 무차별 대입, GPU, ASIC 공격에 효과적으로 대응합니다.

OWASP 권장: Argon2id는 OWASP 패스워드 저장 치트시트에서 권장하는 알고리즘입니다. Argon2d의 GPU 저항성과 Argon2i의 사이드채널 공격 저항성을 결합하여 가장 포괄적인 보안 보호를 제공합니다.모든 새 프로젝트의 패스워드 저장에 권장합니다.

사용 단계

Argon2는 패스워드 해싱과 검증 두 가지 작업을 지원합니다:

1. 모드 선택패스워드를 해싱하려면 '암호화' 모드, 패스워드를 검증하려면 '복호화' 모드 선택
2. 패스워드 입력해싱하거나 검증할 패스워드를 입력 상자에 입력
3. 해시 계산'해시 계산' 버튼 클릭, Argon2가 자동으로 랜덤 솔트를 생성하고 해시를 계산
4. 결과 저장완전한 해시 문자열(알고리즘 파라미터, 솔트, 해시 포함)을 복사하여 데이터베이스에 저장
5. 패스워드 검증검증 시 원본 패스워드와 완전한 해시 문자열을 입력하면 시스템이 자동으로 파라미터를 추출하여 검증
개인정보 보호: 모든 계산은 브라우저에서 로컬로 수행되며, 데이터는 서버에 업로드되지 않고 완전히 오프라인으로 처리됩니다.

알고리즘 특징

Argon2는 패스워드 저장을 위해 특별히 설계되었으며 다음과 같은 고유한 장점이 있습니다:

메모리 하드대용량 메모리(기본 64MB)가 필요하여 GPU 및 ASIC 공격을 매우 비용이 많이 들게 만듭니다
조정 가능한 비용시간 비용(반복 횟수), 메모리 비용, 병렬성을 조정하여 다양한 보안 요구사항 충족
사이드채널 저항Argon2i와 Argon2id는 캐시 타이밍 공격 및 기타 사이드채널 공격에 저항합니다
자동 솔팅랜덤 솔트 생성이 내장되어 있어 수동 솔트 관리가 불필요
버전 관리해시 문자열에 알고리즘 버전과 파라미터가 포함되어 향후 업그레이드 및 마이그레이션 용이
파라미터 설정: Argon2의 보안은 파라미터 설정에 달려 있습니다. OWASP 권장사항: 메모리 비용 ≥ 47MB(m=47104), 시간 비용 ≥ 1회 반복(t=1), 병렬성 = 1(p=1). 서버 성능이 허용하면 메모리 비용을 64MB 이상으로 늘리세요. 너무 낮은 파라미터 사용을 피하세요, 보안이 저하됩니다.

세 가지 변형 비교

Argon2에는 다양한 시나리오에 적합한 세 가지 변형이 있습니다:

Argon2d데이터 의존형, GPU/ASIC 저항성이 가장 높지만 사이드채널 공격에 취약, 암호화폐 채굴에 적합
Argon2i데이터 독립형, 사이드채널 저항성이 있지만 GPU 저항성이 약간 약함, 패스워드 해싱에 적합
Argon2id하이브리드 모드(권장), 두 가지 장점을 결합하여 GPU와 사이드채널 모두에 저항, 모든 시나리오에 적합
권장 선택: 특별한 요구사항이 없다면 항상 Argon2id를 사용하세요. OWASP, NIST, 암호학 전문가들이 일치하여 권장하며 가장 포괄적인 보안 보호를 제공합니다.

FAQ

Q: Argon2와 bcrypt/PBKDF2의 차이점은 무엇인가요?

A: Argon2: 현대적 알고리즘(2015년), 메모리 하드, GPU/ASIC 저항, OWASP 권장. bcrypt: 클래식 알고리즘(1999년), 계산 하드, 중간 수준의 GPU 저항, 널리 사용되지만 점차 Argon2로 대체되고 있음. PBKDF2: 표준 알고리즘(2000년), 계산 하드, GPU 공격에 취약, 보안을 위해 매우 높은 반복 횟수(≥ 600k) 필요. 성능 비교: 동일한 보안 수준에서 Argon2는 bcrypt보다 2~3배 빠르고 PBKDF2보다 10배 이상 빠릅니다. 권장사항: 새 프로젝트에는 Argon2id를 사용하고, 기존 프로젝트는 점진적으로 Argon2로 마이그레이션하세요.

Q: Argon2 파라미터는 어떻게 설정해야 하나요?

A: OWASP 권장 설정: 메모리 비용(m): 47104 KB(약 47MB), 서버 성능이 좋으면 64MB 이상으로 늘릴 수 있습니다. 시간 비용(t): 1~3회 반복, 보통 1회로 충분합니다. 병렬성(p): 1(단일 스레드), 병렬 공격 방지. 해시 길이: 32바이트(256비트). 튜닝 방법: 개발 환경에서 테스트하여 단일 해시가 0.5~1초 걸리는지 확인한 후 서버 성능에 따라 조정. 참고: 파라미터가 높을수록 보안이 강화되지만 서버 부하와 응답 시간이 증가합니다.

Q: 왜 Argon2가 SHA-256보다 패스워드 저장에 더 적합한가요?

A: SHA-256 빠른 계산을 위해 설계된 범용 해시 함수로, 패스워드 저장 시나리오에서는 치명적인 약점입니다. GPU는 초당 수십억 개의 SHA-256 해시를 계산할 수 있어 솔트를 사용해도 무차별 대입 공격에 취약합니다. Argon2의 장점: 1) 느린 설계: 단일 해시에 0.5~1초 소요, 무차별 대입 속도를 극적으로 감소. 2) 메모리 하드: 대용량 메모리(64MB) 필요, GPU와 ASIC은 병렬 공격 불가. 3) 조정 가능한 비용: 하드웨어가 향상됨에 따라 파라미터를 늘려 보안 유지 가능. 결론: 패스워드 저장에는 전용 패스워드 해싱 알고리즘(Argon2, bcrypt, PBKDF2)을 사용하고, 범용 해시 함수(SHA-256, MD5)는 사용하지 마세요.

Q: Argon2 해시 문자열 형식은 무엇인가요?

A: Argon2는 PHC(Password Hashing Competition) 문자열 형식을 사용합니다: $argon2id$v=19$m=65536,t=3,p=1$saltbase64$hashbase64.
구성 요소 의미:
$argon2id: 알고리즘 변형(id/i/d).
v=19: 알고리즘 버전(현재 19).
m=65536,t=3,p=1: 메모리 비용(KB), 시간 비용(반복 횟수), 병렬성.
saltbase64: Base64 인코딩된 솔트(16바이트).
hashbase64: Base64 인코딩된 해시(32바이트).
장점: 모든 파라미터가 자체 포함되어 검증에 추가 저장이 불필요하고 향후 업그레이드가 용이합니다.

Q: bcrypt에서 Argon2로 마이그레이션하는 방법은?

A: 점진적 마이그레이션 접근법: 1) 이중 검증: bcrypt 검증 로직을 유지하면서 새 사용자와 패스워드 변경에 Argon2 사용. 2) 투명한 업그레이드: 사용자가 로그인할 때 먼저 bcrypt로 검증하고, 성공하면 즉시 Argon2로 재해싱하여 데이터베이스 업데이트. 3) 식별자 필드: 해시 알고리즘 유형(bcrypt/argon2)을 식별하는 데이터베이스 필드 추가. 4) 완전 마이그레이션: 일정 기간 후(예: 6개월), 대부분의 활성 사용자가 마이그레이션되면 나머지 사용자에게 패스워드 재설정을 강제할 수 있습니다. 참고: bcrypt와 Argon2는 다른 해시 형식을 가지며 접두사로 자동 식별 가능합니다($2a$ vs $argon2id$).

Q: 브라우저에서 Argon2가 너무 느리지 않나요?

A: Argon2의 설계 목표는 느린 계산이며, 이는 보안 보장이지 결함이 아닙니다. WebAssembly를 사용하여 브라우저에서 Argon2를 계산하면 단일 해시에 0.5~1초 소요되지만, 사용자 경험에 미치는 영향은 최소화됩니다(패스워드 입력 후 1초 대기는 허용 가능). 최적화 제안: 1) 비동기 계산: Web Workers를 사용하여 백그라운드에서 계산, UI 차단 방지. 2) 진행 표시기: “암호화 중...” 메시지를 표시하여 사용자 경험 향상. 3) 파라미터 조정: 브라우저 환경에서는 메모리 비용을 적당히 줄일 수 있습니다(예: 32MB), 하지만 OWASP 최소 권장값(47MB) 이하로 내려가지 마세요. 참고: 서버 측 검증도 동일한 계산 시간이 필요하며, 이것이 Argon2의 핵심 보안 메커니즘입니다.

Use Cases

권장: 사용자 패스워드 저장

이것이 Argon2의 주요 사용 사례입니다. 사용자가 등록하거나 패스워드를 변경할 때 Argon2id를 사용하여 패스워드를 해싱하고 데이터베이스에 저장합니다. 로그인 시 저장된 해시 문자열을 추출하고, 동일한 파라미터로 사용자가 입력한 패스워드를 해싱하여 결과를 비교합니다. Argon2의 메모리 하드 특성으로 인해 데이터베이스가 침해되어도 사용자 패스워드를 보호하고 무차별 대입 공격을 매우 비용이 많이 들게 만듭니다.

Recommended Configuration:
  • ✅ Argon2id(OWASP 권장, 우선 선택)
  • bcrypt(클래식 선택, 비용 인수 ≥ 12)
  • PBKDF2-SHA256(≥ 600k 반복)
  • ❌ SHA-256, MD5 등 범용 해시 사용 금지
권장: API 키 해싱

API 키(API 토큰, 액세스 키 등)는 일반적으로 데이터베이스에 저장해야 하지만 평문으로 저장해서는 안 됩니다. Argon2를 사용하여 API 키를 해싱하면 데이터베이스가 침해되어도 공격자가 원본 키를 얻을 수 없습니다. 검증 시 사용자가 제공한 키를 해싱하여 비교합니다. 참고: API 키는 일반적으로 무작위로 생성된 고엔트로피 문자열이므로 Argon2 파라미터를 적당히 줄여(예: t=1, m=32MB) 성능을 향상시킬 수 있습니다.

Recommended Configuration:
  • ✅ Argon2id(높은 보안)
  • bcrypt(성능과 보안의 균형)
  • SHA-256 + 솔트(고엔트로피 키에 사용 가능)
  • 💡 쿼리 속도 향상을 위해 해시 접두사 인덱싱 사용 고려
권장: 암호화폐 지갑

암호화폐 지갑은 개인 키를 보호하기 위해 패스워드가 필요합니다. Argon2d(데이터 의존형)를 사용하여 사용자 패스워드에서 암호화 키를 도출하고, 그 키로 개인 키를 암호화합니다. Argon2d의 GPU 저항성으로 인해 지갑 패스워드 무차별 대입이 매우 비용이 많이 듭니다. 참고: 지갑 시나리오에서는 일반적으로 Argon2id 대신 Argon2d를 사용합니다. 사이드채널 공격 위험이 낮고 GPU 저항성이 더 중요하기 때문입니다.

Recommended Configuration:
  • ✅ Argon2d(GPU 저항, 지갑 권장)
  • ✅ Argon2id(더 포괄적인 보안)
  • scrypt(클래식 선택, Bitcoin Core에서 사용)
  • 💡 더 높은 보안을 위해 하드웨어 지갑과 결합
권장: 파일 암호화 키 도출

Argon2를 사용하여 사용자 패스워드에서 파일 암호화 키를 도출합니다. 사용자가 패스워드를 제공하면 Argon2가 고정 길이 키(예: 256비트)를 생성하고, 그 키를 사용하여 파일을 암호화합니다(예: AES-256-GCM사용). 솔트와 Argon2 파라미터는 파일 헤더에 저장되며, 복호화 시 파라미터를 추출하여 키를 재도출합니다. 이 접근법은 암호화 아카이브(7-Zip, WinRAR 등)와 디스크 암호화(VeraCrypt 등)에서 널리 사용됩니다.

Recommended Configuration:
  • ✅ Argon2id(권장)
  • ✅ Argon2i(사이드채널 저항)
  • scrypt(클래식 선택)
  • 💡 솔트와 파라미터를 파일 헤더에 저장
권장: 이중 인증 백업 코드

이중 인증(2FA) 백업 코드는 데이터베이스가 침해될 경우 악용을 방지하기 위해 해싱하여 저장해야 합니다. 백업 코드는 무작위로 생성된 고엔트로피 문자열(일반적으로 8~16자)이므로 낮은 Argon2 파라미터(예: t=1, m=32MB)를 사용하여 성능을 향상시킬 수 있습니다. 검증 시 사용자가 입력한 백업 코드를 해싱하여 비교하고, 검증 성공 후 즉시 백업 코드를 무효화합니다.

Recommended Configuration:
  • ✅ Argon2id(권장)
  • bcrypt(더 나은 성능)
  • SHA-256 + 솔트(고엔트로피 백업 코드에 사용 가능)
  • 💡 사용 후 즉시 백업 코드 무효화
비권장: 실시간 성능 민감 시나리오

Argon2의 느린 특성으로 인해 고빈도 API 인증, 실시간 게임 로그인, IoT 기기 인증 등 매우 높은 성능이 필요한 시나리오에는 적합하지 않습니다. 이러한 시나리오에서는 모든 요청에 패스워드 해싱을 사용하는 대신 토큰 기반 인증(JWT, OAuth 등)이나 세션 관리를 사용해야 합니다. Argon2는 사용자 로그인 시 한 번만 사용하고, 검증 성공 후 토큰을 발급하여 이후 요청은 토큰 인증을 사용합니다.

Recommended Configuration:
  • ✅ JWT + HMAC-SHA256(높은 성능)
  • ✅ Session + Cookie(전통적인 접근법)
  • ✅ OAuth 2.0(표준 프로토콜)
  • ❌ 고빈도 시나리오에서 Argon2 사용 금지

모범 사례 권장사항

  • Argon2id는 패스워드 저장의 최선의 선택이며 모든 새 프로젝트에 권장합니다. 기존 프로젝트는 bcrypt/PBKDF2에서 Argon2로 점진적으로 마이그레이션해야 합니다.
  • 파라미터 설정은 OWASP 권장사항을 따르세요: m ≥ 47MB, t ≥ 1, p = 1. 서버 성능이 좋으면 메모리 비용을 64MB 이상으로 늘릴 수 있습니다.
  • 고빈도 시나리오에서 Argon2를 사용하지 마세요. 높은 성능을 위해 토큰 인증(JWT, Session)과 결합해야 합니다.
  • bcrypt에서 마이그레이션할 때 점진적 접근법을 사용하세요: bcrypt 검증을 유지하고, 새 사용자와 패스워드 변경에 Argon2를 사용하며, 로그인 시 투명하게 업그레이드합니다.
  • 브라우저 환경에서는 WebAssembly를 사용하여 Argon2를 계산하고, Web Workers와 진행 표시기를 결합하여 사용자 경험을 향상시킵니다.

토론 및 피드백

0개의 댓글