대칭 키 암호방식 - Stream Cipher, Block Cipher

Hyunjun Kim·2025년 8월 10일

algorithm

목록 보기
8/8

스트림 암호화(Stream Cipher)와 블록 암호화(Block Cipher)는 대칭키 암호 방식에서 데이터를 암호화하는 두 가지 주요 방법으로 둘 다 비밀키를 사용하지만 데이터 처리 방식과 특성에서 큰 차이가 있다.

1. 개념 비교

구분스트림 암호화 (Stream Cipher)블록 암호화 (Block Cipher)
처리 단위1비트 또는 1바이트씩 순차적으로 처리고정된 크기(예: 64비트, 128비트) 블록 단위 처리
동작 방식키스트림(Key Stream)을 생성하여 평문과 XOR 연산블록 단위로 암호 알고리즘을 적용
대표 알고리즘RC4, A5/1, ChaCha20AES, DES, 3DES, Blowfish, SEED
속도실시간 처리에 빠름블록 단위라 비교적 느릴 수 있음
에러 영향특정 비트 손상 시 해당 부분만 영향블록 하나 손상 시 전체 블록 복호화 불가
응용 분야실시간 통신(VoIP, 스트리밍), 무선 통신파일 암호화, 데이터베이스 암호화, VPN
암호화 패턴키스트림이 반복되면 취약여러 모드(CBC, CTR 등)로 보완 가능
메모리 요구량작음큼 (블록 저장 필요)


2. 동작 흐름 차이

스트림 암호화

  1. 비밀키와 초기화 벡터(IV)로 키스트림 생성기 초기화
  2. 평문 비트/바이트와 키스트림 비트/바이트를 XOR
  3. 결과는 암호문, 복호화는 동일하게 XOR 수행
Plaintext:  10110010
Keystream:  01101001
Ciphertext: 11011011  (XOR 결과)

블록 암호화

  1. 평문을 블록 단위(예: 128비트)로 나눔
  2. 각 블록을 동일한 암호 알고리즘과 키로 암호화
  3. 모드(CBC, CTR, ECB 등)에 따라 블록 간 연계 처리 여부 결정
Plaintext Block1 -> Encrypt -> Cipher Block1
Plaintext Block2 -> Encrypt -> Cipher Block2
...


3. 장단점 비교

구분장점단점
스트림 암호화- 빠른 처리 속도
- 실시간 암호화 적합
- 작은 메모리 요구
- 키스트림 재사용 시 치명적 취약점
- 무결성 보장 어려움
블록 암호화- 강력한 보안성
- 다양한 모드로 응용 가능
- 대용량 데이터 처리에 적합
- 실시간 처리에는 비효율
- 블록 크기만큼 지연 발생


4. 정리

  • 스트림 암호화 → 데이터가 끊임없이 들어오는 환경(네트워크 스트리밍, 무선 통신)에 적합
  • 블록 암호화 → 정적인 데이터(파일, 디스크, DB)에 적합
  • 현대 암호 시스템에서는 블록 암호 + 스트림 모드(CTR, OFB) 조합도 자주 사용
profile
Data Analytics Engineer 가 되

0개의 댓글