블록암호 운영모드와 데이터 암호화 선택 기준

ECB, CBC, PCBC, CFB, OFB, CTR 블록암호 운영모드의 처리 방식과 오류 전파, 패딩, 병렬 처리 특성을 비교한다.

2026-08-14 · 최초 발행 2025-05-23

긴 데이터를 블록암호로 처리하는 방식

블록암호는 정해진 길이의 평문을 받아 같은 길이의 암호문을 만든다. 일반적인 블록 크기로는 DES의 64비트와 AES의 128비트가 쓰인다. 하지만 실제 데이터는 블록 크기에 맞아떨어지지 않는 경우가 많고, 하나의 블록보다 훨씬 길다.

운영모드는 이 간격을 메운다. 동일한 키와 입력이면 같은 출력을 내는 블록암호의 성질을 바탕으로, 여러 블록을 어떤 순서와 연결 방식으로 암호화할지 정한다. 짧은 데이터는 블록암호만으로 처리할 수 있지만, 긴 데이터에는 이런 연결 규칙이 필요하다.

첫 블록과 마지막 블록에서 결정되는 것

초기벡터가 만드는 차이

초기벡터(Initial Vector, IV)는 첫 번째 블록을 처리할 때 들어가는 값이다. 같은 키와 같은 평문을 다시 암호화하더라도 다른 암호문을 만들 수 있게 하며, 예측 가능한 패턴이 드러나는 것을 줄인다.

IV는 암호화 작업마다 새로 사용하는 편이 권장된다. 보통 암호문과 함께 전송할 수 있고 비밀일 필요는 없지만, 충분한 무작위성은 보장되어야 한다.

블록 길이를 맞추는 패딩

마지막 평문 블록이 블록 크기보다 짧다면 패딩으로 남는 바이트를 채운다. 대표적인 방식은 다음과 같다.

  • PKCS#7은 부족한 바이트 수만큼 해당 값을 채운다. 예를 들어 3바이트가 부족하면 [03 03 03]을 추가한다.
  • ISO/IEC 7816-4는 첫 바이트에 0x80을 넣고 나머지를 0x00으로 채운다.
  • ANSI X.923은 마지막 바이트에 패딩 크기를 표시하고, 나머지는 0x00으로 채운다.
  • 제로 패딩은 모든 패딩 바이트를 0으로 채운다.
아니오원본 데이터블록 분할마지막 블록완전한가?암호화 진행패딩 적용

평문 블록을 연결하는 운영모드

ECB: 블록을 서로 독립적으로 처리할 때

ECB(Electronic CodeBook)는 각 블록을 별개로 암호화하는 가장 단순한 방식이다. IV를 사용하지 않으며, 같은 평문 블록은 항상 같은 암호문 블록으로 바뀐다. 암호화와 복호화를 병렬 처리할 수 있다는 점은 장점이다.

반면 반복되는 데이터의 패턴이 암호문에 남을 수 있다. 이미지 암호화에서 윤곽이 드러날 수 있고, 재생 공격(Replay Attack)에도 취약하다.

평문 블록1암호화평문 블록2암호화평문 블록3암호화암호문 블록1암호문 블록2암호문 블록3

2013년 Adobe 해킹 사건에서는 ECB 모드의 약점이 드러났다. 암호화된 패스워드 데이터베이스에서 같은 패스워드가 같은 암호문으로 저장되어, 패턴 분석을 통한 공격이 가능했다.

CBC: 이전 암호문을 다음 블록에 잇는 방식

CBC(Cipher Block Chaining)는 현재 평문 블록을 이전 암호문 블록과 XOR한 뒤 암호화한다. 첫 블록에서는 IV와 XOR 연산을 수행한다. 앞선 암호문이 다음 블록 처리에 영향을 주므로, 같은 평문 블록도 서로 다른 암호문이 될 수 있다.

한 블록의 오류는 두 블록에 영향을 준다. 암호화는 병렬 처리할 수 없지만 복호화는 가능하다. 비트 플리핑 공격 가능성도 고려해야 한다.

초기벡터XOR평문 블록1암호화암호문 블록1XOR평문 블록2암호화암호문 블록2

PCBC: 오류를 후속 블록까지 전파하는 방식

PCBC(Propagating CBC)는 CBC를 변형해 오류 전파 특성을 강화한 모드다. 이전 평문 블록과 암호문 블록을 모두 다음 단계에 사용하므로, 하나의 블록에서 생긴 오류가 모든 후속 블록에 영향을 준다. 이 특성은 데이터 무결성 검증에 활용할 수 있다.

초기벡터XOR평문 블록1암호화암호문 블록1XORXOR평문 블록2암호화암호문 블록2

Kerberos 인증 시스템에는 PCBC 모드가 사용되었으나, 이후 버전에서는 AES와 함께 CBC 모드로 대체되었다.

CFB: 블록암호를 스트림처럼 사용할 때

CFB(Cipher FeedBack)는 이전 암호문을 암호화하고 그 결과를 현재 평문과 XOR한다. 블록 크기보다 작은 단위도 처리할 수 있어 블록암호를 스트림 암호처럼 동작시킨다.

패딩이 필요 없고 실시간 암호화에 적합하다. 다만 오류가 여러 블록으로 전파될 수 있다.

초기벡터암호화스트림1XOR평문 블록1암호문 블록1암호화스트림2XOR평문 블록2암호문 블록2

OFB: 암호화 출력을 키 스트림으로 쓰는 방식

OFB(Output FeedBack)는 CFB와 비슷하지만, 피드백으로 이전 암호문이 아니라 암호화 출력을 직접 사용한다. 키 스트림을 미리 만들 수 있으며, 한 비트의 오류는 복호화 결과에서 같은 위치에만 영향을 준다.

스트림 암호와 유사한 성질을 가지며 패딩이 필요 없다. 오류 전파가 없는 특성 때문에 노이즈가 많은 채널에 적합하다.

초기벡터암호화스트림1XOR암호화평문 블록1암호문 블록1스트림2XOR평문 블록2암호문 블록2

CTR: 카운터에서 키 스트림을 만드는 방식

CTR(Counter)은 Nonce + 카운터 값을 암호화해 키 스트림을 만들고, 이를 평문과 XOR한다. 암호화와 복호화를 모두 병렬 처리할 수 있으며, 특정 위치에 바로 접근할 수도 있다.

사전 계산이 가능하고 패딩도 필요하지 않아 높은 성능이 필요한 환경에 적합하다.

Nonce+CTR1암호화스트림1XOR평문 블록1암호문 블록1Nonce+CTR2암호화스트림2XOR평문 블록2암호문 블록2

AES-CTR은 IPsec, SSH 등의 프로토콜에서 사용된다. 하드웨어 가속이 가능한 특성 때문에 대용량 데이터 암호화에도 적합하다.

병렬성, 오류 전파, 접근 방식의 차이

모드 병렬 암호화 병렬 복호화 패딩 필요 오류 전파 임의 접근 주요 용도
ECB 가능 가능 필요 없음 가능 단일 블록 데이터(키 암호화)
CBC 불가능 가능 필요 2블록 불가능 일반적인 데이터 암호화
PCBC 불가능 불가능 필요 전체 불가능 데이터 무결성 검증
CFB 불가능 가능 불필요 여러 블록 불가능 스트림 데이터
OFB 불가능 불가능 불필요 없음 불가능 노이즈 환경 전송
CTR 가능 가능 불필요 없음 가능 고성능 필요 환경

높은 보안성이 필요한 경우에는 CBC나 CTR을 고려할 수 있다. 무결성까지 요구된다면 GCM, CCM 같은 인증된 암호화를 검토해야 한다.

고성능 병렬 처리가 핵심이면 CTR이 맞고, 임의 접근이 필요한 대용량 데이터에도 CTR이 적합하다. 스트리밍 데이터에는 CFB나 OFB를 적용할 수 있다. 오류 전파가 문제가 되는 환경에서는 CTR과 OFB를, 무결성이 중요한 경우에는 PCBC 또는 인증된 암호화를 검토한다. 제한된 리소스 환경에서 ECB를 사용할 수는 있지만 보안 특성을 함께 고려해야 한다.

인증 기능을 결합한 암호화 모드

최근에는 단순 운영모드보다 인증된 암호화 모드를 널리 사용한다.

  • GCM(Galois/Counter Mode)은 CTR 모드에 인증 기능을 추가한다.
  • CCM(Counter with CBC-MAC)은 CTR 모드와 CBC-MAC을 결합한다.
  • EAX와 OCB는 인증과 암호화를 효율적으로 결합한다.
인증된 암호화 모드평문암호화 모드인증 태그 생성암호문인증 태그전송

TLS 1.3은 보안 취약점이 있는 CBC 모드 대신 AEAD(Authenticated Encryption with Associated Data) 알고리즘만 허용한다. AES-GCM은 고성능 환경에서 가장 많이 사용되고, ChaCha20-Poly1305는 하드웨어 가속이 없는 환경에서 효율적이다.

양자 컴퓨팅 시대를 대비한 새 운영모드 연구, 경량 암호화를 위한 효율적인 운영모드 개발, 하드웨어 최적화된 운영모드의 중요성은 계속 커지고 있다.

설계 시 확인할 지점

운영모드는 데이터 기밀성뿐 아니라 시스템 성능과 안정성에도 영향을 준다. ECB부터 인증된 암호화 모드까지의 연결 방식과 제약을 구분한 뒤, 애플리케이션이 요구하는 보안성·성능·오류 처리·접근 방식을 함께 검토해야 한다.

블록암호암호화운영모드AES정보보안