정보 보안 기초
비밀번호 저장에 SHA-256 같은 고속 해시 함수를 그대로 사용하지 않고, bcrypt나 Argon2처럼 일부러 계산에 시간이 걸리도록 설계된 방식을 사용하는 것이 권장되는 이유로 올바른 것은?
- A계산에 시간이 걸리는 방식은 출력이 길어서 충돌이 일어나지 않게 되기 때문에
- B계산에 시간을 들이면 해시값으로부터 원래 비밀번호를 정당한 이용자만 복원할 수 있게 되기 때문에
- C저장된 해시값이 유출되었을 때, 공격자가 후보 비밀번호 하나를 시도하기 위한 계산도 무거워져 무차별 대입나 사전 공격에 걸리는 시간이 크게 늘어나기 때문에
정답과 해설 보기
정답: C. 저장된 해시값이 유출되었을 때, 공격자가 후보 비밀번호 하나를 시도하기 위한 계산도 무거워져 무차별 대입나 사전 공격에 걸리는 시간이 크게 늘어나기 때문에
비밀번호의 해시값이 유출되면 공격자는 자신의 컴퓨터로 후보 비밀번호를 차례로 해시하여 일치하는 것을 찾을 수 있습니다. SHA-256 같은 범용 해시 함수는 대량의 데이터를 빠르게 처리하도록 만들어졌으므로, GPU 등을 사용하면 초당 막대한 수의 후보를 시도할 수 있습니다. bcrypt나 Argon2 같은 비밀번호 저장용 방식은 계산 반복 횟수(비용)를 조정할 수 있어 1회의 계산을 일부러 무겁게 합니다. 예를 들어 1회의 계산을 100만 배 느리게 하면 무차별 대입에 걸리는 시간도 100만 배가 됩니다. 정당한 이용자가 로그인할 때는 한 번 계산할 뿐이므로 0.1초 정도의 지연이라면 문제가 되지 않습니다. Argon2는 계산에 많은 메모리도 사용하도록 설정할 수 있어, GPU나 전용 회로로 대량으로 병렬 계산하는 것을 어렵게 합니다. 어느 방식이든 이용자별 솔트와 조합하여 사용합니다.