블록암호의 사용방식
블록암호는 고정된 n 비트 블록을 n비트 블록으로 변환시키는 함수이다.
블록암호를 이용하여 평문을 암호화 할 때는단순히 암호 알고리즘만 사용하는 것이 아니고 사용 방식도 규정해야한다.
블록암호의 주요 모드
ECB 모드 : Electric CodeBook mode (전자 부호표 모드)
CBC 모드 : Cipher Block Chaining mode(암호 블록 연쇄 모드)
CFB 모드 : Cipher-FeedBack mode(암호 피드백 모드)
OFB 모드 : Output-FeedBack mode(출력 피드백 모드)
CTR 모드 : CounTeR mode(카운터 모드)
1. Electronic CodeBook(ECB)모드
개요 )
모드중 가장 간단한 모드이다. 평문은 N개의 n비트 블록으로 분할 된다.
만약 평문의 크기가 블록의 배수가 아니라면 배수가 되게 padding(덧붙이는값)이 필요하다.
블록의 암호화 복호화의 키는 동일
특징 )
- 동일한 평문블록은 동일한 암호문 블록을 갖는다.
- 평문의 각 블록은 다른 블록과 관계없이 암호화가 된다. 따라서 암호문 블록을 재배열하여 복호화 하면 재배열된 평문블록이 도출된다.
- 암호문의 한 블록에서 에러가 발생하면 그 블록에 대응하는 평문블록에서만 에러가 발생한다.
응용 )
- ECB모드의 장점은 매우 많은 데이터베이스를 암호화 할 때 병렬 처리가 가능하다는점.
- 수정된 레코드를 그 시점부터 암호하 하거나 복호화 할 수 있다. 전후 처리에 영향을 받지않는 독립성을 가지고 있다.
2. Cipher Block Chaning(CBC) 모드
개요 )
- CBC 모드에서 각각의 평문블록은 암호화되기 전에 이전 암호문 블록과 XOR 된다.
- 첫번째 블록을 암호화 할 대는 이전의 암호문 블록이 존재하지 않으므로 초기벡터(IV) 라고 불리는 허구의 블록이 사용된다.
초기벡터 (IV)
- 주어진 평문에 대하여 , IV의 생성에 앞서 IV는 반드시 송수신 양자 모두가 알고 있어야 한다.
- 제 3자로부터 예측이 불가능해야 한다.
- 평문과 연관지어 IV에 대한 예측이 불가능 해야 한다.
특징 )
- 평문 P1, P2, .... P.. 에서 첫번째 블록이 바뀌면 암호문 블록은 모두 바뀐다. 암호문 C는 모든 평문의 영향을 받아 생성된다.
- 평문을 제대로 복호화 하기위해서는 암호문이 순서대로 배열되어 있어야 한다.
- 암호문에서 에러가 발생하면 같은 순서의 평문블록과 그 다음 평문블록에서 에러가 발생한다.
- 암호문에서만 에러가 발생하면 두번째 후의 평문 블록에서부터는 정상적으로 복호화 된다.
암호화와 복호화 )
- CBC모드에서는 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화를 수행한다. 따라서 생성되는 각각의 암호문 블록은 현재 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.
- 복호화 할때 CBC 모드의 암호문이 1개 파손된 경우 암호문 블록의 길이가 바뀌지 않는다면 평문 블록에 미치는 영향은 2개 블록에 머문다
- 평문 블록의 한 비트오류는 전체 암호문에 영향을 준다.
CBC 모드 활용 )
- 인터넷에서 보안을 제공하는 프로토콜 중 하나인 IPSec에서는 통신의 기밀성을 지키기 위하어 CBC 모드로 사용한 3DES-CBC나 AES를 CBC 모드로 사용한 AES-CBC 등이 여기에 해당한다.
- CBC모드는 인증을 사훙하는 대칭키 암호 시스템의 하나인 Kerberos version5에서도 사용되고 있다.
3. Cipher FeedBack(CFB) 모드
개요 )
- CFB모드를 이용하면 어떤 블록암호도 스트림암호로 바꿀 수 있다.
- 스트림 암호의 경우 메세지의 길이가 블록의 정수배가 되도록 패딩을 할 필요가 없다.
- 실시간으로 사용할 수 있다.
암호화와 복호화 )
- 복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀔뿐 동일하다.
- 암호화기법과 복호화 기법에서 암호함수는 DES나 AES를 사용한다.
스트림 암호로서의 CFB 모드 )
- 비록 CFB모드가 DES와 AES와 같은 블록암호를 이용한 운영모드이지만 그 결과는 스트림 암호와 같다. 사실, 키 스트림이 암호문에 의존하는 비동기식 스트림 암호이다.
4. Output FeedBack(OFB) 모드
개요 )
- OFB 모드는 평문 블록이 동일하면 암호문이 같아지는 ECB 모드의 단점과 오류 전파가 발생하는 CBC 모드와 CFB 모드를 개선한 동작 모드이다.
- OFB모드 동작은 암호기의 출력과 평문을 EX-OR 하여 암호문을 생성하고 있으므로 오류전파가 발생하지 않는다
- 암호문 송신자와 수신자 사이에 동기를 조절해야 한다. 즉, 전송중인 암호문의 비트손실이나 삽입등에 유의해야 하는 방식이다.
- OFB 모드에서도 CBC 모드나 CFB모드와 마찬가지로 초기화 벡터를 사용한다. 초기화 벡터는 암호화 할 때마다 다른 랜덤비트열을 이용하는 것이 보통이다.
특징 )
- 초기치가 바뀌면 암호문은 모두 바뀐다.
- 암호 알고리즘의 출력은 평문과 무관하다.
- 전송중의 비트 오류가 전파되지 않는다.
- 암호문에서 비트 손실이 발생하면 그 다음에 오는 모든 평문은 에러가 난다.
스트림 암호로서의 OFB 모드 )
- CFB모드와 마찬가지로 OFB 모드는 블록암호를 기반으로 한 스트림 암호이다. 스트림은 평문이나 암호문과는 독립적이므로 동기식 스트림 암호이다.
- 키스트림은 평문이나 암호문과는 독립적이므로 동기식 스트림 암호이다
5. CounTeR(CTR) 모드
개요 )
- CTR모드는 암호화 시 피드백이 존재하지 않는다.
- 키 스트림의 의사난수성은 카운터를 사용함으로서 충족 될 수 있다.
- 이전 암호문 블록과 독립적인 키 스트림을 생성 하지만 피드백을 사용하지 않는다.
- ECB 모드처럼 CTR 모드는 서로 독립적인 n비트 암호문 블록을 생성한다.
카운터 만드는 법 )
- 카운터의 초기 값은 암호화 때마다 다른 값을 기초로 해서 만든다. 블록 길이가 128비트 (16byte)인 경우 카운터의 초기 값은 다음과 같다
66 1F 98 CD 37 A3 8B 4B |
00 00 00 00 00 00 00 01 |
비표(nonce) |
블록 번호 |
스트림 암호로서의 CTR 모드 )
- CFB 모드와 OFB모드 처럼 실제로 스트림 암호이다. (다른 평문 블록은 서로 다른 키로 XOR된다)
6. 정리 요약
이름 |
장점 |
단점 |
비고 | |
EBC모드 |
전자 부호표 모드 (Electric CodeBook) |
- 간단 - 고속 - 병렬처리 가능 (암/복호화) |
- 평문 속의 반복이 암호문에 반영 - 암호문의 블록의 삭제나 교체에 의한 평문의 조작 가능 - 비트 단위의 에러가 잇는 암호문을 복호화 하면 대응하는 블록이 에러난다. - 재전송 공격이 가능 |
비권장 |
CBC모드 |
암호블록 연쇄모드 (Cipher Block Chaining) |
- 평문의 반복은 암호문에 반영되지 않는다. - 병렬처리 가능(복호화) - 임의의 암호문 블록을 복호화 가능 |
- 전송도중 암호문 블록에서 한 비트가 오류가 발생함녀 평문 블록에는 대부분 비트에서 오류가 발생되고 다음 평문블록에서는 C 의 오류비트와 같은 위치에서 한 비트 오류가 발생한다. - 암호화에서는 병렬처리 불가능 |
권장 |
CFB모드 |
암호 피드백 모드 (Cipher FeedBack) |
- 패딩이 필요없다 - 병렬처리 가능(복호화만) - 임의의 암호문 블록을 복호화 가능 |
- 암호화에서는 병렬처리 불가능 - 전송도중 암호문 블록 C에서 한 비트 오류가 발생하면 평문 블록 P에서는 C의 오류 비트와 같은 위치에서 한 비트 오류가 발생, 하지만 C의 비트는 시프트레지스터에 오류가 존재하는 한 다음 평문블록의 대부분의 비트에 오류가 발생한다. (50%확률) - 재전송 공격이 가능 |
CTR 모드 권장 |
OFB모드 |
출력 피드백 모드 (Output Feedback) |
- 패딩이 필요없다. - 암/복호화의 사전 준비 가능 - 암/복호화가 같은 구조 - 비트 단위의 에러가 있는 암호문을 복호화 하면 평문의 대응하는 비트만 에러가 난다. |
- 병렬처리 불가능 - 적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문블록의 비트가 반전된다. |
CTR모드 권장 |
CTR모드 |
카운터 모드 (CounTeR) |
-패딩이 필요없다. - 암/복호화의 사전 준비 가능 - 암/복호화가 같은 구조 - 비트 단위의 에러가 있는 암호문을 복호화 하면 평문의 대응하는 비트만 에러가 난다. - 병렬처리 가능(암/복호화) |
-적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다. |
권장 |
'정보보안기사 > 암호학' 카테고리의 다른 글
대칭키 암호 #3 (AES 및 기타 대칭키 암호 알고리즘) (0) | 2017.06.27 |
---|---|
대칭키 암호 #2 (DES) (0) | 2017.06.16 |
대칭키 암호 #1 (0) | 2017.06.15 |
암호학 개요 (0) | 2017.05.19 |