비밀번호 해싱 (password hashing)

컴퓨터과학·AI
한 줄 정의: 비밀번호를 원문 대신 솔트를 더해 느린 해시 함수로 변환한 값으로 저장하는 보안 관행이에요.

쉽게 풀면

웹사이트가 비밀번호를 그대로 저장하면 데이터가 유출될 때 모두 드러나요. 그래서 비밀번호를 되돌릴 수 없는 값으로 바꾸어 저장하고, 로그인할 때 입력값을 같은 방식으로 바꿔 비교해요. 이때 사용자마다 다른 무작위 값(솔트)을 섞고, 일부러 계산이 느린 함수를 써서 공격자가 추측하기 어렵게 해요.

왜 중요한가

데이터 유출 사고의 피해 규모를 결정하는 핵심 보안 요소라 보안 공학과 인증 시스템 연구에서 기본으로 다뤄져요. 알고리즘별 공격 비용 비교 연구도 많아요.

논문에서는 이렇게 쓰입니다

"유출된 데이터베이스는 솔트 없이 MD5로 해시되어 있어 레인보우 테이블 공격으로 대부분의 비밀번호가 복원되었다."

잘못된 비밀번호 해싱이 피해를 키운 사례 문장이에요.

조금 더 깊게 보면

일반 암호학적 해시함수인 SHA-256 등은 빨리 계산되도록 설계되어 GPU로 초당 수십억 번 추측할 수 있어 비밀번호 저장에는 알맞지 않아요. 그래서 반복 횟수를 조절하는 PBKDF2, bcrypt, 메모리를 많이 쓰게 하는 scrypt와 Argon2 같은 전용 함수를 써요. 솔트는 같은 비밀번호도 다른 해시값이 되게 해서 레인보우 테이블 공격을 막아요. 서버에만 보관하는 비밀값(페퍼)을 추가하기도 해요.

주의할 점

Argon2는 비밀번호 해싱에 쓰는 특정 알고리즘이고, 비밀번호 해싱은 솔트·느린 함수·안전한 저장까지 포함한 일반 관행이에요. 해싱은 암호화와 달리 원래 값으로 되돌리는 키가 없다는 점도 구분해야 해요.

관련 용어