스트림 암호
IT위키
더 많은 작업
(스트림암호에서 넘어옴)
- Stream Cipher
- 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘
- 평문과 키 스트림을 XOR 연산하여 생성한다. 이론적으로 완벽하게 안전한 One Time Pad를 현실적으로 구현한 것이다.
- 블록 암호보다 빠르지만 암호화 강도는 약하다. 주로 실시간성이 요구되는 음성, 영상 등에 이용된다.
키(와 초기값 IV)를 의사난수 생성기에 넣어 평문과 같은 길이의 키 스트림을 만들고, 평문과 비트 단위로 XOR 해 암호문을 만든다. 복호화도 같은 키 스트림을 다시 XOR 한다.
- 낮은 지연 - 블록이 찰 때까지 기다리지 않고 비트·바이트가 들어오는 대로 처리하므로 버퍼가 작거나 한 글자씩 처리해야 하는 통신에 알맞다[1]
- 오류 전파가 없다 - 동기식 스트림 암호에서 전송 중 암호문 한 비트가 바뀌면 복호화된 평문도 같은 위치의 한 비트만 틀리고 다른 비트에는 영향이 없다. 그래서 전송 오류가 잦은 환경에 유리하다[1] 블록 암호의 OFB·CTR 모드도 같은 성질을 가지는 반면 CBC 는 오류가 블록 전체와 다음 블록에 번진다[2]
- 자기 동기식 스트림 암호는 앞선 암호문 몇 비트로 키 스트림을 만들므로 오류가 그 몇 비트 범위 안에서만 번지고 그 뒤에는 저절로 회복된다
- 키 스트림 재사용 금지 - 같은 키와 IV 로 만든 키 스트림을 두 메시지에 쓰면 두 암호문을 XOR 했을 때 키 스트림이 지워져 평문끼리의 XOR 이 드러난다. 그래서 메시지마다 IV(논스)를 바꾼다
- 비트를 뒤집으면 평문의 같은 비트가 뒤집히므로 무결성을 주지 못한다. MAC 이나 인증 암호와 함께 쓴다
| 구분 | 스트림 암호 | 블록 암호 |
|---|---|---|
| 처리 단위 | 비트·바이트 | 고정 길이 블록(64·128비트) |
| 지연 | 낮다 | 블록을 채워야 한다(패딩 필요) |
| 암호문 1비트 오류 | 같은 위치 1비트만 | 모드에 따라 블록 전체·다음 블록까지(CBC) |
| 주의점 | 키 스트림(키+IV) 재사용 금지 | 모드 선택, IV 관리 |
- RC4
- ChaCha20, LFSR 기반 A5/1·E0
- ↑ 1.0 1.1 Alfred Menezes, Paul van Oorschot, Scott Vanstone, 「Handbook of Applied Cryptography」 6장 Stream Ciphers, CRC Press, https://cacr.uwaterloo.ca/hac/about/chap6.pdf, 확인일: 2026-11-04.
- ↑ 「Recommendation for Block Cipher Modes of Operation」(NIST SP 800-38A) 부록 D Error Properties, NIST, https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf, 확인일: 2026-11-04.