개발 공부하면서 비밀번호가 서버에 어떻게 저장되는지 알게 됐다. 비밀번호 생성기로 만든 비밀번호가 어떻게 보호되는지 이해하면 보안의 중요성이 더 와닿는다.
해싱이란
비밀번호를 일정한 규칙으로 변환해서 저장한다. "password123" → "ef92b778..." 이런 식으로. 원본 비밀번호는 서버에 없고, 해시값만 저장된다. 로그인할 때 입력한 비밀번호를 같은 방식으로 해싱해서 비교한다.
왜 해싱을 하나
서버가 해킹당해도 원본 비밀번호를 알 수 없다. 해시에서 원본을 복원하는 건 (제대로 된 알고리즘이면) 사실상 불가능하다. 그래서 데이터 유출 사고 나도 비밀번호는 즉시 털리지 않는다.
솔팅이란
같은 비밀번호라도 사용자마다 다른 해시값이 나오게 랜덤 문자열(솔트)를 추가한다. "password123" + "abc123" → 해시. 이러면 레인보우 테이블(미리 계산해둔 해시 목록) 공격도 막을 수 있다.
사용자 입장에서
서버가 얼마나 잘 보호해주든, 강력한 비밀번호를 쓰는 건 여전히 중요하다. 해싱이 있어도 단순한 비밀번호는 사전 공격으로 빠르게 뚫린다. 복잡할수록 해커가 복원하는 데 시간이 오래 걸린다.
해싱 알고리즘의 중요성
MD5, SHA-1은 구식이라 안전하지 않다. bcrypt, Argon2 같은 최신 알고리즘을 써야 한다. 강력한 비밀번호도 중요하지만, 서비스 제공자가 얼마나 잘 보호하느냐도 중요하다.
마무리 정리
비밀번호 생성기로 복잡하게 만들고, 관리 앱에 저장하고, 2단계 인증 걸어두는 것. 이 세 가지가 개인 보안의 기본이다. 귀찮아도 지금 시작하면 나중에 편하다. 한 번 털리면 그 수습이 훨씬 힘들다.