← 질문 목록
#289깊이 0
비밀번호를 그냥 해시하면 왜 안 되는가?
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
같은 비밀번호가 같은 해시가 되고, 해시 함수가 너무 빠르기 때문이다.
- 1. 공격자에서 유출된 표로: 같은 해시끼리 묶는다
- 2. 공격자에서 미리 만든 표로: 흔한 비밀번호의 해시를 대조한다
- 3. 미리 만든 표에서 공격자로: 초당 수십억 번 맞춰 본다
소금을 섞으면 첫 번째가 막힌다. 사용자마다 다른 값을 붙여 해시하므로 같은 비밀번호여도 결과가 달라진다. 미리 만든 표가 쓸모없어진다.
소금만으로는 부족하다. 한 사람을 노리고 그 사람의 소금으로 다시 만들면 된다. 빠른 함수라면 그게 오래 안 걸린다.
그래서 일부러 느린 함수를 쓴다. 반복 횟수를 올려 한 번 맞춰 보는 값을 비싸게 만든다. 메모리를 많이 쓰게 만드는 것도 같은 뜻이다.
느리게 만드는 정도는 서버가 견디는 선에서 정한다. 로그인 한 번에 수백 밀리초쯤이 흔한 기준이다.