유틸리티 소개

개발자가 알려주는 비밀번호 해싱과 솔팅

개발 공부하면서 비밀번호가 서버에 어떻게 저장되는지 알게 됐다. 비밀번호 생성기로 만든 비밀번호가 어떻게 보호되는지 이해하면 보안의 중요성이 더 와닿는다.

해싱이란

비밀번호를 일정한 규칙으로 변환해서 저장한다. "password123" → "ef92b778..." 이런 식으로. 원본 비밀번호는 서버에 없고, 해시값만 저장된다. 로그인할 때 입력한 비밀번호를 같은 방식으로 해싱해서 비교한다.

왜 해싱을 하나

서버가 해킹당해도 원본 비밀번호를 알 수 없다. 해시에서 원본을 복원하는 건 (제대로 된 알고리즘이면) 사실상 불가능하다. 그래서 데이터 유출 사고 나도 비밀번호는 즉시 털리지 않는다.

솔팅이란

같은 비밀번호라도 사용자마다 다른 해시값이 나오게 랜덤 문자열(솔트)를 추가한다. "password123" + "abc123" → 해시. 이러면 레인보우 테이블(미리 계산해둔 해시 목록) 공격도 막을 수 있다.

사용자 입장에서

서버가 얼마나 잘 보호해주든, 강력한 비밀번호를 쓰는 건 여전히 중요하다. 해싱이 있어도 단순한 비밀번호는 사전 공격으로 빠르게 뚫린다. 복잡할수록 해커가 복원하는 데 시간이 오래 걸린다.

해싱 알고리즘의 중요성

MD5, SHA-1은 구식이라 안전하지 않다. bcrypt, Argon2 같은 최신 알고리즘을 써야 한다. 강력한 비밀번호도 중요하지만, 서비스 제공자가 얼마나 잘 보호하느냐도 중요하다.

마무리 정리

비밀번호 생성기로 복잡하게 만들고, 관리 앱에 저장하고, 2단계 인증 걸어두는 것. 이 세 가지가 개인 보안의 기본이다. 귀찮아도 지금 시작하면 나중에 편하다. 한 번 털리면 그 수습이 훨씬 힘들다.