기본 개념
블록 암호는 고정된 N비트 블록을 N비트 블록으로 변환시키는 함수이다. 임의 길이의 평문을 암호화 시키기 위해서는
평문을 특정한 길이로 분할하여 블록 암호에 입력시켜야 한다. 즉 블록 암호를 이용하여 평문을 암호화할 때에는 단순히 암호 알고리즘만이 있으면 해결되는 것이 아니고 사용 방식도 규정해야 한다.
블록 암호를 다양한 응용에 사용하기 위해 NIST에서는 5가지 운영 모드를 정의하였다.
이 5가지 모드는 사실상 블록 암호가 사용되는 모든 암호 응용에 적용할 수 있도록 만들어졌다.
이 모드는 DES나 AES를 포한한 어떤 대칭 블록 암호에도 적용할 수 있다.
블록 암호의 주요 모드는 아래와 같다.
1. ECB 모드:Electric CodeBook mode( 전자 부호표 모드)
2. CBC 모드: Cipher Block Chaining mode(암호 블록 연쇄 모드)
3. CFB 모드: Cipher FeedBack mode(암호 피드백 모드)
4. OFB 모드: Output FeedBack mode(출력 피드백 모드)
5. CTR 모드: CounTeR mode(카운터 모드)
ECB모드
운영 모드 중에서 가장 간단한 이다. 평문은 N개의 n비트 블록으로 분할된다.
만약 평문 크기가 블록 크기의 배수가 아니라면, 평문의 마지막 블록에는 다른 블록들과 동일한 크기로 만들기 위하여
덧붙이기(padding)가 필요하다. 각각의 블록을 암호화 혹은 복호화하기 위하여 사용되는 키는 동일하다.
특징
장점: 블록간 독립성이다, 다수 블록의 암호화와 복호화를 병렬적으로 수행할 수 있다. 또한 다수 블록 중에 일부 블록만 독릭적으로 암호화할 수 있다. 그리고 발생하는 오류가 다른 블록에 영향을 주지 않는다.
단점: 평문 블록 패턴과 암호문 블록 패턴이 동일하게 유지되는 문제를 가지고 있어 동일한 키로 여러 블록의 평문을 암호화할 때에는 ECB방식을 권고하지 않는다.
응용
ECB 모드의 장점은 매우 많은 데이터베이스를 암호화할 때 병렬적으로 처리할 수 있다.
데이터베이스에 암호화된 레코드를 저장하거나 암호화된 레코드를 복호화해야 하는 분야에서는 암호문 블록의 독릭성이 유용하기 때문이다. 다른 레코드에 영향을 주지 않고도 수정된 이후의 레코드를 중간에서부터 암호화하거나 복호화할 수 있다.
CBC모드
CBC 모드에서 각각의 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR된다.
블록이 암호화될 때 암호화된 블록은 전송되지만 다음 블록을 암호화할 때 사용하기 위하여 메모리에 저장되어야 한다.
그리고 첫 번째 블록을 암호하할 때는 이전의 암호문 블록이 존재하지 않으므로 IV라고 불리는 허구의 블록이 사용된다.
즉 송신자와 수신자가 서전에 공유한 IV를 존재하지 않는 C0 대신에 사용하는 것이다.
IV(초기 벡터)
주어진 평문에 대하여 IV의 생성에 앞서 IV는 반드시 송수신 양자 모두가 알고 있어야 하며 제3자로부터의 예측이 불가능해햐 한다. 평문과 연관지어 IV에 대한 예측이 불가능해야 한다.
특징
초기치 또는 평문 P1, P2.....Pi에서 첫 번째 블록이 바뀌면 암호문 블록은 모두 바뀐다.
암호문 Ci는 모든 평문의 영향을 받아 생성된다. 따라서 평문을 제대로 복호화하기 위해서는 암호문이 순서대로 배열되어 있어야 한다.
암호문 Ci에서 에러가 발생하면 평문 Pi+Pi+1에서 에러가 발생한다. 그러나 암호문 Ci에서만 에러가 발생하면 Ci+2부터는 정상적으로 복호된다.
암호화 복호화
CBC 모드에서는 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행한다.
따라서 생성되는 각각의 암호문 블록은 현재 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.
(각 블록에 동일한 키 사용)
복호화할 때 CBC 모드의 암호문 블록이 1개 파손된 경우, 암호문 블록의 길이가 바뀌지 않았다면
평문 블록에 미치는 영향은 2개 블록에 머문다. 반면 평문 블록의 한 비트 오류는 출력되는 모든 암호문에 영향을 미친다.
CBC 모드 활용
IPSec에서는 통신에 기밀성을 지키기 위해 CBC모드를 사용하고 있다.
또한 3DES,DES,AES에서도 CBC모드를 사용하고 있고
대칭키 암호 시스템의 하나인 커버로스 버전5에서도 사용되고 있다.
CFB모드.
CFB모드를 이용하면 어떤 블록 암호도 스트림 암호로 바꿀 수 있다. 스트림 암호의 경우 메시지의 길이가 블록의 정수배가 되도록 패딩을 할 필요가 없으며실시간으로 사용할 수 있다. 따라서 한 문자를 전송하는 경우 문자 중심 스트림 암호를 이용하여 각 문자가 암호화되는 즉시 전송할 수 있다.
암호화 복호화.
복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀌었을 뿐 동일하다 암호화 기법과 복호화 기법에서
암호 함수는 DES나 AES를 사용한다. (복호화 시 복호화 함수가 아닌 암호화 함수 사용)
스트림 암호로서의 CFB 모드
CFB 모드가 DES와 AES와 같은 블록 암호를 이용한 운영 모드지만, 그 결과는 스트림 암호와 같다.
CFB는 키 스트림이 암호문에 의존하는 비동기식 스트림 암호이다.
OFB모드
OFB 모드는 평문 블록이 동일하면 암호문이 같아지는 ECB 모드의 단점/오류 전파가 발생하는 CBC 모드와
CFB 모드를 개선한 동작 모드이다. OFB 모드 동작은 암호기의 출력과 평문을 EX-OR하여 암호문을 생성하고 있으므로
오류 전파가 발생하지 않는다. 그러나 암호문 송신자와 수신자 사이에 동기를 조절해야 한다. 즉 전송중인 암호문의 비트 손실이나 삽입 등에 유의해야 하는 방식이다.
OFB 모드에서도 IV를 사용한다
특징
1. 초기치가 바뀌면 암호문은 모두 바뀐다.
2. 암호 알고리즘의 출력은 평문과 무관.
3 전송 중의 비트 오류가 전파되지 않는다(Ci에 비트 오류가 발생했다면, 복원된 Pi의 값에만 영향을 미치며 이후의 복원된 평문에는 아무런 영향도 주지 않는다)
4. 암호문 Ci에서 비트 손실이 발생하면 그 다음에 오는 평문은 모두 에러가 발생하기 때문에 동기를 새로 맞추어야 한다.
스트림 암호로서의 OFB 모드
CFB 모드와 마찬가지로 OFB 모드는 블록 암호를 기반으로 한 스트림 암호이다.
스트림은 평문이나 암호문과는 독립적이므로 동기식 스트림 암호이다.
CTR 모드
CTR 모드는 OFB 모드와 마찬가지로 이전 암호문 블록과 독립적인 키 스트림을 생성 하지만 피드백을 사용하지 않는다.
그리고 ECB 모드처럼 CTR 모드는 서로 독립적인 n비트 암호문 블록을 생성한다. CTR 모드도 암호화 시 피드백이 존재하지 않는다. 그렇지만 키 스트림의 의사난수성은 카운터를 사용함으로써 성취될 수 있다.
카운터 만드는 법
카운터의 초기값은 암호화 때마다 다른 값(비표)을 기초로 해서 만든다. 블록 길이가 128bit인 경우 카운터의 초기값은
아래와 같다.
66 1F 98 CD 37 A3 8B 4B(비표)
00 00 00 00 00 00 00 01(블록 번호)
스트림 암호로서의 CTR 모드
CFB 모드와 OFB 모드처럼 CTR 모드는 실제로 스트림 암호이다.(다른 평문 블록은 서로 다른 키로 XOR됨)
OFB 모드의 경우와 같이 CTR 모드도 동기식 스트림 암호화를 지원한다. 그리고 CTR 모드는 피드백이 없으므로
당연히 병렬 처리가 가능하다. 그 외에 CTR 모드는 OFB 모드의 장점을 대부분 지원한다.
'암호학' 카테고리의 다른 글
지적 재산권 보호 (0) | 2019.12.14 |
---|---|
암호기법의 분류 (0) | 2019.12.14 |
암호학의 기본 개념 (0) | 2019.12.14 |
댓글