더북(TheBook)

마지막으로 CTR(CounTeR) 모드를 살펴봅니다. CTR 모드는 OFB와 비슷한데 이것의 단점을 개선했습니다.

CTR 역시 CFB나 OFB와 마찬가지로 블록 암호 알고리즘을 이용하여 ‘난수 생성기’를 만들고 스트림 암호화하듯이 구성합니다. 하지만 OFB와 달리 각 블록의 결과물을 연결하는 과정이 없습니다. 그 대신 초기화 벡터로 넌스(Nonce)9를 넣고 그다음 블록부터는 첫 번째 넌스 값에 1씩 더해 난수를 생성합니다. CFB나 OFB에서 체이닝을 한 것처럼 블록마다 다른 난수 값을 생성하고, 그 난수 값으로 원문 메시지와 XOR 연산을 수행합니다.

이때 단순히 넌스에 1씩 더해 사용해도 블록마다 완전히 다른 안전한 난수 값을 얻을 수 있는 이유는 암호 알고리즘의 ‘쇄도 효과(Avalanche Effect)’ 때문입니다. 쇄도 효과는 입력 값을 아주 조금만 바꿔도 출력 값이 완전히 달라지는 것을 의미합니다. 블록 암호 알고리즘은 ‘확산’의 성질을 갖도록 만든 것이기 때문에 입력 값을 조금만 바꿔도 여기저기로 흩어져서 큰 변화를 가져옵니다. 그래서 난수 생성기로 사용할 수 있는 것입니다. 이런 관점에서 CTR은 OFB 모드의 강점을 가지면서 확산을 강화한 운영 모드라고 할 수 있습니다.

이 장에서는 NIST에서 인증한 운영 모드 중 데이터를 숨기는 암호화에 사용하는 다섯 가지 운영 모드의 장단점과 특징을 알아보았습니다. 이제 ‘암호문에서 원문의 정보가 드러나지 않게’, ‘암호문에서 키의 정보가 드러나지 않게’ 적절한 운영 모드를 직접 고를 수 있나요?

ECB는 원문 메시지의 패턴이 드러날 수 있어 안전하지 않다는 점, OFB보다는 CTR이 조금 더 안전하다는 점을 기억하세요. CTR을 고른다면 초기화 벡터로 사용하는 넌스가 유일한 값이어야 안전하다는 점도 놓쳐서는 안 됩니다.

 

| CTR 운영 모드의 동작 원리 |

 

 


9 넌스는 단 한 번만 사용하는 숫자로 이해하면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.