스트림 암호는 대칭 키 암호(Symmetric-key Cipher) 방식 중 하나로, 평문(Plaintext) 데이터를 비트(bit) 또는 바이트(byte) 단위의 연속적인 흐름으로 처리하여 암호화하는 방식입니다. 블록 암호(Block Cipher)와 달리 고정된 블록 단위로 처리하지 않고, 실시간성이 중요한 환경에서 매우 효율적입니다.
스트림 암호의 근본적인 원리는 일회용 패드 (OTP, One-Time Pad)와 같습니다.
스트림 암호는 키스트림 생성 방식에 따라 크게 두 가지 유형으로 분류됩니다.
| 구분 | 동기식 스트림 암호 (Synchronous Stream Cipher) | 비동기식 스트림 암호 (Self-Synchronizing Stream Cipher) |
|---|---|---|
| 키스트림 생성 | 키와 내부 상태(Initial Vector/IV)에 의해서만 결정됨. 암호문과는 무관함. | 키와 이전 단계에서 생성된 암호문의 일부에 의해 결정됨. |
| 특징 | 송신자와 수신자의 키스트림 생성 상태가 항상 동기화되어야 함. | 통신 중 일부 비트 오류가 발생해도 시간이 지나면 자동 복구(동기화)됨. |
| 예시 | RC4, A5/1, ChaCha20 | Cipher Feedback (CFB) 모드로 운영되는 블록 암호 |
제시된 이미지에서 설명하는 난수 생성 방식은 스트림 암호의 보안성을 결정하는 가장 중요한 요소입니다.
난수 방식: 이진 수열 사용. 이진 수열이란 동전을 던져서 나오는 값처럼 [0, 1] 구간에서 임의로 선택된 수로 구성하는 수열을 뜻한다.
의사 난수 방식 Pseudo-Random Number: 함수를 이용하여 발생하는 난수. 진정한 난수는 아니며 실제는 아주 긴 주기를 가지는 수열이다.
스트림 암호는 기술적으로 다음과 같은 장단점을 가집니다.
| 장점 (Advantages) | 단점 (Disadvantages) |
|---|---|
| 고속 처리: 비트 단위의 단순한 XOR 연산으로, 하드웨어/소프트웨어 구현 시 처리 속도가 매우 빠릅니다. | 키스트림 재사용 금지: 키스트림()을 재사용하면 평문이 노출될 수 있어 키 관리에 엄격해야 합니다 (암호학적 안전성의 핵심). |
| 하드웨어 효율성: 단순한 구조 덕분에 작은 칩 면적과 적은 전력 소모로 구현 가능합니다 (IoT, RFID 환경 적합). | 오류 전파: 동기식 스트림 암호의 경우, 키스트림의 동기(Synchronization)가 어긋나면 이후 모든 복호화가 실패합니다. |
기술사 관점에서의 보안 고려사항: 스트림 암호는 키스트림의 높은 비선형성(Nonlinearity)과 긴 주기(Periodicity)를 확보하는 PRBG 설계가 핵심입니다. 취약한 PRBG는 선형 피드백 시프트 레지스터 (LFSR, Linear Feedback Shift Register) 기반의 분석이나 기타 수학적 공격에 노출될 수 있습니다.