본문 바로가기

비밀번호를 그대로 저장하지 않는 이유 | 정보처리의 흐름 FLOW 06 | K-BOOKS

FLOW 06 · INFORMATION PROCESSING
DIRECTION 06 · 정보를 운영하는 방향 · 보안 · 형상관리 · 배포 · 운영

비밀번호를 그대로 저장하지 않는 이유

보안 · 형상관리 · 배포 · 운영

QUESTION · 질문에서 시작합니다

사용자의 비밀번호가 데이터베이스에 그대로 저장되어 있다고 가정해 보자.

user01 | password1234

데이터베이스가 유출되는 순간 모든 비밀번호도 함께 노출된다.

비밀번호는 원래 값을 그대로 보관하지 않는 방식이 필요하다.

비밀번호는 원래 값을 다시 알아낼 필요가 없는 정보다. 로그인할 때 사용자가 입력한 비밀번호를 같은 방식으로 처리한 뒤 저장된 결과와 비교하면 되기 때문이다.

그래서 일반적으로 비밀번호는 단방향 해시와 솔트를 이용해 저장한다. 같은 비밀번호라도 사용자마다 다른 솔트를 적용하면 저장 결과가 달라져 단순 비교 공격을 어렵게 만들 수 있다.

같은 입력에서 일정한 결과를 만든다

암호학적 해시 함수(Cryptographic Hash Function) 입력 데이터를 일정한 길이의 해시값으로 변환하며, 결과값만으로 원래 입력을 현실적으로 되찾기 어렵도록 설계된다.
password1234
↓ 해시 함수
9f86d0...와 같은 고정 길이 값

시스템은 사용자가 입력한 비밀번호를 다시 해시한 뒤 저장된 값과 비교할 수 있다.

해시 함수는 입력 길이가 달라도 일정한 길이의 결과를 만드는 특성을 갖는다. 원문을 되돌리는 복호화 과정이 없기 때문에 암호화와 목적이 다르며, 비밀번호 검증이나 무결성 확인처럼 ‘같은 입력인가’를 비교하는 데 활용된다.

같은 비밀번호라도 결과를 다르게

많은 사용자가 같은 비밀번호를 사용할 수 있다.

모든 사람이 같은 비밀번호를 사용했을 때 해시값도 항상 같다면 공격자가 패턴을 찾기 쉬워질 수 있다.

Salt 비밀번호를 해시할 때 사용자마다 고유한 임의값을 함께 사용해 같은 비밀번호라도 서로 다른 결과가 나오게 하는 방법이다.

실제 비밀번호 저장에는 비밀번호 저장용으로 설계된 느린 해시 방식을 사용하는 것이 중요하다.

솔트는 비밀로 숨겨야 하는 값이라기보다 사용자마다 다른 값을 섞어 동일 비밀번호의 해시 결과가 같아지는 것을 막는 데 목적이 있다. 저장할 때는 솔트와 해시 결과를 함께 보관해 다음 검증에도 같은 솔트를 사용할 수 있다.

솔트를 사용해도 비밀번호 자체가 약하면 위험할 수 있다. 그래서 비밀번호 저장에는 반복 계산 비용이 큰 전용 해시 알고리즘을 사용해 대량 추측 공격을 어렵게 만드는 방법을 함께 고려한다.

같은 비밀번호를 쓰는 사용자들이 있어도 솔트를 다르게 적용하면 저장된 결과는 서로 달라진다. 이렇게 저장 결과의 반복 패턴을 줄이는 것이 솔트의 역할이다. 다만 솔트만으로 약한 비밀번호가 강해지는 것은 아니므로 비밀번호 저장 방식 전체를 함께 보아야 한다.

더 찾아보고 싶다면846면 학습 아카이브에서 검색하세요.
K-BOOKS Q&A이 내용이 헷갈리나요?

공부하던 페이지를 자동으로 연결해 질문할 수 있습니다.

RELATED STUDY MATERIALS

이 개념과 이어서 볼 정보처리 자료

학습자료실 65개 →

CONTINUE · INFORMATION PROCESSING ENGINEER보안에서 시험 학습으로 이어가기
이야기형 개념 설명은 그대로 두고, 필요한 시험 요약·문제·실습으로 연결합니다.