1단계 앞에서 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화를 수행
생성되는 각각의 암호문 블록은 단지 현재 평문 블록뿐만 아니라 그 이전 평문 블록들의 영향도 받게 됨
2. 초기화 벡터
최초의 평문 블록을 암호화할 때는 '1단계 앞의 암호문 블록'이 존재하지 않으므로 '1단계 앞의 암호문 블록'을 대신할 비트열인 한 개의 블록이 필요. 이때, 이 비트열을 초기화 벡터(IV)라고 함
비밀키와 마찬가지로 송신자와 수신자간에 미리 약속되어 있어야 하지만, 공개된 값을 사용해도 무방
암호화 때마다 다른 랜덤 비트열을 이용하는 것이 보통CBC 모드에 의한 암호화 & 복호화
3. CBC 모드의 특징
평문 블록은 반드시 '1단계 앞의 암호문 블록'과 XOR을 취하고 나서 암호화됨 → 평문 블록1과 2의 값이 같은 경우라도 암호문 블록1과 2의 값이 같아진다고 볼 수 없음
도중의 평문 블록만 뽑아내서 암호화할 수 없음
암호문 블록 1개가 파손되었으나, 블록의 길이는 동일하게 유지하고 있다고 가정하면, 복호화 했을 때 평문 블록에 미치는 영향은 2개의 블록에 머뭄
암호화한 암호문을 전송하는 도중에 비트 누락이 있다고 가정하면, 암호문을 수신한 수신측에서는 암호문을 블록으로 잘라내어 CBC 모드 복호화에 맞춰 복호화를 하게 되는데, 이 때 누락된 비트가 포함된 암호문 블록을 포함하여 그 이후의 암호문 블록은 전부 어긋나게 됨. → 이후의 암호문 블록은 전부 복호화할 수 없게 됨
4. CBC 모드에 대한 공격
맬로리는 초기화 벡터 값의 임의의 비트를 반전시킬 수 있다면, 암호 블록 1에 대응하는 평문 블록 1의 비트를 반전시킬 수 있음 (초기화 벡터와 XOR을 취하기 때문)
암호문 블록에 대해서는 맬로리가 원하는 한 비트만을 변화시키는 것은 불가능
CBC 모드에 대한 공격(초기화 벡터의 비트 반전)
5. 패딩 오라클 공격
블록 암호의 패딩을 이용한 공격
블록 암호에서는 평문 길이가 블록 길이의 정수배가 되지 않을 때, 마지마 블록에 패딩이라는 데이터를 추가
공격자는 패딩 내용을 조금씩 변화시켜 암호문을 몇번이고 송신함
수신자(서버)는 올바른 평문으로 복호화하지 못했을 경우 오류를 보내기 때문에 그것을 사용하여 평문 정보의 일부를 얻으려는 것
이 공격은 CBC 모드 뿐만 아니라 패딩을 실행하는 모든 모드에 사용 가능
암호문이 평문을 알고 있는 상대방에 의해 바르게 생성된 것임을 인증하면 공격을 막을 수 있음
6. 초기화 벡터(IV) 공격
초기화 벡터(IV)는 예측 불가능한 난수로 주어져야 함
7. CBC 모드 활용
인터넷에서 보안을 제공하는 프로토콜인 SSL/TLS에서는 통신의 기밀성을 지키기 위해 CBC 모드 사용 중
트리플 DES를 CBC 모드로 사용한 3DES-EDL-CBC, 키 길이가 256비트인 AES를 CBC 모드로 사용한 AES-256-CBC 등이 있음