정보 보안 기초

암호에서 사용되는 해시 함수(암호학적 해시 함수)의 성질로 올바른 것은?

  1. A해시값으로부터 원래 데이터를 개인 키를 사용하면 복원할 수 있다
  2. B입력 길이에 비례하여 해시값도 길어진다
  3. C입력이 같으면 반드시 같은 해시값이 되고, 입력이 1비트만 달라도 해시값은 예측할 수 없을 만큼 크게 바뀐다
정답과 해설 보기

정답: C. 입력이 같으면 반드시 같은 해시값이 되고, 입력이 1비트만 달라도 해시값은 예측할 수 없을 만큼 크게 바뀐다

해시 함수는 임의 길이의 데이터로부터 정해진 길이의 값(해시값, 다이제스트)을 계산하는 함수입니다. 예를 들어 SHA-256은 입력 길이와 관계없이 256비트 값을 출력합니다. 같은 입력에서는 반드시 같은 값이 얻어지고, 입력이 조금이라도 다르면 출력은 예측할 수 없을 만큼 크게 바뀝니다. 암호에서 사용하는 해시 함수에는 나아가 해시값으로부터 원래 입력을 구하는 것이 현실적으로 불가능할 것(일방향성, 역상 저항성)과, 같은 해시값이 되는 서로 다른 두 입력을 찾기 어려울 것(충돌 저항성)이 요구됩니다. 해시 함수는 키를 사용하지 않는 계산이며 암호화가 아니므로, 복호화하여 원래대로 되돌릴 수도 없습니다. 변조 검출, 디지털 서명, 비밀번호 저장 등에 사용됩니다.

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

정보 보안 기초의 다른 문제

  1. 출력이 256비트인 이상적인 해시 함수에 대해 무차별 대입로 공격할 때 필요한 계산 횟수의 기준으로, '주어진 해시값이 되는 입력을 찾는(역상 공격)' 경우와 '같은 해시값이 되는 서로 다른 두 입력을 아무것이나 찾는(충돌 공격)' 경우의 조합으로 올바른 것은?
  2. 웹 서비스에서 이용자의 비밀번호를 저장할 때, 비밀번호에 이용자마다 다른 무작위 값(솔트)을 더한 뒤 해시값을 계산하여 저장한다. 솔트를 사용하는 주된 목적은?
  3. 비밀번호 저장에 SHA-256 같은 고속 해시 함수를 그대로 사용하지 않고, bcrypt나 Argon2처럼 일부러 계산에 시간이 걸리도록 설계된 방식을 사용하는 것이 권장되는 이유로 올바른 것은?
  4. 8자 비밀번호를 모든 후보를 시도하는 무차별 대입로 찾는다. 초당 1×10^10개의 후보를 시도할 수 있을 때, 영문 소문자(26종류)만으로 만든 비밀번호와 영문 대문자·영문 소문자·숫자(62종류)로 만든 비밀번호에 대해 모든 후보를 다 시도할 때까지의 시간의 조합으로 가장 가까운 것은?
  5. A 씨가 B 씨에게 보내는 문서에 디지털 서명을 붙인다. 서명의 생성과 검증에 사용하는 키와, 디지털 서명으로 확인할 수 있는 것의 조합으로 올바른 것은?