0Pricing
Cryptology Academy · 강의

CTR 모드와 스트림 암호 동작

카운터 모드를 사용해 블록 암호를 키스트림 생성기로 변환합니다.

CTR 모드와 스트림 암호 동작은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

카운터(CTR) 모드는 모든 블록 암호를 스트림 암호로 변환합니다. 병렬 처리가 가능하고 패딩이 필요하지 않으며 AES-GCM의 기반이 됩니다. 이제 CTR을 완전히 익혀 보겠습니다.

CTR 모드 개념

연속되는 카운터 값을 암호화하여 키스트림을 생성합니다. Keystream[i] = AES(K, Nonce || Counter_i) Ciphertext = Plaintext XOR Keystream 각 블록마다 카운터가 증가합니다. 복호화는 암호화와 동일합니다.

CTR와 CBC 비교

CBC: 순차적으로 암호화되며 각 블록이 이전 블록에 의존합니다. CTR: 완전히 병렬화할 수 있어 각 블록이 독립적입니다. 1 GB 파일의 경우 CTR은 모든 CPU 코어를 사용할 수 있지만 CBC는 사용할 수 없습니다.

패딩이 필요하지 않음

CTR은 원하는 길이의 키스트림을 생성합니다. 평문과 바이트 단위로 XOR합니다. 100바이트 메시지는 100바이트의 키스트림을 사용하므로 패딩이 필요하지 않습니다. 스트리밍 데이터에 적합합니다.

논스/카운터 구조

128비트 AES 블록에서 흔히 사용하는 분할 방식은 다음과 같습니다. - 64비트 무작위 논스(메시지마다 고유함) - 64비트 카운터(블록마다 증가함) 또는 96비트 논스 + 32비트 카운터를 사용합니다(GCM 표준). 논스의 고유성은 매우 중요하므로 동일한 (논스, 키) 쌍을 절대 재사용해서는 안 됩니다.

CTR 논스 재사용 공격

동일한 (키, 논스)을 사용하는 CTR은 동일한 키스트림을 생성합니다. 서로 다른 두 메시지를 암호화하면 C1 XOR C2 = P1 XOR P2가 됩니다. 이는 다중 사용 일회용 패드 공격과 같습니다. 치명적인 정보 유출이 발생합니다.

CTR 임의 접근

CTR은 임의 접근을 지원하므로 블록 1000을 복호화할 때 AES(K, Nonce || 1000)을 직접 계산할 수 있습니다. 이전 블록을 복호화할 필요가 없습니다. 데이터베이스와 디스크 암호화에 적합하지만, 다른 모드와 함께 사용해야 합니다.

Python에서의 CTR

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os nonce = os.urandom(16) # Used as counter start cipher = Cipher(algorithms.AES(key), modes.CTR(nonce)) enc = cipher.encryptor() ciphertext = enc.update(plaintext) + enc.finalize()

CTR과 오류 전파

CTR 모드에서는 손상된 암호문 비트 하나가 평문 비트 하나만 정확히 반전시킵니다. 오류가 다른 블록으로 전파되지 않으므로, 블록 손상이 다음 블록을 뒤섞어 버리는 CBC와 다릅니다. 잡음이 있는 채널에 적합합니다.

논스 오용 방지를 위한 SIV 모드

AES-SIV(합성 초기화 벡터)는 논스 오용에 강합니다. 논스를 재사용하더라도 평문이 같은지만 드러날 뿐, 평문 전체가 노출되지는 않습니다. 논스의 고유성을 보장하기 어려운 상황에서 사용됩니다.

CTR에서 GCM으로

AES-GCM = AES-CTR + GHASH 인증입니다. 카운터 모드가 암호화를 처리하고, GHASH가 갈루아 필드 곱셈을 사용해 인증 태그를 계산합니다. 둘을 결합하면 인증된 암호화가 됩니다.

빠른 확인

대량 데이터 암호화에서 CBC 모드보다 CTR 모드가 갖는 가장 큰 장점은 무엇입니까?

복습

CTR 모드를 익히셨습니다! 다음에는 CTR을 인증과 결합하여 AES-GCM으로 인증된 암호화를 구현하는 방법을 살펴보겠습니다.

자주 묻는 질문

“CTR 모드와 스트림 암호 동작” 강의는 무료인가요?

네 — “CTR 모드와 스트림 암호 동작” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“CTR 모드와 스트림 암호 동작”에서 뭘 배우나요?

카운터 모드를 사용해 블록 암호를 키스트림 생성기로 변환합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“CTR 모드와 스트림 암호 동작” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 블록 암호의 기초와 패딩
  2. ECB와 CBC: 패턴 및 IV
  3. CTR 모드와 스트림 암호 동작
  4. GCM과 인증 암호화
← Cryptology Academy(으)로 돌아가기