인증 & 보안 실습소
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(키 유도 함수)를 써야 합니다.