비밀번호와 인증정보
비밀번호는 이용자가 알고 있는 비밀값으로 계정 인증에 사용되며, 서비스는 원문을 복원할 수 없는 전용 비밀번호 해시 방식으로 저장해야 합니다.
비밀번호와 인증정보
비밀번호는 이용자가 기억하거나 비밀번호 관리자가 보관하는 인증 비밀입니다. 안전성은 길이, 예측 가능성, 서비스 간 재사용, 유출 여부에 크게 영향을 받습니다. 복잡성 규칙만 강화하면 이용자가 일정한 패턴을 반복할 수 있어 충분한 길이와 고유성이 중요합니다.
서비스는 비밀번호 원문을 저장하거나 복호화 가능한 암호문으로 보관하지 않아야 합니다. 사용자별 솔트와 계산 비용이 큰 비밀번호 전용 해시 함수를 사용해 검증값을 저장하고, 유출된 비밀번호 목록 차단과 로그인 시도 제한을 함께 적용해야 합니다.
핵심 특성
사용 맥락과 작동 원리
로그인 과정에서 서버는 입력된 비밀번호를 저장된 검증값과 비교합니다. 안전한 구현에서는 원문을 알 필요가 없습니다. 비밀번호 재설정은 기존 값을 보여주는 방식이 아닌 새 값을 설정하는 방식으로 제공해야 합니다.
비밀번호 정책은 무차별 대입과 유출된 자격증명 재사용을 함께 고려해야 합니다. 무조건적인 주기 변경은 예측 가능한 변형을 만들 수 있으며, 침해 정황과 유출 확인 시 즉시 변경하는 운영이 중요합니다.
유출·오용 시 위험
비밀번호와 이메일 조합이 유출되면 크리덴셜 스터핑이 시도될 수 있습니다. 저장된 해시가 유출된 경우 공격자는 오프라인에서 많은 후보를 계산해 일치값을 찾으려고 합니다. 약한 해시, 짧은 비밀번호, 솔트 부재는 위험을 증가시킵니다.
메일 계정, 통신사, 금융서비스의 비밀번호 유출은 다른 계정의 복구 경로까지 위협할 수 있습니다. 비밀번호 재사용이 피해 확산의 핵심 요인입니다.
사건 공지에서 확인할 항목
- 비밀번호 원문, 암호화값, 해시값 중 저장 형태를 확인합니다.
- 사용한 해시 알고리즘, 솔트, 작업비용의 적절성을 확인합니다.
- 이메일·아이디와 함께 유출되었는지 확인합니다.
- 로그인 성공과 세션 탈취 정황이 있는지 확인합니다.
- 강제 변경, 세션 폐기, 유출 비밀번호 차단 계획을 확인합니다.
개인이 취할 조치
- 유출된 서비스의 비밀번호를 즉시 고유한 값으로 변경합니다.
- 같은 비밀번호와 유사한 변형을 사용한 모든 서비스도 각각 변경합니다.
- 비밀번호 관리자를 사용해 긴 임의값을 생성하고 보관합니다.
- 다중인증을 설정하고 기존 세션과 앱 비밀번호를 정리합니다.
- 메일 계정과 통신사 계정을 우선 보호합니다.
조직의 보호조치
- Argon2id, scrypt, 적절한 bcrypt 또는 PBKDF2 같은 비밀번호 전용 저장 방식을 적용합니다.
- 사용자별 고유 솔트를 자동 생성하고 필요 시 별도 페퍼를 안전하게 관리합니다.
- 유출 비밀번호 목록과 지나치게 흔한 비밀번호를 차단합니다.
- 로그인 속도 제한, 위험 기반 인증, 크리덴셜 스터핑 탐지를 적용합니다.
- 비밀번호 원문을 로그, 분석도구, 고객지원 화면에 남기지 않습니다.
혼동하기 쉬운 개념
암호화는 키로 원문을 복원할 수 있습니다. 비밀번호 해시는 검증을 위해 단방향 계산을 사용합니다. 솔트는 사용자별 고유값이며 비밀값일 필요는 없습니다. OTP는 짧은 시간 동안 한 번 사용하는 인증값입니다.