# 비동기 스트림 암호 (Asynchronous Stream Cipher)

비동기 스트림 암호(Asynchronous Stream Cipher)는 암호문 스트림에 위치 오류(비트 누락·삽입)나 값 오류(비트 반전)가 생겨도 일정한 길이가 지나면 자동으로 재동기화되는 스트림 암호입니다. 자기 동기 스트림 암호(self-synchronizing stream cipher)라고도 하며, 동기 스트림 암호와 대비됩니다.

## 왜 스스로 동기화되는가

비동기 스트림 암호에서는 키 스트림의 각 비트가 키와 **직전 N개의 암호문 비트**로만 결정됩니다. 즉 zi = f(K, ci−1, …, ci−N)이고, 암호문은 ci = pi ⊕ zi입니다. 수신 측도 받은 암호문으로 같은 계산을 하므로, 오류가 섞인 암호문이 N비트 창에서 빠져나가는 순간 송신 측과 같은 키 스트림을 다시 만들게 됩니다.

## 동기 스트림 암호와의 차이

- **동기 스트림 암호:** 키 스트림이 평문·암호문과 독립적으로 생성됩니다. 비트 하나가 뒤집히면 그 비트만 틀리지만, 비트가 하나라도 사라지거나 끼어들면 이후 복호화가 모두 어긋나 별도의 재동기화가 필요합니다.
- **비동기 스트림 암호:** 비트 반전이든 누락·삽입이든, 오류 뒤 N비트가 지나면 복호화가 저절로 정상으로 돌아옵니다.

## 대표적인 예

- **CFB 모드:** 블록 암호의 암호 피드백(Cipher Feedback) 모드는 직전 암호문을 블록 암호에 넣어 키 스트림을 만듭니다. 1비트 또는 8비트 CFB는 비트·바이트 단위로 동기를 회복하는 비동기 스트림 암호로 동작합니다.
- **암호문 자동 키(ciphertext autokey, CTAK):** 암호문을 다시 키 생성에 넣는 고전적인 방식으로, 같은 원리를 따릅니다.

## 오류 전파와 한계

- **오류 전파:** 암호문 비트 하나가 틀리면 그 비트와 이후 N비트의 복호화가 함께 틀립니다. 오류가 N배 가까이 번지는 셈입니다.
- **능동 공격에 대한 취약성:** 공격자가 암호문을 바꾸면 그 값이 곧바로 키 스트림 생성기의 입력이 되므로, 선택 암호문 공격과 재전송 공격에 대한 설계가 까다롭습니다. 무결성은 별도의 메시지 인증 코드(MAC)로 보장해야 합니다.
- **전용 설계의 부족:** 전용 자기 동기 스트림 암호 설계는 드물고, 제안된 설계 가운데 상당수가 분석으로 약점이 드러났습니다. 실무에서는 주로 블록 암호의 CFB 모드로 이 성질을 얻습니다.

정리하면 비동기 스트림 암호는 오류 뒤에 스스로 동기를 회복하는 대신, 오류가 일정 길이만큼 번지고 능동 공격에 더 민감하다는 대가를 치릅니다.

## 쓰임

비트 누락이나 잡음이 생길 수 있는 직렬 통신·무선 링크처럼, 재전송 없이도 오류 뒤에 복호화를 이어 가야 하는 환경에서 쓰입니다. 오류가 잦은 군사·위성 통신 장비의 링크 암호화가 전통적인 예입니다.

---
출처: https://achivx.kr/glossary/asynchronous-stream-cipher-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC-%EC%95%94%ED%98%B8/ · ACHIVX 용어 사전 · 수정일 2026-10-20
