정보 보안 기초

웹 서비스에서 이용자의 비밀번호를 저장할 때, 비밀번호에 이용자마다 다른 무작위 값(솔트)을 더한 뒤 해시값을 계산하여 저장한다. 솔트를 사용하는 주된 목적은?

  1. A해시값으로부터 솔트를 사용해 원래 비밀번호를 복원할 수 있게 하여, 비밀번호를 잊은 이용자에게 알려 줄 수 있게 한다
  2. B같은 비밀번호를 쓰는 이용자가 있어도 저장되는 해시값이 다르게 하여, 미리 계산한 해시값 표를 이용한 해독을 어렵게 한다
  3. C해시값을 짧게 하여 데이터베이스 용량을 절약한다
정답과 해설 보기

정답: B. 같은 비밀번호를 쓰는 이용자가 있어도 저장되는 해시값이 다르게 하여, 미리 계산한 해시값 표를 이용한 해독을 어렵게 한다

비밀번호는 그대로 저장하지 않고 해시 함수로 계산한 해시값을 저장하는 것이 기본입니다. 로그인할 때는 입력된 비밀번호의 해시값을 계산하여 저장된 값과 비교합니다. 그러나 해시값만 저장하면 같은 비밀번호의 이용자는 같은 해시값이 되어, 자주 쓰이는 비밀번호의 해시값을 미리 계산한 표(레인보 테이블 등)와 대조하기만 해도 많은 비밀번호가 드러나 버립니다. 솔트는 이용자마다 무작위로 만들어 비밀번호에 더하는 값으로, 해시값과 함께 저장합니다. 솔트는 비밀로 할 필요는 없지만 이용자마다 값이 다르므로, 같은 비밀번호라도 해시값이 달라져 사전에 계산한 표를 사용할 수 없게 됩니다. 공격자는 이용자마다 다시 계산해야 하므로 수고가 크게 늘어납니다.

이 분야 연습하기 분야로 돌아가기

정보 보안 기초의 다른 문제

  1. 비밀번호 저장에 SHA-256 같은 고속 해시 함수를 그대로 사용하지 않고, bcrypt나 Argon2처럼 일부러 계산에 시간이 걸리도록 설계된 방식을 사용하는 것이 권장되는 이유로 올바른 것은?
  2. 8자 비밀번호를 모든 후보를 시도하는 무차별 대입로 찾는다. 초당 1×10^10개의 후보를 시도할 수 있을 때, 영문 소문자(26종류)만으로 만든 비밀번호와 영문 대문자·영문 소문자·숫자(62종류)로 만든 비밀번호에 대해 모든 후보를 다 시도할 때까지의 시간의 조합으로 가장 가까운 것은?
  3. A 씨가 B 씨에게 보내는 문서에 디지털 서명을 붙인다. 서명의 생성과 검증에 사용하는 키와, 디지털 서명으로 확인할 수 있는 것의 조합으로 올바른 것은?
  4. 메시지 인증 코드(MAC)와 디지털 서명을 비교한 설명으로 올바른 것은?
  5. 웹 서버의 서버 인증서에 대응하는 개인 키가 유출되었을 우려가 있음이 밝혀졌다. 인증서의 유효 기간은 아직 남아 있다. 운영자가 취해야 할 대응으로 가장 적절한 것은?