비밀번호는 어떻게 저장될까?
제대로 된 서비스는 네 비밀번호를 모른다
한 줄로 말하면
제대로 만든 서비스는 비밀번호를 그대로 저장하지 않고, 되돌릴 수 없는 값(해시)으로 바꿔서 저장해.
그래서 서비스 회사도 네 진짜 비밀번호를 몰라. "비밀번호 찾기"를 누르면 원래 비밀번호를 알려주는 대신 새로 정하라고 하는 이유가 바로 이거야.
그냥 해시만 하면 될까?
문제: 같은 비밀번호는 같은 결과
믹서기 비유를 떠올려 봐. 같은 재료면 같은 주스가 나오지? 그러면 공격자가 흔한 비밀번호 수백만 개를 미리 갈아서 "주스 맛 사전"을 만들어 둘 수 있어. DB를 훔친 뒤 사전과 비교하면 123456, password 같은 비밀번호는 금방 알아내.
해결 1: 솔트 넣기
그래서 사람마다 다른 무작위 재료, 솔트를 같이 넣어서 갈아. 같은 123456이라도 솔트가 다르면 결과가 완전히 달라져서 미리 만든 사전이 쓸모없어져.
해결 2: 일부러 느린 믹서기 쓰기
일반 해시는 엄청 빨라서 공격자가 1초에 엄청나게 많이 대입해 볼 수 있어. 그래서 비밀번호에는 일부러 느리게 만든 전용 해시(bcrypt, Argon2id 같은 것)를 써. 로그인 한 번엔 티가 안 나지만, 수십억 번 대입하려는 공격자에겐 엄청난 시간이 들어.
서비스가 털려도 내 비밀번호가 위험한 이유
아무리 저장을 잘해도 123456처럼 너무 흔한 비밀번호는 결국 맞혀져. 그리고 더 큰 문제가 있어. 사람들이 같은 비밀번호를 여러 곳에 쓴다는 것이야.
- A 사이트 유출 — 허술한 사이트에서 이메일+비밀번호가 샘
- 대입 시도 — 같은 조합을 B, C, D 사이트에 자동으로 넣어 봄
- 다른 계정도 털림 — 같은 비밀번호를 쓴 곳이 전부 열림
이런 공격을 크리덴셜 스터핑이라고 해. 그래서 비밀번호 관리자(브라우저·폰 기본 기능이나 전용 앱)로 사이트마다 다른 긴 비밀번호를 쓰고, 중요한 계정은 2단계 인증이나 패스키를 켜는 게 제일 좋아.
AI가 자주 하는 실수
확인 퀴즈
- 입력한 그대로 저장
- 열쇠로 풀 수 있게 암호화해서 저장
- 되돌릴 수 없는 비밀번호 전용 해시로 저장
- 사용자 폰에만 저장
정답 보기
3번. 비밀번호는 서비스도 원문을 알 필요가 없어. 솔트를 넣은 비밀번호 전용 해시로 저장해.
- 비밀번호를 짧게 만들려고
- 같은 비밀번호라도 결과를 다르게 만들어 미리 계산한 사전을 무력화하려고
- 해시를 더 빨리 계산하려고
- 비밀번호를 나중에 되돌리려고
정답 보기
2번. 솔트는 사람마다 다른 무작위 값이라, 흔한 비밀번호를 미리 해시해 둔 표로 한 번에 푸는 걸 막아.
- 비밀번호를 자주 같은 걸로 바꾸기
- 사이트마다 다른 비밀번호 + 2단계 인증
- 비밀번호를 메모장에 적어두기
- 로그인을 자주 안 하기
정답 보기
2번. 사이트마다 다르면 한 곳이 털려도 다른 곳은 안전해. 2단계 인증이 한 번 더 막아줘.
무료 · 카카오로 바로 시작 · 레슨 243개