정보 보안 기초

출력이 256비트인 이상적인 해시 함수에 대해 무차별 대입로 공격할 때 필요한 계산 횟수의 기준으로, '주어진 해시값이 되는 입력을 찾는(역상 공격)' 경우와 '같은 해시값이 되는 서로 다른 두 입력을 아무것이나 찾는(충돌 공격)' 경우의 조합으로 올바른 것은?

  1. A역상 공격은 약 2^256회, 충돌 공격은 약 2^128회
  2. B역상 공격은 약 2^128회, 충돌 공격은 약 2^256회
  3. C역상 공격도 충돌 공격도 약 2^256회
정답과 해설 보기

정답: A. 역상 공격은 약 2^256회, 충돌 공격은 약 2^128회

출력이 n비트인 이상적인 해시 함수에서는 해시값이 2^n가지 있으며, 입력을 하나 시도할 때마다 정해진 해시값과 일치할 확률은 1/2^n입니다. 그래서 역상 공격에는 대략 2^n회, n = 256이라면 약 2^256회의 계산이 필요합니다. 한편 충돌 공격에서는 어느 두 개가 일치해도 되므로, k개의 입력을 시도하면 비교할 수 있는 쌍이 약 k^2/2가지로 늘어납니다. k^2/2가 2^n에 가까워지는, k가 2^(n/2) 정도에서 충돌을 찾을 가능성이 높아지며, n = 256이라면 약 2^128회입니다. 이것은 '23명이 있으면 생일이 같은 두 사람이 있을 확률이 50%를 넘는다'는 생일 역설과 같은 생각으로, 생일 공격이라고 합니다. 이 때문에 해시 함수의 충돌에 대한 강도는 출력 비트 수의 절반으로 추정되며, 128비트 상당의 강도를 원한다면 256비트 출력이 필요합니다.

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

정보 보안 기초의 다른 문제

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