# 암호 블록 체이닝 (Cipher Block Chaining, CBC)

Cipher Block Chaining은 블록 암호의 작동 모드입니다. CBC 모드는 블록 단위 변환을 연속으로 이어 붙여 긴 데이터를 처리하는 방식입니다. 따라서 이렇게 구성된 전체 암호는 그 구성 요소인 블록 암호와 달리 전단사(일대일 대응)가 아닙니다.

비밀 메시지를 친구에게 보내고 싶다고 상상해보세요. 메시지 전체를 한 번에 보내는 대신, 각 단어를 별도의 종이에 적는 것처럼 작은 블록으로 나눕니다.

Cipher Block Chaining (CBC)은 이러한 종이 조각 각각에 추가 보안 계층을 추가하는 것과 같습니다. 각 블록을 암호화하기 전에, 특별한 연산(XOR)을 사용해 이전 블록과 섞습니다. 이렇게 하면 누군가 단일 블록을 가로채더라도 내용을 해독할 수 없습니다.

## CBC는 어떻게 작동합니까?

단계별로 살펴보겠습니다.

1. **초기화 벡터 (IV):** 체인의 출발점이 되는, 무작위로 만든 첫 번째 종이라고 생각하면 됩니다. 암호화 과정에 무작위성을 더합니다.
2. **블록 암호:** 이것은 각 메시지 블록을 읽을 수 없는 형식으로 변환하는 비밀 코드입니다.
3. **체이닝:** 핵심 단계입니다. 각 블록은 암호화되기 전에 이전 블록의 암호문(암호화된 블록)과 결합됩니다. 이렇게 하면 각 블록이 이전 모든 블록에 의존하게 됩니다.

## 실제 예시:

벽돌 벽을 짓는다고 상상해보세요:

- **IV**는 시작점을 제공하는 벽의 기초와 같습니다.
- **블록 암호**는 벽돌(메시지 블록)을 함께 고정하는 모르타르와 같습니다.
- **체이닝**은 전체 구조가 강하고 상호 연결되도록 각 벽돌을 이전 벽돌 위에 놓는 것과 같습니다.

CBC를 사용하면 데이터가 서로 연결된 암호문 블록으로 변환되어, 같은 평문 블록이라도 위치에 따라 다른 암호문이 됩니다.

## CBC의 장점:

- **보안 강화:** CBC 모드는 블록 간의 종속성을 도입하여 Electronic Codebook (ECB)과 같은 더 간단한 모드에 비해 특정 공격에 더 강합니다.
- **임의 길이 데이터 처리:** 패딩(또는 암호문 훔치기 기법)을 적용하면 블록 크기로 나누어지지 않는 임의 길이의 메시지도 처리할 수 있습니다.

## CBC의 단점:

- **전단사가 아님:** 전단사 (일대일 매핑)인 블록 암호와 달리 CBC는 그렇지 않습니다. 또한 복호화할 때 암호문 한 블록의 오류는 해당 평문 블록과 다음 평문 블록에 영향을 줍니다.
- **패딩 오라클 공격에 취약함:** 특정 구현은 패딩 메커니즘을 악용하여 평문에 대한 정보를 드러내는 패딩 오라클 공격에 취약할 수 있습니다.
- **순차적 암호화:** CBC 암호화는 본질적으로 순차적이므로 다른 일부 모드에 비해 병렬 처리가 덜 효율적입니다.

## 사용 분야:

단점에도 불구하고 CBC는 다음을 포함한 다양한 분야에서 널리 사용되었습니다.

- 디스크 암호화
- 네트워크 프로토콜 (예: TLS/SSL)
- 데이터 무결성 검사

그러나 새로운 보안 위협과 AES-GCM 같은 더 강력한 모드가 등장하면서 CBC는 최신 암호 응용 분야에서 점차 대체되고 있습니다.

귀중한 화물을 국경 너머로 대량 운송한다고 가정해 보겠습니다. 표시도 없는 큰 트럭 한 대에 모두 실어 보내는 것은 위험을 자초하는 일입니다.

## 계층별 보안으로서의 CBC

CBC는 소중한 데이터를 위한 보안 요원과 같습니다. CBC는 정보를 하나의 큰 블록으로 보내는 대신, 그것을 더 작고 관리하기 쉬운 덩어리로 나눕니다. 화물을 여러 대의 장갑차에 나눠 싣는 것과 같습니다.

## 추가 보호를 위한 체이닝

여기서 “체이닝”이 등장합니다. 각 차량은 출발하기 전에 앞 차량과 연결됩니다. 데이터에서는 이를 어떻게 구현할까요? “XOR 연산”이라고 하는 것을 사용하여 이전 블록의 정보와 현재 블록을 혼합합니다. 이런 식으로 각 블록이 연결되어 내용이나 순서를 조작하는 것이 매우 어려워집니다.

## CBC가 중요한 이유

- **향상된 보안:** 각 블록이 이전 암호문 블록과 섞인 뒤 암호화되므로, 같은 평문 블록이 반복되어도 서로 다른 암호문이 나와 ECB처럼 평문의 패턴이 드러나지 않습니다.
- **제한된 오류 전파:** 복호화할 때 암호문 한 블록에 오류가 생기면 해당 평문 블록 전체와 다음 평문 블록의 대응 비트가 손상되지만, 그 뒤의 블록은 정상적으로 복호화됩니다.

## 유의할 점

CBC에도 한계가 있습니다. CBC는 기밀성만 제공하고 무결성은 보장하지 않으므로, 실제로는 메시지 인증 코드(MAC)와 함께 쓰거나 AES-GCM 같은 인증 암호 모드로 대체하는 경우가 많습니다.

---
출처: https://achivx.kr/glossary/cipher-block-chaining-cbc-%EC%95%94%ED%98%B8-%EB%B8%94%EB%A1%9D-%EC%B2%B4%EC%9D%B4%EB%8B%9D-cbc/ · ACHIVX 용어 사전 · 수정일 2026-10-20
