정보 보안 기초
웹 서비스에서 이용자의 비밀번호를 저장할 때, 비밀번호에 이용자마다 다른 무작위 값(솔트)을 더한 뒤 해시값을 계산하여 저장한다. 솔트를 사용하는 주된 목적은?
- A해시값으로부터 솔트를 사용해 원래 비밀번호를 복원할 수 있게 하여, 비밀번호를 잊은 이용자에게 알려 줄 수 있게 한다
- B같은 비밀번호를 쓰는 이용자가 있어도 저장되는 해시값이 다르게 하여, 미리 계산한 해시값 표를 이용한 해독을 어렵게 한다
- C해시값을 짧게 하여 데이터베이스 용량을 절약한다
정답과 해설 보기
정답: B. 같은 비밀번호를 쓰는 이용자가 있어도 저장되는 해시값이 다르게 하여, 미리 계산한 해시값 표를 이용한 해독을 어렵게 한다
비밀번호는 그대로 저장하지 않고 해시 함수로 계산한 해시값을 저장하는 것이 기본입니다. 로그인할 때는 입력된 비밀번호의 해시값을 계산하여 저장된 값과 비교합니다. 그러나 해시값만 저장하면 같은 비밀번호의 이용자는 같은 해시값이 되어, 자주 쓰이는 비밀번호의 해시값을 미리 계산한 표(레인보 테이블 등)와 대조하기만 해도 많은 비밀번호가 드러나 버립니다. 솔트는 이용자마다 무작위로 만들어 비밀번호에 더하는 값으로, 해시값과 함께 저장합니다. 솔트는 비밀로 할 필요는 없지만 이용자마다 값이 다르므로, 같은 비밀번호라도 해시값이 달라져 사전에 계산한 표를 사용할 수 없게 됩니다. 공격자는 이용자마다 다시 계산해야 하므로 수고가 크게 늘어납니다.