Skip to content
Tools/인증 & 보안 실습소

인증 & 보안 실습소

Auth & Security Lab

실제 인증·보안 시스템을 직접 값으로 만들어 보는 실습소 — PBKDF2 비밀번호 해싱, 살아있는 HS256 JWT, OAuth 2.0/OIDC PKCE 흐름, SAML SSO, TLS 1.3 핸드셰이크까지 모든 값을 Web Crypto로 브라우저에서 계산합니다.

비밀번호 해싱부터 세션·JWT, OAuth/OIDC, SAML, TLS 핸드셰이크까지 — 실제 인증·보안 시스템이 어떻게 동작하는지 브라우저에서 직접 값을 만들어 보며 배웁니다. 모든 계산은 Web Crypto로 브라우저에서만 이뤄지고, 어디에도 전송되지 않습니다.

비밀번호는 절대 평문으로 저장하지 않습니다. 임의의 솔트를 붙여 느린 해시 함수(PBKDF2/bcrypt/argon2)로 유도한 값만 저장합니다.

모든 값은 브라우저에서 생성됩니다 — 전송되지 않습니다.

솔트(salt, 16바이트 랜덤)

622fdd778f3d10422a32d4b072e8e7f6

유도된 해시 (PBKDF2-HMAC-SHA256, 32바이트)

데이터베이스에 저장되는 형식 (PHC 스타일)

🔓 로그인 검증 (timing-safe 비교)

💡 핵심 개념

  • 솔트: 사용자마다 다른 랜덤값을 붙여 같은 비밀번호도 다른 해시가 되게 합니다 → 레인보우 테이블 무력화.
  • 느린 해시: bcrypt/scrypt/argon2/PBKDF2는 일부러 느리게(수만~수십만 회) 설계되어 무차별 대입 비용을 키웁니다.
  • timing-safe 비교: 문자열을 앞에서부터 비교하면 걸린 시간으로 정답을 유추당할 수 있어, 전체를 항상 끝까지 비교합니다.
  • 레인보우 테이블: 흔한 비밀번호의 해시를 미리 계산해 둔 표. 솔트가 있으면 표를 재사용할 수 없습니다.
  • SHA-256 단독은 너무 빨라 비밀번호용으로 부적합합니다 — KDF(키 유도 함수)를 써야 합니다.