반응형

스트림 암호와 블록 암호의 핵심 차이는:
데이터를 "조각 단위"로 암호화하느냐
vs
"흐름처럼" 암호화하느냐
다.
한 줄로 먼저 정리
종류방식
| 블록 암호 | 데이터를 일정 크기로 잘라 암호화 |
| 스트림 암호 | 데이터를 한 비트/바이트씩 흐르듯 암호화 |
1. 블록 암호(Block Cipher)
대표적으로:
- Advanced Encryption Standard
- DES
같은 것들이다.
동작 방식
AES는 예를 들어:
128bit(16byte)
씩 끊어서 처리한다.
즉:
[16byte]
[16byte]
[16byte]
단위로 암호화한다.
이미지로 보면
HELLO WORLD!!!!
를:
[HELLO WO]
[RLD!!!! ]
처럼 블록으로 나눈다.
그리고 각 블록을 암호화한다.
블록 암호 특징
장점
- 구조 안정적
- 분석 오래됨
- 보안 강함
- 다양한 모드(CBC/GCM/CTR) 지원
단점
블록 크기 맞춰야 한다.
예:
13byte 데이터
면 AES 16byte 맞추려고:
padding 추가
해야 할 수 있다.
2. 스트림 암호(Stream Cipher)
대표적으로:
- ChaCha20
- RC4(구식)
- Salsa20
등이 있다.
동작 방식
스트림 암호는:
키 스트림 생성
후 평문과 XOR 한다.
즉:
Ci=Pi⊕KiC_i = P_i \oplus K_i
느낌으로 보면
평문:
HELLO
키스트림:
QWERT
XOR
해서 암호문 생성한다.
즉 데이터 흐름을 따라가며 계속 암호화한다.
스트림 암호 특징
장점
- 매우 빠름
- 실시간 통신 강함
- padding 불필요
- 메모리 사용 적음
단점
동일 키스트림 재사용하면 매우 위험.
즉:
같은 키 + 같은 nonce
재사용이 치명적이다.
왜 스트림 암호가 빠를까?
블록 암호처럼:
- 복잡한 라운드
- 행렬 변환
- 블록 체인
이 없다.
그냥:
키스트림 생성
+
XOR
중심이다.
그래서 모바일/실시간에서 강하다.
그런데 현대 AES도 엄청 빠름
재밌는 점은:
AES-CTR/GCM
은 사실상 스트림처럼 동작한다.
예:
- AES 자체는 블록 암호
- CTR 모드 사용 시 스트림 암호처럼 사용
한다.
CTR 모드란?
Ci=Pi⊕EK(Nonce∣∣Counteri)C_i = P_i \oplus E_K(Nonce || Counter_i)
AES로:
nonce + counter
를 계속 암호화해서 키스트림 생성한다.
즉:
블록 암호를 스트림 암호처럼 사용
하는 방식이다.
그래서 현대 암호는 경계가 흐려짐
요즘은:
실제 알고리즘내부 분류사용 느낌
| AES-GCM | 블록 암호 | 스트림처럼 |
| ChaCha20 | 스트림 암호 | 진짜 스트림 |
이런 느낌이다.
실무에서 어디 쓰나?
블록 암호(AES)
엄청 많다:
- HTTPS
- VPN
- DB 암호화
- 파일 암호화
- 디스크 암호화
스트림 암호(ChaCha20)
특히:
- 모바일
- 저전력 장치
- CPU AES 가속 없는 환경
에서 강하다.
예:
- Google 의 Android TLS
- WireGuard
- 모바일 HTTPS
왜 ChaCha20이 인기 많아졌나?
AES는 AES-NI 없는 CPU에서는 느려질 수 있다.
반면 ChaCha20은:
일반 CPU에서도 매우 빠름
이다.
특히 ARM/mobile에서 강하다.
중요한 차이 — 오류 전파
블록 암호(CBC 등)
중간 일부 깨지면:
여러 블록 영향
가능.
스트림 암호
1byte 깨지면:
그 부분만 깨짐
인 경우가 많다.
실시간 음성/영상에 유리하다.
핵심 비교표
항목블록 암호스트림 암호
| 처리 단위 | 블록 | 비트/바이트 흐름 |
| 대표 | AES | ChaCha20 |
| 속도 | 빠름 | 매우 빠름 |
| Padding | 필요 가능 | 불필요 |
| 병렬 처리 | 모드 따라 다름 | 쉬움 |
| 실시간 통신 | 보통 | 매우 강함 |
| nonce 재사용 | 위험 | 매우 위험 |
핵심 한 줄
블록 암호는:
데이터를 일정 크기로 잘라 암호화
하고,
스트림 암호는:
데이터 흐름을 따라 실시간으로 XOR 암호화
한다고 보면 된다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| 용어정리 (0) | 2026.05.14 |
|---|---|
| 파일 암호화 구조 (0) | 2026.05.14 |
| IV는 왜 필요한가 (0) | 2026.05.14 |
| CBC/GCM 차이 (1) | 2026.05.14 |
| AES는 왜 빠른가 (0) | 2026.05.14 |
댓글