[블록 암호화] 블록 암호화 - CTR 모드
블록 암호화 운용 모드의 ECB와 CBC 말고도 CFB나 OFB도 있지만,
따로 사용해본 적은 없어서 바로 CTR 모드로 넘어갑니다.
CTR 모드는 Counter 모드의 약자로, 운용 방식 중 가장 많이 사용하는 모드 중 하나입니다.
1. AES-CTR 이란?
| 특징 | 설명 |
|---|---|
| 암호 알고리즘 | AES |
| 지원 키 길이 | 128비트, 192비트, 256비트 |
| 카운터 블록 | 128비트 고정 (블록 크기와 동일) |
| 블록 크기 | 128비트(16바이트) 고정 |
| 암호화 방식 | 카운터 블록을 AES 암호화 후 키 스트림을 생성하여 평문과 XOR |
2. CTR 동작 원리
CTR 방식의 암호화와 복호화는 과정이 동일합니다.
- 카운터 블록을 AES 암호화하여 키 스트림 블록을 생성
- 평문과 키 스트림 블록을 XOR하여 암호문 생성
- 카운터 값을 1 증가
- 반복
이 떄 카운터 블록은 Nonce 값과 카운터 값의 연접한 데이터로 16바이트를 사용합니다.
- 대부분 카운터 블록에서 앞의 8바이트는 Nonce, 뒤의 8바이트는 카운터 값으로 사용합니다. (아닌 경우도 존재)
- 카운터 블록을 IV라고 부르기도 하지만, 엄밀하게는 "카운터 블록"이 올바른 표현입니다.
2-1. CTR 장점
CTR모드는 카운터 블록을 활용하여 블록 암호화를
마치 스트림 암호화처럼 사용할 수 있도록 하는 알고리즘입니다.
장점은 꽤 많습니다.
- 스트림 암호화처럼 동작하기 때문에 패딩이 필요하지 않고 빠릅니다.
- 모든 카운터 블록이 독립적이기 때문에 암호화와 복호화 모두 병렬 처리가 가능합니다.
- 독립적인 블록 암호화로 오류 확산이 없습니다.
- 필요한 부분만 암복호화가 가능합니다. (스트리밍)
2-3. CTR 단점
ECB나 CBC에 비해 장점이 많은 것 뿐이지 단점이 없는 건 아닙니다.
CTR모드도 무결성 제공이 없기 때문에 변조 탐지가 불가능하다는 단점은 그래도 남아 있습니다.
(물론 MAC이나 AAD와의 조합으로 보완이 가능합니다.)
또한 카운터 블록의 보안이 중요합니다. (사실 IV나 Nonce는 모두 중요하죠)
같은 키에서 같은 카운터 블록을 재사용 할 경우 앞의 평문 두 개가 XOR되어 노출된다고 합니다.
3. 사용 사례
여러 블록 암호화들 중 가장 낫다고 생각되는 알고리즘입니다.
패킷 암호화 시 사용된다고 하며,
패딩이 필요 없고 빠르기 때문에 디스크/파일 암호화에도 사용하기 좋다고 합니다.
(필요한 부분만 암복호화가 가능하기 때문에 디스크 섹터 암호화에 매우 적합하다고 합니다.)
또한 IoT 및 임베디드 시스템에서 연산 성능이 좋아 자주 사용된다고 합니다. (병렬 처리 가능)