블록 암호 운영모드
개요
DES나 AES와 같은 블록 암호를 사용하여 다양한 크기의 데이터를 암호화 하는 방식
운영모드 분류
패딩
패딩(padding)이란 블록암호 알고리즘에서 블록의 크기를 일정하게 맞추기 위해 빈 부분을 채워주는 것을 말한다.
1. 제로 패딩(Zero Padding)
- 패딩이 필요한 부분을 0으로 채운다.
- 제로 패딩은 원본 파일이 하나 이상의 0 바이트로 끝나는 경우 되돌릴 수 없으므로 일반 텍스트 데이터 바이트와 패딩 바이트를 구별할 수 없다.
2. 비트 패딩(Bit Padding)
- 비트 패딩은 크기와 상관없이 메시지에 적용할 수 있다.
- 패딩이 필요한 부분은 0으로 채우되, 최상위 비트는 1로 채운다.
3. 바이트 패딩(Byte Padding)
- 패딩이 필요한 부분은 0으로 채우되, 최하위 비트는 패딩의 크기로 채운다.
4. PKCS5 패딩
- PKCS5 패딩은 8바이트 블록 크기를 사용하는 블록 암호에 대해서만 정의된다.
- 원문의 길이가 L 바이트면 마지막 블록은 L mod 8의 크기를 갖는다.
- 패딩 크기는 8 - (L mod 8)가 되며 PKCS5는 패딩 크기의 값을 갖는 바이트를 크기만큼 반복한다.
5. PKCS7 패딩
- PKCS7은 8바이트가 아닌 가변 길이를 갖는 다는 점에서 다르지만 원리는 PKCS5와 동일하다.
운영 모드 종류
1. ECB: Electronic Code Book - 전자 부호표 모드
ECB 모드에서는 평문 블록을 암호화하는 것이 그대로 암호화 블록이 된다.
특징)
- 어떤 평문 블록은 고정된 암호문 블록으로 암호화된다. (deterministic)
- 암호문을 살펴보는 것만으로도 평문 속에 패턴의 반복이 있다는것을 알 수 있음
장점)
- 블록 간에 동기화가 불필요하다. (다른 블록과 상관없이 특정 블록을 해돌할 수 있다.)
- 암호화/복호화 과정의 병렬화 처리(parallelization processing)가 가능하다.
단점)
- 만약 평문이 같은 두 블럭이 존재한다면, 두 블럭의 암호문 또한 같다.
- 블록 재사용이 가능하다.
2. CBC: Cipher Block Chaining - 암호 블록 연쇄 모드
각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며, 첫 블록의 경우는 초기화 벡터(IV)가 사용된다.
특징)
- CBC 암호화는 확률적이다. (probabilistic). / 만약 매번 새로운 IV를 사용하면, 동일한 평문의 블록은 완전히 다른 암호문 블록이 만들어진다.
- 초기값(IV)은 nonce이어야 한다. (number used only one)
장점)
- 평문의 반복은 암호문에 반영되지 않는다.
- 임의의 암호문 블록을 복호화 가능
- 복호화 병렬처리 가능
단점)
- 암호화에서는 병럴처리 불가능
3. CFB: Cipher FeedBack - 암호 피드백 모드
암호 피드백 방식은 CBC의 변형으로, 블록 암호를 자기 동기 스트림 암호로 변환한다.
특징)
- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다. (패딩이 필요 없다.)
- 최초의 키생성 버퍼로 IV가 사용되며, 이때 IV는 제2의 키가 될 수 있다.
- CBC모드와 마찬가지로 암호화는 순차적이고, 복호화는 병렬적으로 처리할 수 있다.
장점)
- 패딩이 필요없음
- 복호화 병렬처리 가능
- 임의의 암호문 블럭을 복호화 가능
단점)
- 암호화에서는 병렬처리 불가능
- 재전송 공격 가능
4. OFB: Output FeedBack - 출력 피드백 모드
출력 피드백은 블록 암호를 동기식 스트림 암호로 변환한다. XOR 명령의 대칭 때문에 암호화와 암호 해제 방식은 완전히 동일하다.
특징)
- 전처리기(Preprocess)가 가능하다. / 입력(PlainText)이 없어도, Key를 미리 만들 수 있다.
- 암호화와 복호화 과정에서 XOR 연산되는 키 스트림이 평문과 암호문에 독립적이다.
장점)
- 패딩이 필요없음
- 암/복호화의 사전준비 가능하고, 같은 구조임
단점)
- 병렬처리 불가능
- 적극적 공격자가 암호문 블럭의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.
5. CTR: Counter - 카운터 모드
카운터 방식에서는 각 블록마다 현재 블록이 몇 번째인지 값을 얻어, 그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용한다.
특징)
- 카운터 값이 다르므로, 서로 같은 두 평문을 암호화하여도 이에 대응 하는 두 암호문은 다르다.
장점)
- 전처리(Preprocess)가 가능하다.
- 병렬처리(Parallelization)가 가능하다.
단점)
- 적극적 공격자가 암호문 블럭의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.
비교
참고자료
블록 암호 운영 모드 정보 보안 암호학 강좌 : https://www.youtube.com/watch?v=IfU0Rp2BOEo&list=PLW8wOTYOluvFmqr01lKXKku_4zjn2RqKH&index=16
블록 암호 운용 방식 - 위키백과, 우리 모두의 백과사전
암호학에서 블록 암호 운용 방식(영어: block cipher modes of operation)은 하나의 키 아래에서 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다.[1][2] 블록 암호는 특정한 길이의 블록 단
ko.wikipedia.org
https://m.blog.naver.com/kostry/220808675410
DES의 작동 모드
DES의 작동 모드 1. ECB 모드(Electric CodeBook) - 전자 부호표 모드 ECB 모드에서는 평문 블...
blog.naver.com
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bycho211&logNo=220975255680
운영모드(Mode of Operation)
4. 운영모드(mode of operation) - DES나 AES와 같은 블 록 암호를 사용하여 다양한 크기의 데이터를...
blog.naver.com
[암호학] 현대 대칭키 암호를 이용한 암호화 기법 - ECB, CBC, CFB, OFB, CTR 모드
블록 암호의 사용 방식 블록 암호는 고정된 n비트 블록을 n비트 블록으로 변환시키는 함수이다. 임의 길이의 평문을 암호화시키기 위해서는 평문을 특정한 길이로 분할하여 블록 암호에 입력시
yjshin.tistory.com