본문 바로가기
학부/Network Security

CBC(Cipher Block Chaining)모드

by ulqaef 2019. 4. 20.
728x90

CBC(Cipher Block Chaining)모드는 암호문 블록을 마치 체인처럼 연결시키기 때문에 붙여진 이름이다.

 

CBC모드에서는 "한 단계 앞에서 수행되어 결과로 출력된 암호문 블록"에 평문 블록을 XOR하고 나서 암호화를 수행한다.

글로만 봐서는 이해가 쉽게 되지 않는다.

 

 

아래의 그림을 보자.

CBC모드 암호화

 

위의 그림에 IV라는 용어가 등장한다.

그렇다. 위의 그림을 이해하기 위해서는 IV(Initialization Vector)의 개념을 알아야 한다는 의미다.

 

IV(Initialization Vector)란 초기화벡터라고 하며 

최초의 평문블록을 암호화 할 때는 "한 단계 앞의 암호문블록"이 존재하지 않기 때문에

"한 단계 앞의 암호문블록"을 대신할 비트열을 말하는 것이다.

초기화벡터(IV)는 키와 마찬가지로 송/수신자 간에 미리 약속되어 있어야 하지만

공개된 값을 사용해도 무방하다.

 

 

다시 그림을 보자.

평문블록1이 IV(Initialization Vector)와 XOR을 수행한 값을

암호화 알고리즘의 입력으로 사용하고 있다.

그리고 암호화 알고리즘의 출력을 평문블록2와 XOR을 수행하도록 되어 있다.

암호문3, 암호문4도 동일한 방식으로 생성되고 있다.

따라서 생성되는 각각의 암호문블록은 현재 평문블록뿐만 아니라

그 이전의 평문블록들의 영향도 받게 되어 있다.

 

ECB모드에서는 평문블록1과 평문블록2가 같은 값이면 암호문블록1 암호문블록2도 같은 값으로 생성되었다.

하지만 CBC모드에서는 이러한 이유 때문에 평문블록1과 평문블록2가 같은 값이더라도

암호문블록1과 암호문블록2가 같은 값으로 생성되지 않는다.

 

 

 

CBC모드의 복호화 중 암호문블록 1개가 파손(암호문블록의 값이 바뀌기는 했지만 길이는 동일하게 유지)되었다고 가정해보자.

CBC모드에서 암호문블록 1개가 파손됨

깨진 암호문블록에 해당하는 평문블록과 그 다음의 평문블록 2개의 평문블록에 영향을 주게 된다.

 

 

 

 

 

다음은 CBC모드로 암호문을 전송하는 도중에 비트 누락이 발생했다고 가정해보자.

암호문블록에 누락이 발생하면 수신측에서는 암호문을 블록으로 잘라내어

CBC모드 복호화에 맞춰 복호화를 하게 되는데 이때 누락된 비트가 포함된 암호문 블록을 포함하여

그 이후의 암호문블록은 전부 어긋나게 된다.

그렇게 되면 그 이후의 암호문 블록은 복호화를 할 수 없게 된다.

 

 

적극적 암호해독자는 CBC모드에 대해 공격할 수 있다.

적극적 암호해독자가 초기화벡터값의 임의의 비트를 반전시킬 수 있다면

암호 블록1에 대응하는 평문블록1의 비트를 반전시킬 수 있다.

왜냐하면 CBC모드의 복호화에서는 최초의 평문블록1은 초기화 벡터XOR이 취해지기 때문이다.

 

또한 블록의 패딩을 공격할 수도 있다.

평문의 길이가 블록의 정수배가 되지 않을 때 

마지막 블록에 패딩을 추가해주게 된다.

패딩을 공격한다는 의미는 적극적 암호해독자가 패딩의 내용을

조금씩 변화시켜 암호문을 몇 번이고 송신하고

수신자는 올바른 평문으로 복호화하지 못했다는 오류를 보내면

그것을 이용하여 평문정보의 일부를 얻는다는 것이다.

 

 

 

 

 

 

 

 

<참고 : 히로시 유키 - 알기 쉬운 정보보호개론>

728x90
반응형

'학부 > Network Security' 카테고리의 다른 글

OFB(Output-FeedBack)모드  (0) 2019.04.20
CFB(Cipher-FeedBack)모드  (0) 2019.04.20
ECB(Electric CodeBook)모드  (0) 2019.04.20
Triple-DES(트리플D  (0) 2019.04.20
DES(Data Encryption Standard)  (0) 2019.04.20

댓글


`