4자리 PIN 은 1만 조합. 종이상으론 trivially 깨져. 실전에선 두 개 합쳐지는 방어로 솔로 앱한테 가장 비용 효과적인 auth 선택 중 하나가 돼. 수학은 한 번 해볼 가치 있어.
Brute force 세 모드
| 모드 | 속도 | 물리치는 법 |
|---|---|---|
| Offline (hash leak) | SHA256: ~10⁹ 추측/초/GPU → 4자리는 microsecond | Bcrypt cost 12: ~6 추측/초/코어 → 4자리 ~30분 |
| Online, lockout 없음 | HTTP 요청 속도 — Tailscale 통해 ~100/초 → 4자리 ~2분 | Rate limit + lockout (이 트랙) |
| Online, lockout-after-5 | 5회 시도 후 blacklist → opportunistic 공격자한텐 사실상 못 깸 | 이게 목표 |
5자리가 사주는 거
| PIN 길이 | 조합 | UX 비용 | marginal 보안 이득 (lockout 있을 때) |
|---|---|---|---|
| 4 | 10,000 | baseline (빠름) | baseline |
| 5 | 100,000 | +키 한 번 | online 10x; bcrypt cost 12 에서 offline 미미 |
| 6 | 1,000,000 | +키 두 번 | 100x; lockout 실패할 때만 의미 |
| 8 | 100,000,000 | +키 네 번; 사람들 더듬거리기 시작 | 이 시점부터 diminishing returns |