토픽 26 / 210·암호학
Password Hashing (Argon2, bcrypt, scrypt)
Password Hashing (Argon2, bcrypt, scrypt)
사용자 비밀번호를 안전하게 저장하기 위해 단방향 해시 함수와 Salt, 반복 연산을 사용하여 원본 복구를 불가능하게 하고 무차별 대입 공격을 방어하는 암호화 기법
목적: 비밀번호 안전 저장, 무차별 대입 방어, 레인보우 테이블 방어, DB 유출 시 보호
특징: 단방향, Salt 사용, 느린 연산(의도적), 메모리 하드, GPU 저항
핵심 개념
- •Salt: 사용자별 랜덤 값, 같은 비밀번호도 다른 해시, 레인보우 테이블 무효화
- •반복(Iteration): 연산 반복으로 시간 지연, 무차별 대입 비용 증가
- •메모리 하드: 많은 메모리 필요, GPU/ASIC 공격 어렵게
주요 알고리즘
- •Argon2(2015, 권장): 메모리 하드, GPU 저항, Argon2id(하이브리드) 권장, Password Hashing Competition 우승
- •bcrypt(1999): Blowfish 기반, 비용 인자(work factor), 널리 사용, GPU 저항 약함
- •scrypt(2009): 메모리 하드, GPU 저항, 비트코인 채굴에도 사용, 설정 복잡
- •PBKDF2(2000): 표준, 단순, GPU 공격 취약, 레거시 시스템
Argon2 매개변수: 메모리(m), 반복(t), 병렬도(p), Argon2i/Argon2d/Argon2id
취약한 해시: MD5, SHA-1, 단순 SHA-256(Salt 없음) → 절대 사용 금지
권장 설정: Argon2id(m=64MB, t=3, p=4) 또는 bcrypt(cost=12)
장점: 무차별 대입 방어, 레인보우 테이블 방어, DB 유출 시 안전성
단점: 느린 연산(의도적), 서버 부하, 설정 복잡도
적용사례: 사용자 인증, 비밀번호 저장, 웹 애플리케이션, API 키 저장
비교: Argon2(최신/메모리하드) vs bcrypt(널리사용) vs scrypt(메모리하드) vs PBKDF2(레거시)
연관: 해시 함수, Salt, 인증, OWASP, 비밀번호 정책