암호 & 해시 실험실
Crypto & Hash Lab
브라우저에서 바로 실행되는 암호학 실험실입니다. Argon2로 비밀번호를 해싱하고, Web Crypto로 SHA/HMAC 해시, AES-GCM 암복호화, RSA·ECDSA 키 생성과 전자서명, 안전한 난수·비밀번호·UUID 생성까지 직접 다뤄봅니다. 모든 연산은 서버 전송 없이 클라이언트에서만 수행됩니다.
⚠️ 브라우저 데모입니다 — 실제 비밀번호는 서버에서 해싱하세요
비밀번호 해싱은 원래 서버(백엔드)에서 수행합니다. 이 도구는 Argon2 파라미터가 성능과 보안에 어떤 영향을 주는지 학습·실험하기 위한 것입니다. 실서비스에서 평문 비밀번호를 클라이언트 밖으로 내보내지 마세요.
파라미터 프리셋
🐢 왜 느린 해시가 좋은가?
SHA-256 같은 일반 해시는 1초에 수십억 번 계산할 수 있어, 공격자가 유출된 해시를 무차별 대입(brute-force)으로 빠르게 역추적합니다. Argon2는 메모리와 시간을 의도적으로 많이 소모하도록 설계되어(memory-hard), GPU·ASIC를 동원해도 초당 시도 횟수가 급감합니다. 파라미터를 키우면 정당한 로그인은 수백 ms만 느려지지만 공격 비용은 기하급수적으로 증가합니다.
Argon2id는 side-channel 저항(Argon2i)과 GPU 저항(Argon2d)을 결합한 하이브리드로, 일반적인 비밀번호 저장에 권장됩니다.
📚 핵심 개념 정리
해시 vs 암호화 vs 인코딩
- 해시: 단방향. 되돌릴 수 없음. (SHA, Argon2)
- 암호화: 양방향. 키로 복호화 가능. (AES, RSA)
- 인코딩: 보안 아님. 누구나 되돌림. (Base64, URL)
Salt vs Pepper
- Salt: 사용자마다 다른 무작위 값. 해시와 함께 저장. 레인보우 테이블·중복 비밀번호 노출을 막음.
- Pepper: 전 사용자 공통 비밀. DB가 아닌 앱 설정/HSM에 별도 보관.
왜 MD5·SHA-1은 비밀번호에 안 되나?
- 너무 빠름 → 초당 수십억 회 대입 가능
- GPU로 대량 크래킹 용이
- MD5·SHA-1은 충돌까지 발견됨
- 비밀번호엔 Argon2·bcrypt·scrypt를 사용
⏱ 상수시간 비교 (Timing-safe comparison) — 직접 확인
일반 === 비교는 다른 문자가 나오는 즉시 멈추기 때문에, 비교에 걸린 시간으로 정답을 한 글자씩 알아내는 타이밍 공격이 가능합니다. HMAC·토큰 검증은 항상 상수시간 비교를 써야 합니다. 아래 두 값을 바꿔가며 결과를 확인하세요.