블록 암호 운용 모드(Block Cipher Mode of Operation)란?

블록 암호로 블록 길이보다 긴 데이터를 암호화할 때 블록 변환을 조합하는 방법. 각 블록을 독립적으로 암호화하는 ECB, 직전 암호문 블록과 XOR한 뒤 암호화하는 CBC, 카운터를 암호화한 키 스트림과 XOR하는 CTR, CTR에 인증을 더한 GCM 등이 있다. ECB는 같은 평문 블록이 같은 암호문 블록이 되므로 일반 데이터에는 사용하지 않는다. CBC나 CTR에서는 초기화 벡터나 논스를 올바르게 다뤄야 한다.

일본어 명칭: 暗号利用モード

블록 암호 운용 모드(Block Cipher Mode of Operation)은(는) 암호 기술의 기초와 응용 등 1개 분야의 연습 문제 11개에 나와요.

분야: 암호 기술의 기초와 응용

주요 모드 비교

ECB는 병렬로 처리할 수 있지만 평문의 무늬가 남습니다. CBC는 패딩이 필요하고, 암호화는 이전 블록의 결과를 기다리므로 병렬화할 수 없지만 복호화는 병렬화할 수 있습니다. CTR은 패딩이 필요 없고, 암호화도 복호화도 병렬화할 수 있으며, 임의의 위치부터 복호화할 수 있습니다. 다만 CBC와 CTR은 암호화만 수행하며 변조 검출은 할 수 없습니다.

인증 암호화 모드

GCM이나 CCM은 암호화와 동시에 인증 태그를 계산하여 변조를 검출할 수 있는 모드입니다. TLS 1.3, IPsec, 무선 LAN의 WPA2·WPA3 등 현재의 주요 프로토콜은 이런 모드를 사용합니다. CBC와 MAC을 조합하는 방식은 조합 방법을 잘못하면 패딩 오라클 공격 등을 받으므로, 새로운 설계에서는 별로 사용되지 않습니다.

디스크 암호화

디스크나 SSD의 암호화에서는 섹터 위치마다 다른 값을 사용하며 암호문이 평문과 같은 길이가 되는 XTS 모드가 자주 사용됩니다. 저장 공간의 크기를 바꿀 수 없으므로 인증 태그를 붙일 수 없어, 변조 검출은 할 수 없습니다.

도전해 보기: 블록 암호 운용 모드(Block Cipher Mode of Operation) 관련 문제

이미지 데이터를 AES의 ECB 모드로 암호화했더니, 암호화한 후의 이미지에서도 원래 그림의 윤곽을 알아볼 수 있었다. 이 원인으로 올바른 것은?

  1. AAES의 키가 너무 짧아서 일부 블록이 암호화되지 않고 그대로 남았기 때문에
  2. BECB 모드에서는 블록마다 다른 키를 자동으로 만들므로, 그 키의 무늬가 암호화한 후의 이미지에 나타나기 때문에
  3. CECB 모드에서는 같은 평문 블록이 항상 같은 암호문 블록이 되므로, 같은 색 부분의 무늬가 남기 때문에
정답과 해설 보기

정답: C. ECB 모드에서는 같은 평문 블록이 항상 같은 암호문 블록이 되므로, 같은 색 부분의 무늬가 남기 때문에

ECB(전자 코드북) 모드는 각 블록을 같은 키로 각각 독립적으로 암호화하기만 하는 방식입니다. 그래서 평문 안에 같은 내용의 블록이 있으면 암호문에서도 같은 블록이 같은 위치에 나타납니다. 배경처럼 같은 색이 이어지는 이미지에서는 어디가 같은 색인지라는 정보가 남으며, 펭귄 이미지를 암호화한 예가 잘 알려져 있습니다. 이 때문에 일반 데이터의 암호화에는 ECB 모드를 사용하지 않고, 같은 평문으로부터도 매번 다른 암호문이 만들어지는 CBC 모드, CTR 모드, GCM 등을 사용합니다.

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

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

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

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

자주 묻는 질문

어떤 모드를 고르면 되나요?

특별한 이유가 없다면 AES-GCM이나 ChaCha20-Poly1305 같은 인증 암호화를 사용하고, 같은 키에서 논스가 겹치지 않게 합니다. ECB는 사용하지 않습니다. 직접 CBC나 CTR과 MAC을 조합하기보다 라이브러리가 제공하는 인증 암호화를 사용하는 편이 실수가 일어나기 어렵습니다.

CTR 모드에서는 왜 패딩이 필요 없나요?

CTR 모드는 블록 암호로 만든 키 스트림을 평문과 XOR하기만 하므로, 마지막 블록의 키 스트림을 평문의 길이로 잘라 사용하면 됩니다. 블록 암호에 통과시키는 것은 카운터 값이며, 평문 자체가 아닙니다.

해설 속 블록 암호 운용 모드(Block Cipher Mode of Operation)

블록 암호 운용 모드(Block Cipher Mode of Operation)이(가) 나오는 문제 (11)

  1. 이미지 데이터를 AES의 ECB 모드로 암호화했더니, 암호화한 후의 이미지에서도 원래 그림의 윤곽을 알아볼 수 있었다. 이 원인으로 올바른 것은?
  2. AES를 CBC 모드로 사용할 때 초기화 벡터(IV)의 취급으로 적절한 것은?
  3. AES(블록 길이 16바이트)를 CBC 모드로 사용하고, 패딩에는 PKCS#7 방식을 사용한다. PKCS#7 방식에서는 부족한 바이트 수를 n이라 할 때 값이 n인 바이트를 n개 덧붙이며, 평문의 길이가 정확히 16의 배수일 때도 값이 16인 바이트를 16개 덧붙인다. 96바이트의 평문을 암호화했을 때 암호문의 길이(IV는 포함하지 않음)는?
  4. CBC 모드로 암호화한 데이터를 받는 서버가, 복호화한 후의 패딩이 올바르지 않을 때와 패딩은 올바르지만 내용 검사에 실패했을 때 서로 다른 오류를 돌려주고 있었다. 이 상황에 대한 설명으로 올바른 것은?
  5. 블록 암호의 CTR 모드(카운터 모드)의 특징으로 올바른 것은?
  6. CTR 모드에서 실수로 같은 키와 같은 논스를 사용해 두 메시지를 암호화했다. 어떤 위치의 바이트에 대해 첫 번째 평문 P₁은 01001000(ASCII의 'H'), 그 암호문 C₁은 01110100, 두 번째 암호문 C₂는 01010101이다. 공격자가 P₁을 알고 있을 때, 같은 위치의 두 번째 평문 P₂는?
  7. 1 GiB = 2³⁰바이트, 1 EiB = 2⁶⁰바이트로 한다. 블록 길이가 64비트인 블록 암호(3DES 등)를 CBC 모드로 사용하여, 하나의 키로 대량의 데이터를 암호화한다. 암호문 블록을 무작위 64비트 값으로 간주할 때, 생일 역설에 의해 같은 암호문 블록 쌍이 나타날 확률을 무시할 수 없게 되는 데이터양의 기준은?
  8. 대칭 키 암호 중 블록 암호와 스트림 암호의 차이에 대한 설명으로 올바른 것은?
  9. AES-GCM 같은 인증 암호화(AEAD)가 하나의 처리로 제공하는 것으로 올바른 것은?
  10. AES-GCM에서 사용하는 96비트 논스(IV)에 대한 설명으로 올바른 것은?
  11. TLS 1.3(RFC 8446)에서 TLS 1.2로부터 바뀐 점으로 올바른 것은?

관련 용어

인증 암호화(AEAD) AES 논스(Nonce) TLS 생일 공격(Birthday Attack) 쿠키(Cookie) 대칭 키 암호(Symmetric-key Cryptography) 메시지 인증 코드(Message Authentication Code) 전방향 안전성(Forward Secrecy) RSA 암호(RSA Cryptosystem)

용어집으로 돌아가기