암호 기술의 기초와 응용

AES를 CBC 모드로 사용할 때 초기화 벡터(IV)의 취급으로 적절한 것은?

  1. AIV는 키와 마찬가지로 비밀로 하고, 모든 메시지에서 같은 값을 계속 사용한다
  2. BIV는 비밀로 하지 않아도 되지만, 메시지마다 공격자가 예측할 수 없는 무작위 값을 새로 고른다
  3. CIV는 비밀로 하지 않아도 되며, 상대와 정해 둔 같은 값(예를 들어 모두 0)으로 매번 고정하여 사용해도 된다
정답과 해설 보기

정답: B. IV는 비밀로 하지 않아도 되지만, 메시지마다 공격자가 예측할 수 없는 무작위 값을 새로 고른다

CBC 모드에서는 각 평문 블록을 직전의 암호문 블록과 XOR한 뒤 암호화하고, 첫 블록은 IV와 XOR합니다. IV는 보통 암호문의 앞에 붙여 보내므로 비밀로 할 필요는 없습니다. 그러나 매번 같은 IV를 사용하면 앞부분이 같은 메시지는 암호문의 앞부분도 같아져, 내용의 일부가 같다는 사실이 새어 나갑니다. 나아가 다음에 사용될 IV를 공격자가 예측할 수 있으면, 고른 평문을 암호화하게 하여 내용을 추측하는 공격이 성립하는 것으로 알려져 있습니다(TLS 1.0에 대한 BEAST 공격 등).

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

암호 기술의 기초와 응용의 다른 문제

  1. AES(블록 길이 16바이트)를 CBC 모드로 사용하고, 패딩에는 PKCS#7 방식을 사용한다. PKCS#7 방식에서는 부족한 바이트 수를 n이라 할 때 값이 n인 바이트를 n개 덧붙이며, 평문의 길이가 정확히 16의 배수일 때도 값이 16인 바이트를 16개 덧붙인다. 96바이트의 평문을 암호화했을 때 암호문의 길이(IV는 포함하지 않음)는?
  2. CBC 모드로 암호화한 데이터를 받는 서버가, 복호화한 후의 패딩이 올바르지 않을 때와 패딩은 올바르지만 내용 검사에 실패했을 때 서로 다른 오류를 돌려주고 있었다. 이 상황에 대한 설명으로 올바른 것은?
  3. 블록 암호의 CTR 모드(카운터 모드)의 특징으로 올바른 것은?
  4. CTR 모드에서 실수로 같은 키와 같은 논스를 사용해 두 메시지를 암호화했다. 어떤 위치의 바이트에 대해 첫 번째 평문 P₁은 01001000(ASCII의 'H'), 그 암호문 C₁은 01110100, 두 번째 암호문 C₂는 01010101이다. 공격자가 P₁을 알고 있을 때, 같은 위치의 두 번째 평문 P₂는?
  5. AES-GCM 같은 인증 암호화(AEAD)가 하나의 처리로 제공하는 것으로 올바른 것은?