블록 암호 운용 방식(block cipher modes of operation) 


블럭 암호 운용 방식을 공부하면서 가장 많이 참고한 자료는 위키백과와 이를 기반으로 제작된 서울과기대 컴퓨터공학과 박종혁 교수님의 수업자료입니다.

저는 '김재성(BadSpell)'님의 문제를 풀기위해서 블럭 암호 공부를 했는데요.. 

문제와 관련있는 'ECB'와 'CBC'에 대해서 집중적으로 공부했고, 이를 정리하는 포스팅을 하려고합니다.


암호학에서 블록 암호 운용 방식(영어: block cipher modes of operation)은 하나의 키 하에서 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다. 블록 암호는 특정한 길이의 블록 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그리고 그 블록들을 어떻게 암호화할지를 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식으로 부른다. 운용 방식은 주로 암호화와 인증을 목적으로 정의되어왔다. 


참고 : 위키백과



블록 암호(Block chipher)란?

: 어느 특정 비트 수의 집합을 한번에 처리하는 암호  알고리즘으로, 여기서 집합은 블럭이라고 합니다. 


* 블록 길이 : 블록의 비트수를 의미합니다.

  - DES, 트리플 DES의 블록길이 64비트 

  - DES : 64비트 평문, 64비트 암호문

  - AES : 128비트, 192비트, 256비트



모드란?

: 블록 암호를 수행할 때, 긴 평문을 블록으로 나누어 암호화를 합니다. 이때, 사용하는 방법을 모드라고 합니다.


ECB 모드 : Electric CodeBook mode(전자 부호표 모드)

* CBC 모드 : Cipher Block Chaining mode(암호 블록 연쇄 모드)

* CFB 모드 : Cipher-FeedBack mode(암호 피드백 모드)

* OFB 모드 : Output-FeedBack mode(출력 피드백 모드)

* CTR 모드 : CounTeR mode(카운터 모드)



[ECB 모드]

: 평문 블록을 암호화 한 것이 그대로 암호문 블록이 됩니다.


* 패딩 : 마지막 평문 블록이 블록 길이에 미치지 못할 경우에, 추가하여 블록 길이가 되도록 맞춥니다.

* 특징 : 암호문 블록을 잘 살펴보면, 반복되는 평문속의 패턴을 파악할 수 있습니다.



1. ECB 모드에 의한 암호화 과정 




2. ECB 모드에 의한 복호화 과정 




3. ECB 모드 특징

 - 가장 간단하지만 가장 기밀성이 낮습니다. 

 - 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약합니다. 

 - 만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값이면, 암호화 했을 때도 동일합니다. 

 - 때문에 공격자가 비슷한 메시지를 반복적으로 암호화하는 반복적인 공격에도 취약합니다.






[CBC 모드]

: Cipher Block Chaining. 암호문 블록을 마치 체인처럼 연결시키기 때문에 붙혀진 이름


* ECB 모드의 취약한 점을 어느정도 보완할 수 있습니다.

* IV (초기화 벡터) : 최초의 평문 블록을 암호화 할 때, 한 단계의 앞의 암호문 블록이 존재하지 않으므로 이를 대신할 비트열 블록을 준비합ㅂ니다.

  비밀키와 마찬가지로 송신자와 수신자간에 미리 약속이 되어있어야 합니다. 

* 패딩 : 마지막 평문 블록이 블록 길이에 미치지 못할 경우에, 추가하여 블록 길이가 되도록 맞춥니다.



1. CBC 모드에 의한 암호화 과정 






2. CBC 모드에 의한 복호화 과정 





3. CBC 모드 특징

 - 평문 블록은 반드시 한단계 앞의 암호문 블록과 XOR을 취하고 나서 암호화 됩니다. 

   때문에, 만약 평문 블록 1과 2가 같더라도 암호 블록 1과 2는 같을 수 없습니다. 

 - CBC 모드의 암호문 블록이 1개 파손되었다면, 암호문 블록의길이가 바뀌지 않는다면, 복호화 했을 때에 평문 블록에 미치는 영향은 2블록에 한정됩니다.




이 이외에도, CFB, OFB, CTR 등의 블록 암호 모드 종류가 있지만, 이번에는 여기까지만 정리해보았습니다!

다음 포스팅은, 김재성군이 만든 ECB, CBC 문제 풀이로 하겠습니다.


+ Recent posts