[네트워크보안] Mode of operation(CBC, CTR, AES-CCM, GCM)
ECB(Electronic code book)은 independent하게 암호화되어 서로 상관관계를 맺지 않기 때문에 문제가 발생한다.
그렇기 때문에 message block이 서로 linked된 CBC mode가 나오게 된다.
CBC (Cipher Block chaining)
앞서 언급했다시피 CBC는 message block이 linked된 형태인데, 다시 말해 현재 블록이 이전 암호 블록과 연결되어 있음을 말한다. (Block chaining)
암호화 process가 시작되기 위해서는 이전 블록이 필요하니 process의 시작에는 IV(Initialization Vector)을 이용한다.
Ci = EK (Pi XOR Ci-1)
C-1(초기) = IV
여기서 주목해야 할 점은 plaintext와 chipertext가 XOR된 후에 encrypted되어(이 과정에서 DES등이 사용된다.) cipher이 생성된다는 것이다. 각 mode마다 feedback되는 대상이 다르니 유의하여 보도록 한다.
CFB (Cipher FeedBack)
stream cipher이며, encrpted output(result)가 feedback된다.
C-1(초기) = IV
CBC와 비슷해 보이지만 동작 방식에서 차이점이 존재한다.
CBC 모드는 각 블록을 암호화하기 전에 이전 암호화된 블록과 평문을 XOR 연산한 후에 암호화를 수행하는데,
CFB 모드는 생성된 암호문 블록을 다시 암호화하고, 그 결과를 다음 평문 블록과 XOR하여 다음 암호문 블록을 생성한다.
다시 말해, 암호화하는 대상에서 차이를 보인다.
CBC는 파일 암호화와 같은 정적 데이터에 많이 사용되고, CFB는 네트워크 통신과 같은 스트림 처리에 적합한 암호화 방식이다.
OFB (Output FeedBack)
OFB는 CFB와 유사한 XOR과정을 거치지만, 최종 Ciphertext된 result가 아니라 암호화된 출력 자체를 계속 피드백한다는 점에서 차이를 보인다. 다시 말해, 암호문 간 상호 연관성이 존재하지 않는다. 오류가 한 블록에 발생해도 그 블록에만 영향을 미치며, 다음 블록으로 전파되지 않는 특징을 지니고 있다.
CTR (Counter)
CTR 모드는 각 블록마다카운터 값을 암호화하여 그 결과와 평문을 XOR해 암호문을 생성한다. 카운터 값은 블록마다 다르며 일반적으로 첫 번째 카운터 값은 초기화 벡터(IV)와 같이 설정되고 이후 블록마다 카운터가 1씩 증가한다.
CBC, CFB, OFB와 달리 CTR은 평문이나 이전 암호문에 의존하지 않고 독립적으로 암호화할 수 있다는 특징이 있다.
(=No chaining) 이는 병렬 처리가 가능하게 하며 random access도 가능하므로 고속 데이터 암호화에 적합하다.
다만 이때 카운터 값은 고유해야 하며, 절대로 재사용되어서는 안 된다. 만약 같은 카운터 값이 반복되면, 같은 key를 사용하는 경우 암호문이 반복적으로 생성될 수 있어 암호화의 안전성이 크게 저하된다.
AES - CCM (CBC+CTR)
TLS 1.3에서도 사용하는 암호화 방식으로(다만 AES-GCM과 chacha를 권장한다.) CBC+CTR mode이다.
위쪽은 CBC모드가, 아래쪽은 CTR모드가 사용된다.
인증코드를 만들 때는 header와 같은 ADD도 들어가며 암호화하진 않는다. Header와 Payload 모두 인증이 필요하지만 암호화는 실질적인 데이터를 포함하고 있는 payload만 진행한다.
MIC(Message Integrity Code)는 MAC의 예전 버전으로 평문을 가지고 만들며 앞의 암호문을 해동해야 검증이 가능하다.
AES-GCM (Galois-CTR)
Galois field 에 대한 설명은 생략한다. AES-GCM mode에서는 GHASH가 사용된다.
AES-GCM은 AES-CTR 모드를 기반으로, 여기에 인증 기능을 추가한 암호화 방식이며 특히 네트워크 통신이나 보안 프로토콜(TLS/SSL)에서 많이 사용한다.
인증 태그(Authentication Tag)를 통해 암호문이 변조되지 않았는지 확인할 수 있다.
> AEAD(Authenticated Encryption with Associated Data)
AES-GCM은 암호화된 데이터뿐만 아니라, 인증되지 않은 추가 데이터를 보호하는 기능도 지원한다.
이를 통해 암호화된 데이터 외에도 네트워크 헤더와 같은 추가 데이터(ADD)의 무결성을 보장할 수 있다.
+ chacha20/poly1305 추가 예정