해시
해시는 임의 길이의 입력을 일정한 길이의 해시값으로 변환하는 단방향 함수이며 무결성 확인과 비밀번호 검증 등에 사용됩니다.
해시
암호학적 해시 함수는 같은 입력에 같은 결과를 만들고 작은 입력 변화에도 크게 다른 결과를 생성하도록 설계됩니다. 원문을 해시값에서 직접 복원하는 기능은 제공하지 않습니다. 충돌 저항성, 역상 저항성, 두 번째 역상 저항성이 중요한 성질입니다.
파일 무결성 확인에는 빠른 범용 해시가 적합할 수 있습니다. 비밀번호 저장에는 계산이 빠른 범용 해시가 적합하지 않습니다. 공격자의 대량 추측 비용을 높이기 위해 Argon2id, scrypt, bcrypt, PBKDF2 같은 전용 방식과 솔트를 사용해야 합니다.
핵심 특성
사용 맥락과 작동 원리
파일 배포자는 해시값을 제공해 다운로드 파일의 변경 여부를 확인하게 할 수 있습니다. 공격자가 파일과 해시값을 함께 바꿀 수 있는 환경에서는 서명된 배포와 신뢰된 채널이 추가로 필요합니다.
비밀번호 검증에서는 입력 비밀번호와 저장된 솔트로 같은 함수를 실행해 결과를 비교합니다. 서비스는 원문을 알 필요가 없습니다. 작업비용은 하드웨어 성능 변화에 맞춰 주기적으로 조정해야 합니다.
유출·오용 시 위험
해시값 유출은 원문이 즉시 공개된 상태와 동일하지 않습니다. 공격자는 후보 입력을 반복 계산해 일치값을 찾을 수 있습니다. 짧고 흔한 비밀번호, 빠른 해시, 솔트 부재는 추측 성공 가능성을 높입니다.
오래된 충돌 취약 해시를 무결성과 서명에 사용하면 공격자가 같은 해시를 가진 다른 데이터를 만들 위험이 있습니다. 사용 목적에 적합한 현대 알고리즘을 선택해야 합니다.
사건 공지에서 확인할 항목
- 비밀번호 해시와 파일 무결성 해시 중 사용 목적을 확인합니다.
- 알고리즘, 솔트, 작업비용, 페퍼 사용 여부를 확인합니다.
- 아이디와 해시값이 함께 유출되었는지 확인합니다.
- 오프라인 추측 공격 가능성과 비밀번호 강도를 평가합니다.
- 강제 변경과 해시 재계산 계획을 확인합니다.
개인이 취할 조치
- 비밀번호 해시 유출 통지가 있으면 해당 비밀번호를 즉시 변경합니다.
- 같은 비밀번호와 유사 변형을 사용한 다른 계정도 정리합니다.
- 비밀번호 관리자를 사용하고 MFA를 설정합니다.
- 파일 해시를 확인할 때는 제공 경로의 신뢰성과 전자서명도 함께 확인합니다.
조직의 보호조치
- 비밀번호에는 메모리·연산 비용이 큰 전용 해시를 사용합니다.
- 사용자별 고유 솔트를 자동 생성합니다.
- 작업비용을 정기 점검하고 로그인 성공 시 점진적으로 재해시합니다.
- 무결성 용도에는 현재 안전한 해시와 서명을 사용합니다.
- 해시값을 익명화 결과로 간주하지 않고 재식별 가능성을 평가합니다.
혼동하기 쉬운 개념
암호화는 키로 원문을 복원할 수 있습니다. 해시는 원문 복원을 목표로 하지 않습니다. 체크섬은 우발적 오류 탐지에 초점을 둔 값이며 공격자 변조에 대한 보안 성질이 부족할 수 있습니다. 해시된 식별자는 입력 후보가 좁으면 다시 매칭될 수 있습니다.