Skip to content
Tools/암호 & 해시 실험실

암호 & 해시 실험실

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·토큰 검증은 항상 상수시간 비교를 써야 합니다. 아래 두 값을 바꿔가며 결과를 확인하세요.

a === b → trueconstantTimeEqual → true