비동기 스트림 암호 (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 모드로 이 성질을 얻습니다.
정리하면 비동기 스트림 암호는 오류 뒤에 스스로 동기를 회복하는 대신, 오류가 일정 길이만큼 번지고 능동 공격에 더 민감하다는 대가를 치릅니다.
쓰임
비트 누락이나 잡음이 생길 수 있는 직렬 통신·무선 링크처럼, 재전송 없이도 오류 뒤에 복호화를 이어 가야 하는 환경에서 쓰입니다. 오류가 잦은 군사·위성 통신 장비의 링크 암호화가 전통적인 예입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.