본문 바로가기
system_fundamentals/security_cryptography

스트림 암호 vs 블록 암호

by 죄니안죄니 2026. 5. 14.
반응형
스트림 암호 vs 블록 암호
 
 
 

스트림 암호와 블록 암호의 핵심 차이는:

데이터를 "조각 단위"로 암호화하느냐
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

댓글