Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

블록 암호와 스트림 암호의 차이점 완벽 비교


블록 암호(Block Cipher)와 스트림 암호(Stream Cipher)는 모두 평문(Plain Text)을 암호문(Cipher Text)으로 변환하는 데 사용되는 대표적인 암호화 기법으로, 둘 다 대칭키 암호(Symmetric Key Cipher) 계열에 속합니다.

두 암호 방식은 데이터를 처리하는 단위와 내부 동작 원리에서 큰 차이를 보이며, 각각의 특성에 따라 서로 다른 용도로 활용됩니다. 아래에서 블록 암호와 스트림 암호의 주요 차이점을 표와 함께 자세히 살펴보겠습니다.

블록 암호 vs 스트림 암호 주요 차이점 비교표

번호구분블록 암호스트림 암호
1정의평문을 일정 크기의 블록 단위로 나누어 한 번에 변환하는 암호화 방식입니다.평문을 1바이트씩 순차적으로 변환하는 암호화 방식입니다.
2비트 변환한 번에 여러 비트를 처리하므로 64비트 이상의 데이터가 동시에 변환될 수 있습니다.한 번에 최대 8비트까지만 변환이 가능합니다.
3암호화 원리혼돈(Confusion)과 확산(Diffusion) 원리를 모두 사용하여 암호화를 수행합니다.혼돈(Confusion) 원리만을 사용하여 변환을 수행합니다.
4알고리즘ECB(Electronic Code Book), CBC(Cipher Block Chaining) 알고리즘을 사용합니다.CFB(Cipher Feedback), OFB(Output Feedback) 알고리즘을 사용합니다.
5복호화여러 비트가 결합되어 암호화되기 때문에 복호화 과정이 상대적으로 복잡합니다.XOR 연산을 사용하므로 평문으로 쉽게 되돌릴 수 있습니다.
6구현Feistel 암호가 대표적인 구현 사례입니다.Vernam 암호가 대표적인 구현 사례입니다.

1. 정의 및 처리 단위의 차이

블록 암호는 이름 그대로 평문을 고정된 크기의 블록(일반적으로 64비트 또는 128비트)으로 나누어 각 블록을 한 번에 암호화합니다. 반면 스트림 암호는 평문을 바이트 또는 비트 단위로 하나씩 순차적으로 처리하며, 마치 흐르는 물줄기처럼 연속적인 데이터 스트림을 암호화합니다.

2. 암호화 원리의 차이

블록 암호는 혼돈(Confusion)과 확산(Diffusion)이라는 두 가지 원리를 모두 적용합니다. 혼돈은 키와 암호문 사이의 관계를 복잡하게 만들고, 확산은 평문의 통계적 특성을 암호문 전체에 분산시켜 보안성을 높입니다. 반면 스트림 암호는 혼돈 원리만을 사용하며, 주로 생성된 키 스트림과 평문을 XOR 연산하여 암호문을 만듭니다.

3. 복호화 과정의 차이

블록 암호는 여러 비트가 결합된 상태로 암호화되기 때문에 복호화 과정이 상대적으로 복잡하고 많은 연산 자원을 요구합니다. 반면 스트림 암호는 XOR 연산의 특성상 동일한 키 스트림으로 다시 XOR 연산을 수행하기만 하면 원래의 평문을 손쉽게 얻을 수 있습니다.

4. 대표적인 구현 방식

블록 암호의 대표적인 구현은 Feistel 암호 구조이며, 잘 알려진 DES(Data Encryption Standard)가 바로 이 구조를 기반으로 설계되었습니다. 스트림 암호의 대표적인 구현은 Vernam 암호(일회용 패드, One-Time Pad)이며, RC4와 같은 알고리즘도 실제 환경에서 널리 사용되었습니다.

정리

블록 암호는 대용량 데이터를 안전하게 처리하는 데 적합하고 파일 암호화, 데이터베이스 암호화 등에 널리 쓰이는 반면, 스트림 암호는 실시간 통신이나 음성·영상 데이터처럼 빠른 처리 속도가 필요한 환경에 유리합니다. 따라서 시스템의 요구 사항과 데이터의 성격에 맞춰 적절한 암호화 방식을 선택하는 것이 중요합니다.