현대 암호학

[현대 암호학] 05-3. CBC 모드

Uggjjini 2021. 6. 23. 13:02

3. CBC 모드

 

CBC(Cipher Block Chaing) 모드란?

 

  • Cipher Block Chaining Mode(암호 블록 연쇄 모드)
  • 암호문 블록을 마치 체인처럼 연결시키기 때문에 붙여진 이름
  • CBC 모드에서는 1단계 앞에서 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화를 수행
  • 각각의 암호문 블록은 단지 현재 평문블록 뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.

 

(조건) 암호화 시스템 측

* IV 필요하다.

* 패딩(padding) 처리 해주어야 한다.

 

(조건) 복호화 시스템 측

* 복호화 시스템이 알고 있어야 하는 값:

=> IV (암호화 할때 사용했던)

=> padding (암호화 할때 사용했던)

=> 암호화 키(암호화 할때 사용했던)

 

 

CBC 모드에 의한 암호화

(IV XOR P) => 암호화(E) => 암호문(C1)

(C1 XOR P) => 암호화(E) => 암호문(C2)

 

CBC 모드에 의한 복호화

 

 

초기화 벡터(Initialization Vector)

최초의 평문 블록을 암호화할 때는 "1 단계 앞의 암호문 블록"이 존재하지 않으므로 "1 단계 앞의 암호문 블록"을 대신할 비트열인 한개의 블록을 준비할 필요

 

() IV(초기화 벡터)

  • DES/DES3 - 평문(8 bytes, 64bits ) + IV(8 bytes)
  • AES - 평문(16 bytes, 128bits) + IV(16 bytes)

 

 

CBC(Cipher Block Chaing) 모드의 특징

 

  • 평문 블록은 반드시 "1 단계 앞의 암호문 블록"과 XOR을 취하고 나서 암호화
  • 따라서, 만약 평문 블록1과 2의 값이 같은 경우라도 암호문 블록1과 2의 값이 같아진다고는 할 수 없고, ECB 모드가 갖고 있는 결점이 CBC 모드에는 없다.
  • 암호문 블록3을 만들고 싶다면 적어도 평문 블록의 1, 2, 3까지가 갖추어져 있어야만 한다.

 

(복호화 할때) 깨진 암호문

CBC 모드에서 암호문 블록이 파손되면 2개의 평문 블록에 영향을 미친다.

 

(복호화 할때)암호문 블록에서 비트 누락

CBC 모드에서 암호문 블록에서 비트 누락이 생기면 그 이후에 평문 블록 전체에 영향을 미친다.

 

(복호화 할때)CBC 모드에 대한 공격(초기화 벡터의 비트 반전)

초기화 벡터의 비트를 반전시켜 평문 블록의 비트를 반전시키는 공격(CBC 모드)

 

CBC 모드에서 초기벡터의 비트반전에 대한 영향

 

 

패딩 오라클(Padding Oracle) 공격

 

블록 암호의 패딩을 이용한 공격

  • 패딩 내용을 조금씩 변화시켜 암호문을 여러 차례 송신
  • 수신자가 올바로 복호화 하지 못할 경우 오류를 관찰하여 평문 정보를 취
  • 패딩을 사용하는 모든 모드에 적용
  • 공격자가 메시지의 패딩이 옳은지 아닌지의 여부를 판단하는 오라클이 있다면, 이 오라클을 이용하여 암호문에 대응 하는 메시지를 알아낼 수 있다.

 

초기화 벡터(IV) 공격

초기화 벡터는 난수(Random Number)로 부여

 

SSL/TLSTLS 버전 1.0

  • 초기화 벡터를 이전 CBC 모드로 암호화한 마지막 블록을 사용
  • 문제점 발견 후 TLS 버전 1.1 부터는 초기화 벡터를 명시적으로 부여

 

CBC 모드 활용 예

 

IPsec 통신의 기밀성(비밀성)을 지키기 위해 CBC 모드를 사용함

- () 3DESCBC 모드로 사용한 3DES-CBC

- () AESCBC 모드로 사용한 AES-CBC

 

  • 인증을 수행하는 대칭암호 시스템의 하나인 Kerberos Version 5에서도 사용하고 있음
  • SSL/TLS: 통신 기밀성 보호
  • 3DES-EDE-CBC
  • AES-256-CBC (키 길이가 256비트인 경우)