SD-13
🔐 비밀번호 관리 (설계)
설계단계 보안설계 · 보안기능
위험도: 상💡 쉽게 말하면
비밀번호를 평문이나 약한 해시로 저장하면, 금고 비밀번호를 포스트잇에 그대로 적어두는 것과 같습니다. 솔트를 더한 적응형 해시(bcrypt/Argon2)로 저장해 유출돼도 원문을 알 수 없게 설계해야 합니다.
비밀번호를 평문이나 약한 해시로 저장하면, 금고 비밀번호를 포스트잇에 그대로 적어두는 것과 같습니다. 솔트를 더한 적응형 해시(bcrypt/Argon2)로 저장해 유출돼도 원문을 알 수 없게 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# DB가 유출된 뒤 저장된 비밀번호를 복원하려 한다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
비밀번호 평문/단순 해시 저장
복잡도·재설정 검증 없음
→ 유출 시 즉시 탈취
✓ 안전한 설정
# 설계 결정
솔트+적응형 해시(bcrypt 등)
복잡도·이력·안전한 재설정
→ 유출돼도 복원 곤란
🔧 조치 방법
- 비밀번호는 솔트를 포함한 적응형 해시(bcrypt/Argon2 등)로 저장하도록 설계합니다.
- 복잡도·재사용 제한·만료 정책을 설계합니다.
- 재설정은 본인확인·1회성 토큰으로 처리하도록 설계합니다.
✅ 점검 체크리스트
- 적응형 해시 저장이 설계됨
- 복잡도/이력 정책이 설계됨
- 안전한 재설정이 설계됨
점검기준: 개발보안 설계기준 2.3 비밀번호 관리