이전에 소개한 다양한 블록 암호 알고리즘들이 전부 128-bit 이나 64-bit 와 같이

일정한 크기의 블록 단위의 암호화를 진행한다고 했습니다.

 

그렇다면 여기서, 만약 암호 알고리즘에서 제공하는 블록 크기보다 더 큰 크기의 평문을 암호화 하려면... ????

 

이 때 필요한 것이 블록 암호의 운영 모드입니다.

블록암호의 운영 모드는 크게 ECB, CBC, OFB, CFB, CTR의 다섯 가지 모드로 나뉩니다.

 

- ECB (Electronic Code Book)

   ECB 모드는 매우 간단하게 생각해서 평문을 블록 크기로 잘라서 암호화 하는 방식입니다.

   구지 수식으로 표현하면 ... Ci = E(Pi, K) 이렇게 되겠군요 ...

   특징이라면 병렬 처리가 쉽다는 장점과 동시에

   보안적 측면에서 입력이 랜덤화 되지 않고 평문이 쉽게 조작 될 수 있다는 단점이 있습니다.

 

- CBC (Cipher Block Chaining)

   CBC 모드는 첫 번째 블록의 결과가 다음 블록의 암호화에 반영이 되기 때문에

   ECB 모드보다 보안적 특성이 뛰어납니다.

   다만 한 블록에서 에러가 발생되면 다음 블록에 영향을 미친다는 단점이 있습니다.

   수식으로 표현하면 ... Ci = E((Pi xor Ci-1), K) 가 되겠군요

 

- OFB (Output FeedBack)

   CBC 모드가 에러가 발생하면 에러가 발생한 다음 블록부터 계속 에러가 전파되는 현상이 있었습니다.

   반면 OFB 모드는 이런 단점을 보완하여 평문에서 1-bit 에러가 발생하면

   암호문에도 1-bit 에러만 발생하게 됩니다.

   OFB 모드를 보면 키 스트림을 생성하고 평문과 XOR를 하여 암호를 만들어 내는 방법이기에

   어떤 의미로는 스트림 암호로 볼 수 있습니다.

   

- CFB (Cipher FeedBack)

   CFB 모드는 OFB 모드와 구조적으로 비슷해 보이나, 다소 다른 양상을 보입니다.

   우선 한 암호문이 다음 블록의 키로 사용되기 때문에,

   암호문을 알고 있는 상황에서 복호화를 병렬 처리 할 수 있다는 점이 특징입니다.

   따라서 MISTY와 같이 복호화가 느린 시스템에서 사용하기에 좋겠지요

 

- CTR (Counter)

   CTR 모드는 EBC 모드 처럼 병렬 처리가 가능 할 뿐만 아니라

   EBC 모드 처럼 한 블록에서 생긴 에러가 다음 블록으로 전파 되지도 않으며

   EBC 모드보다 안전합니다.


최종적으로 정리하면 다음과 같습니다.

 

 

 EBC

CBC

 OFB

 CFB

 Security

- 평문 패턴 유지

- 블록 암호 입력이 랜덤화되지 않음

- 평문 조작이 쉬움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작 어려움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작이 쉬움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작 어려움

 Efficiency

- 병렬처리 가능

- 전처리 불가능

- 복호화 병렬처리

- 전처리 불가능

- 병렬처리 불가능

- 전처리 가능

- 복호화 병렬처리

- 전처리 불가능

 Error

 Propagation

- 암호문 에러가 평문의 한 블록에만 영향을 줌 - 암호문 에러가 다음 블록에 영향을 줌 - 암호문 에러가 평문에 대응하는 비트에만 영향을 줌 - 암호문 에러가 현재 블록과 다음 블록에 영향을 줌

표랑 본문을 이전 텍스트큐브 시절에 포스팅 한 걸 그대로 옮겨 온 것인데,

표를 다시 그리려니 ... 귀찮 ... 어려워서 그냥 CTR 모드는 표에 반영 못했네요 llorz

그 때는 그림도 같이 첨부 됐었는데, 그림 자료도 다 잃어버렸네요 ㅠㅠㅠㅠㅠㅠ


출처 - http://reinliebe.tistory.com/

+ Recent posts