Argon2 vs bcrypt
현대 시스템에서 비밀번호 저장은 단순 해시가 아니라:
"공격자가 최대한 느리게 크래킹하도록 만드는 것"
이 핵심이다.
그래서 현재 가장 많이 비교되는 패스워드 해시 알고리즘이:
- bcrypt
- Argon2
이다.
결론부터 말하면:
현재는 Argon2가 더 현대적이고 강력한 설계
로 평가받는다.
하지만 bcrypt도 여전히 실무에서 엄청 많이 사용된다.
1. 왜 SHA-256 같은 일반 해시를 안 쓰나?
많은 사람들이 처음엔:
SHA-256(password)
하면 안전할 거라 생각한다.
하지만 문제는:
SHA-256이 너무 빠르다
는 것.
GPU 사용 시:
초당 수십억 번 계산 가능
하다.
즉 공격자도 엄청 빠르게 brute-force 가능.
그래서 패스워드 저장용 해시는:
일부러 느리게
설계한다.
2. bcrypt란?
bcrypt는 1999년에 등장한 패스워드 해시 알고리즘이다.
핵심 특징:
- Salt 내장
- Cost 조절 가능
- 일부러 느림
예:
$2b$12$...
여기서:
12
는 cost factor.
cost가 올라가면:
계산 시간이 기하급수적으로 증가
한다.
3. bcrypt의 핵심 아이디어
bcrypt는:
CPU 시간을 많이 사용하게 만들어
brute-force를 어렵게 함
.
즉:
공격자도 느려지게
만든다.
4. bcrypt의 문제점
bcrypt는 오래됐기 때문에 몇 가지 한계가 있다.
1) GPU 대응 한계
bcrypt는:
CPU 중심 설계
다.
현대 GPU/ASIC 공격에 완벽하지 않다.
2) 메모리 사용량이 적음
즉 병렬 하드웨어 공격에 상대적으로 약하다.
3) 입력 길이 제한
보통:
72byte 제한
이 있다.
5. Argon2란?
Argon2는 2015년 Password Hashing Competition(PHC) 우승 알고리즘이다.
즉 bcrypt 이후 세대라고 보면 된다.
핵심 특징:
- 메모리 사용량 증가
- 병렬 처리 제어
- GPU 공격 저항성 강화
즉 단순히:
느리게만
하는 게 아니라:
메모리까지 많이 먹게
만든다.
6. 왜 메모리가 중요해졌나?
현대 공격은 GPU 사용이 핵심이다.
GPU는:
엄청난 병렬 연산
에 강하다.
하지만 GPU는:
메모리는 상대적으로 비쌈
.
그래서 Argon2는:
메모리를 많이 요구
해서 GPU 효율을 떨어뜨린다.
7. Argon2 종류
Argon2는 3종류 있다.
| 종류 | 특징 |
| Argon2d | GPU 공격 저항 강함 |
| Argon2i | Side-channel 공격 방어 |
| Argon2id | 둘 혼합 (권장) |
현재 실무 권장은 거의:
Argon2id
.
8. bcrypt vs Argon2 핵심 차이
| 항목 | bcrypt | Argon2 |
| 등장 시기 | 1999 | 2015 |
| 기본 철학 | CPU 느리게 | CPU + 메모리 많이 사용 |
| GPU 저항성 | 보통 | 강함 |
| 메모리 제어 | 거의 없음 | 매우 강력 |
| 병렬 제어 | 약함 | 가능 |
| 현대성 | 오래됨 | 최신 설계 |
| 실무 사용량 | 매우 많음 | 점점 증가 |
9. 실무에서는 뭐 쓰나?
신규 서비스
가능하면:
Argon2id
추천.
특히 보안 민감 시스템.
기존 시스템
여전히:
bcrypt 엄청 많음
.
왜냐면:
- 검증됨
- 라이브러리 안정적
- 레거시 많음
10. 중요한 건 알고리즘보다 설정값
사실 bcrypt든 Argon2든:
설정(cost parameter)
이 엄청 중요하다.
예:
bcrypt
cost=4
면 너무 빠름.
Argon2
- memory cost
- iterations
- parallelism
낮게 잡으면 의미 없음.
11. 패스워드 저장의 핵심 철학
중요한 건:
패스워드 해시는
"복호화 방지"보다
"대량 추측 공격 지연"
이 목적이라는 것.
즉:
공격 비용을 최대한 비싸게 만드는 것
이 핵심이다.
12. 결국 어떤 걸 선택해야 하나?
현재 기준 정리하면:
bcrypt
장점:
- 검증된 역사
- 라이브러리 많음
- 아직 충분히 안전
단점:
- 오래된 설계
- GPU 대응 한계
Argon2id
장점:
- 최신 설계
- GPU/ASIC 대응 우수
- 메모리 공격 저항성
단점:
- 상대적으로 레거시 적음
- 환경별 튜닝 필요
13. 현실적인 실무 결론
현재 실무 기준으로는:
신규 시스템:
Argon2id 우선 고려
하지만:
bcrypt도 올바른 cost로 사용하면
여전히 매우 강력
하다.
즉 진짜 중요한 건:
- Salt 사용
- 충분한 cost
- 최신 라이브러리
- rate limiting
- MFA
같은 전체 인증 시스템 설계다.
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| 파일 checksum 원리 (0) | 2026.05.13 |
|---|---|
| 무결성이란 무엇인가 (0) | 2026.05.13 |
| SHA-256은 어떻게 동작하는가 (0) | 2026.05.13 |
| MD5는 왜 위험해졌는가 (0) | 2026.05.13 |
| 해시는 왜 복호화가 안될까 (0) | 2026.05.13 |
댓글