암호 기술의 기초와 응용

AES(블록 길이 16바이트)를 CBC 모드로 사용하고, 패딩에는 PKCS#7 방식을 사용한다. PKCS#7 방식에서는 부족한 바이트 수를 n이라 할 때 값이 n인 바이트를 n개 덧붙이며, 평문의 길이가 정확히 16의 배수일 때도 값이 16인 바이트를 16개 덧붙인다. 96바이트의 평문을 암호화했을 때 암호문의 길이(IV는 포함하지 않음)는?

  1. A96바이트
  2. B112바이트
  3. C128바이트
정답과 해설 보기

정답: B. 112바이트

96바이트는 16바이트의 정확히 6블록이지만, PKCS#7 방식에서는 나누어떨어질 때도 값 16인 바이트를 16개 나열한 1블록을 덧붙입니다. 그래서 평문은 96 + 16 = 112바이트(7블록)가 되고, 암호문도 112바이트입니다. 나누어떨어질 때도 덧붙이는 것은 복호화하는 쪽이 마지막 바이트의 값을 보고 언제든지 패딩을 제거할 수 있게 하기 위해서입니다. CTR 모드나 GCM처럼 키 스트림과 XOR하는 모드에서는 패딩이 필요 없으며, 암호문은 평문과 같은 길이가 됩니다.

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

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

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