정처LAB 자체 제작내용 검수 완료정처LAB 정보처리기사 필기 자체 제작 2회 · 정보시스템 구축 관리 · 비밀번호 저장 · 98번
유출된 비밀번호 테이블에서 사용자마다 서로 다른 salt가 저장되어 있었지만, 검증값은 `SHA-256(salt || password)` 한 번으로 계산되어 있었다. 이에 대한 설명과 개선 방법으로 옳은 것은?
1
salt는 동일 비밀번호의 검증값과 사전표 재사용을 어렵게 하지만 빠른 해시의 대입 속도는 늦추지 못하므로, 메모리·반복 비용을 조정할 수 있는 비밀번호 KDF를 사용한다.
정답 근거salt의 재사용 방지 효과와 느린 비밀번호 KDF의 대입 비용 증가 효과를 구분한 설명이다.
2
salt가 공개되었으므로 모든 비밀번호를 즉시 복호화할 수 있으며, salt를 암호키로 바꾸면 해결된다.
오답 이유salt는 공개 저장해도 되며 해시는 복호화하는 연산이 아니다.
3
SHA-256 출력이 256비트이므로 대입 공격은 불가능하고 별도 개선이 필요 없다.
오답 이유출력 길이가 충분해도 사용자가 고른 비밀번호 공간은 작을 수 있어 빠른 후보 대입이 가능하다.
4
모든 사용자에게 같은 salt를 적용하면 병렬 대입 공격이 더 어려워진다.
오답 이유공통 salt는 사용자 사이의 계산 재사용을 허용해 사용자별 무작위 salt보다 약하다.
정답·상세해설
정답 1번
salt는 같은 비밀번호도 사용자마다 다른 검증값이 되게 해 미리 계산한 표나 한 사용자의 계산 결과를 다른 사용자에게 재사용하기 어렵게 한다. 그러나 salt는 비밀이 아니며 빠른 SHA-256 한 번의 후보 계산 비용은 낮다. Argon2id·scrypt·bcrypt·PBKDF2처럼 비용을 조정하는 비밀번호 KDF를 사용해야 한다.