비밀번호 유출: 개발자가 알아야 할 필수 지침
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
보안
대상자
- 개발자 및 보안 엔지니어
- 난이도: 중급 이상 (해싱 알고리즘, API 사용, 보안 도구 이해 필요)
핵심 요약
- 비밀번호 유출은 해시, 토큰, 이메일 등의 민감 정보가 공개되는 사고로,
HaveIBeenPwned
API를 통해 확인 가능 - 보안 개선을 위해
bcrypt
또는argon2
을 사용하고,MD5
/SHA-1
은 피해야 함 - 코드 저장소에서 비밀 정보를 스캔하기 위해
GitLeaks
/TruffleHog
등 도구 사용 권장
섹션별 세부 요약
1. 비밀번호 유출의 정의 및 영향
- 유출 경로: 데이터베이스 침해, 암호화되지 않은 저장, 제3자 API 유출
- 유출 사례: LinkedIn(2012, 164M), Canva(2019, 137M) 등
- 위험: 사용자 신뢰 손상, 법적 책임, 기업 피해
2. 유출 감지 도구 및 API 활용
- HaveIBeenPwned API: SHA-1 해시의 앞 5자리로 검색 (k-익명성 지원)
- Python 예제:
hashlib
과requests
를 사용한 비밀번호 유출 점검 스크립트 제공 - 사용 예시:
```python
import hashlib, requests
def is_password_leaked(password):
# SHA-1 해시 분리 및 API 요청
...
```
3. 예방 및 대응 전략
- 비밀번호 저장:
bcrypt
/argon2
사용,plaintext
금지 - 레포지토리 감지:
GitSecrets
,TruffleHog
으로 비밀 정보 검색 - 사용자 보호: 2FA/3FA 도입, HIBP API를 통한 중복 비밀번호 차단
4. 보안 도구 및 리소스
- GitHub 액션:
PunkSecurity/scan
으로 유출 감지 자동화 - 추천 리소스:
- OWASP Top 10: Broken Authentication
관련 가이드
- Troy Hunt 블로그: 비밀번호 보안 전략
결론
- 즉시 조치: 로그인/등록 흐름에
HIBP API
검사를 추가하고,bcrypt
를 사용하세요. - 장기적 방안: 코드 저장소 정기 감지, 사용자 교육, 2FA/3FA 도입을 통해 유출 위험 최소화.
- 실무 팁:
click
또는argparse
를 활용한 CLI 툴 개발로 유출 점검 자동화 가능.