스트림 암호화(Stream Cipher)와 블록 암호화(Block Cipher)는 대칭키 암호 방식에서 데이터를 암호화하는 두 가지 주요 방법으로 둘 다 비밀키를 사용하지만 데이터 처리 방식과 특성에서 큰 차이가 있다.
| 구분 | 스트림 암호화 (Stream Cipher) | 블록 암호화 (Block Cipher) |
|---|---|---|
| 처리 단위 | 1비트 또는 1바이트씩 순차적으로 처리 | 고정된 크기(예: 64비트, 128비트) 블록 단위 처리 |
| 동작 방식 | 키스트림(Key Stream)을 생성하여 평문과 XOR 연산 | 블록 단위로 암호 알고리즘을 적용 |
| 대표 알고리즘 | RC4, A5/1, ChaCha20 | AES, DES, 3DES, Blowfish, SEED |
| 속도 | 실시간 처리에 빠름 | 블록 단위라 비교적 느릴 수 있음 |
| 에러 영향 | 특정 비트 손상 시 해당 부분만 영향 | 블록 하나 손상 시 전체 블록 복호화 불가 |
| 응용 분야 | 실시간 통신(VoIP, 스트리밍), 무선 통신 | 파일 암호화, 데이터베이스 암호화, VPN |
| 암호화 패턴 | 키스트림이 반복되면 취약 | 여러 모드(CBC, CTR 등)로 보완 가능 |
| 메모리 요구량 | 작음 | 큼 (블록 저장 필요) |
Plaintext: 10110010
Keystream: 01101001
Ciphertext: 11011011 (XOR 결과)
Plaintext Block1 -> Encrypt -> Cipher Block1
Plaintext Block2 -> Encrypt -> Cipher Block2
...
| 구분 | 장점 | 단점 |
|---|---|---|
| 스트림 암호화 | - 빠른 처리 속도 - 실시간 암호화 적합 - 작은 메모리 요구 | - 키스트림 재사용 시 치명적 취약점 - 무결성 보장 어려움 |
| 블록 암호화 | - 강력한 보안성 - 다양한 모드로 응용 가능 - 대용량 데이터 처리에 적합 | - 실시간 처리에는 비효율 - 블록 크기만큼 지연 발생 |