스트림 암호 (Stream Cipher)
- 암호화: 평문 비트열과 키 스트림 XOR 연산
- 복호화: 암호문 비트열과 키 스트림 XOR 연산
- 키 스트림: 키 비트(바이트)열
- 암호화 및 복호화가 매우 빠르고 하드웨어 구현에 적합함
→ 제한된 리소스를 가지는 기기에서 주로 사용됨
- 블록 암호에 비해 약한 안정성을 가짐
→ 스트림 암호가 필요한 경우 블록 암호 모드 중 스트림 암호 형태를 지원하는 방식을 쓰는 것을 추천
- 동기식 & 자기 동기식으로 구분
- 스트림 암호의 예시로 일회용 패드를 들 수 있음
동기식 스트림 암호 (Synchronous stream cipher)
- 키 스트림이 평문과 암호문에 독립적으로 생성됨
- 이전 내부 상태로부터 현재 내부 상태를 업데이트함
- 내부 상태를 입력으로 키 스트림 생성 알고리즘으로부터 키 스트림 생성
- Sender와 Receiver가 동기화된 내부 state 유지가 필요함
동기식 스트림 암호 오류 전파
1) 암호문을 전송할 때 네트워크 오류로 비트가 사라지거나 추가된 경우 (ex. 비트 유실, 비트 추가)
→ 오류가 발생한 지점부터 끝까지 복호화에 실패하게 됨
- 비트 유실: 암호문에서 유실된 비트의 평문부터 끝까지 복호화에 오류가 생김
- 비트 추가: 기존의 암호문에 있지 않은 새로운 비트가 추가될 경우 비트가 추가된 지점부터 끝까지 복호화에 오류가 생김
2) 암호문을 전송할 때 네트워크 오류로 암호문 중간에 1비트가 오류가 발생한 경우 (비트 유실, 추가 X)
→ 해당 위치의 비트에만 오류가 발생
Linear-Feedback Shift Register (LFSR)
- 의사난수 생성기 (Pseudorandom-number generator)
- 빠르게 의사난수를 생성함
- 선형적임
동기식 스트림 암호 예시
1) A5/1
- LFSR 기반 스트림 암호
- GSM 방식의 휴대폰 통신 암호화에 사용
- 기지평문공격에 취약함
2) RC4
- 1987년, Rivest가 디자인함
- LFSR 기반 아님
- ChaCha 이전에 가장 널리 쓰이던 s/w용 스트림 암호
- SSL, WEP에 쓰임
3) 일회용 패드
4) 블록암호 기반의 OFB, CRT 모드
자기 동기식 스트림 암호 (Self-synchronous stream cipher)
- 키 스트림을 생성할 때 키와 함께 암호문 또는 평문 일부를 사용
→ 내부 상태가 이전 내부 상태에 의존하지 않음
→ 암호문의 일부를 키 스트림 생성에 활용함
- CFB 모드: 블록암호 기반 자기 동기식 스트림 암호
자기 동기식 스트림 암호 오류 전파
- 암호문을 전송할 때 네트워크 오류로 블록이 사라지거나 추가된 경우에도 일부 부분에 대해서만 복호화 실패 발생
'Incognito' 카테고리의 다른 글
기초대수학 문제 풀이 (1) | 2022.11.20 |
---|---|
블록 암호 모드 (0) | 2022.11.12 |
AES 암호 알고리즘 (0) | 2022.10.22 |
Feistel Network (0) | 2022.10.22 |
일회용 패드 & 블록 암호 (0) | 2022.10.22 |