1. 스트림 암호화
ㅇ 연속적인 비트/바이트/단어들을 순차적으로 암호화하는 방식
- 이전 암호화 결과에 따라 다음 암호화가 결정됨
ㅇ 대칭키 암호화 방식의 일종
- 암호화
. 평문이 키 스트림(Key Stream)이라는 의사난수열과 병합(주로,비트 단위 XOR)되어,
. 암호문이 생성됨
- 역암호화
. 수신된 암호문에 동일한 의사난수열을 XOR 시킴
2. 스트림 암호화의 특징
ㅇ 연속성
- 연속적인 비트/바이트/단어(1,8,32,... 비트)들을 순차적으로 암호화
- 비트나 바이트 처럼 데이터의 작은 단위들 마다 입력 처리됨
- 통상, 한 번에 한 바이트씩 계속 반복하며 암호화 수행
ㅇ 기억성
- 현재의 입력에 대한 출력은 과거의 입력에 대해 영향을 받음
ㅇ 순차성
- 데이터가 정해진 단위별로 순차적 암호화되므로,
- 현재의 내부 상태를 유지할 필요 있음
ㅇ 연산 : XOR
ㅇ 적용 : 통신 채널, 전송계층 보안(SSL/TLS 웹 보안) 등
ㅇ 키 자체의 생성은 공유비밀키(대칭키)에 의함
- 키 스트림(Keystream)의 생성은, 공유 비밀키(Shared Secret Key)로부터 생성됨
3. 스트림 암호화의 구분
ㅇ 동기성 여부
- 동기식 암호화
- 비동기식 암호화
ㅇ 처리 단위
- 비트 암호화
- 바이트 암호화
4. 스트림 암호 방식의 例
ㅇ RC4 (Rivest Cipher 4)
- 설계자/년도 : Ronald Rivest에 의해 설계됨, 1987년
- 특징
. 바이트 단위의 스트림 암호화 방식
.. 평문 1 바이트와 암호키 1 바이트가, XOR 처리되어, 암호문 1 바이트를 생성
. 상태 바이트 종류 (상태 배열 : S[0],S[1],...,S[255]) : (키 스케줄링 및 난수 생성)
.. 원소 인덱스 번호 : 0 ~ 255 사이의 정수
.. 원소 내용 : 1 ~ 256 바이트 중 어떤 값이라도 됨
. 키 바이트 종류 (키 배열 : K[0],K[1],...,K[255])
.. 원소 인덱스 번호 : 0 ~ 255 사이의 정수
- 응용 : WEP, WPA(초기 버전), SSL/TLS (초기 버전 등)
ㅇ A5/1 등
- 설계자/년도 : GSM 협회, 1980년대 후반
- 특징
. GSM 통신에서 사용되는 비트 기반 스트림 암호
. 3개의 선형 피드백 시프트 레지스터(LFSR) 사용
. 초기화 시 64비트 키 및 프레임 번호 사용
- 응용 : 2G GSM 이동통신 시스템
ㅇ A5/2
- 특징
. A5/1보다 보안 수준이 낮은 변형
. 개발도상국 수출용으로 개발되었으나 매우 쉽게 깨짐
- 응용 : 일부 GSM 시스템에서 사용되었으나 현재는 폐기됨
ㅇ eSTREAM 프로젝트 암호들
* (ECRYPT 프로젝트에서 유럽연합 지원 하에 개발된 스트림 암호 후보들)
- Salsa20 / ChaCha20
. 설계자: Daniel J. Bernstein
. 특징
.. 블록 기반 설계이지만 키스트림 생성 방식이 스트림 암호와 유사
.. 고속, 높은 보안성
. 응용: Google TLS, WireGuard VPN 등에서 ChaCha20 사용
- Grain v1
. 특징
.. LFSR + NFSR 기반 설계
.. 경량 스트림 암호
. 응용 : IoT 환경, 제한된 연산 자원에서의 사용 고려
- Trivium
. 특징
.. 288 비트 내부 상태
.. 단순한 구조로 하드웨어 구현에 적합
. 응용 : 경량 스트림 암호 분야에서의 연구용
ㅇ MICKEY (Mutual Irregular Clocking KEYstream generator)
- 특징
. eSTREAM 경량 부문 최종 선정 암호 중 하나
. LFSR과 NFSR 결합 방식 사용
- 응용 : 하드웨어 제한 환경에서의 스트림 암호 구현