사전 목록
솔트

솔트

솔트는 비밀번호를 해시할 때 사용자별로 생성해 함께 입력하는 고유한 임의값이며 동일한 비밀번호가 서로 다른 해시값을 갖게 합니다.

#솔트#Salt

솔트

솔트비밀번호 저장에서 미리 계산된 대규모 해시표의 효율을 낮추고, 같은 비밀번호를 사용하는 이용자들의 해시값이 같아지는 현상을 막습니다. 솔트는 충분한 길이의 예측하기 어려운 값으로 각 비밀번호마다 새로 생성해야 합니다.

솔트목적은 비밀 유지가 아닙니다. 일반적으로 해시값과 함께 저장할 수 있습니다. 공격자가 각 사용자의 비밀번호 후보를 개별적으로 계산하도록 만들어 대규모 공격 비용을 높이는 역할을 합니다.

핵심 특성

고유성사용자와 비밀번호 레코드마다 서로 다른 값을 사용합니다.

공개 가능성비밀값으로 취급할 필요는 없으며 해시와 함께 저장할 수 있습니다.

효과동일 비밀번호의 동일 해시와 사전계산 공격의 재사용을 방지합니다.

사용 맥락과 작동 원리

비밀번호 등록 시 서비스는 안전한 난수 생성기로 솔트를 만들고 비밀번호와 함께 전용 해시 함수에 입력합니다. 검증 시 저장된 솔트를 다시 사용해 같은 계산을 수행합니다.

bcrypt와 Argon2id 같은 현대 비밀번호 저장 형식은 솔트를 결과 문자열 안에 포함하는 경우가 많습니다. 개발자가 별도 필드를 직접 설계하지 않아도 라이브러리가 안전하게 처리할 수 있습니다.

유출·오용 시 위험

솔트유출되었다는 사실 자체는 비밀번호 원문 유출을 뜻하지 않습니다. 해시값, 알고리즘, 작업비용, 비밀번호 강도가 전체 위험을 결정합니다. 솔트가 없거나 여러 사용자에게 같은 값이 사용되면 공격자는 계산 결과를 재사용할 수 있습니다.

솔트암호화 키나 공통 비밀값처럼 관리하면 구현이 복잡해질 수 있습니다. 추가 비밀값이 필요한 경우 페퍼를 별도 비밀관리 시스템에서 관리하는 방식이 사용됩니다.

사건 공지에서 확인할 항목

개인이 취할 조치

조직의 보호조치

혼동하기 쉬운 개념

솔트는 사용자별로 공개 저장 가능한 고유값입니다. 페퍼는 서비스가 별도로 보호하는 공통 또는 분리된 비밀값입니다. 해시비밀번호솔트를 계산한 결과입니다. 암호화 키는 원문 복호화에 사용되는 비밀값입니다.

공식 참고자료

OWASP — 비밀번호 저장 지침

OWASP — 비밀정보 관리 지침