혼돈 수열 (Confusion Sequence)

고급암호학수정일

혼돈 수열(confusion sequence)은 스트림 암호에서 평문과 결합되는 의사난수 수열로, 흔히 키스트림(keystream) 또는 러닝 키(running key)라고 부릅니다. 암호학에서 confusion은 '혼란'이 아니라 섀넌이 말한 '혼돈' 원리를 가리키며, 이 수열이 평문을 무작위처럼 보이게 만드는 역할을 합니다.

자세히 알아보기

전형적인 스트림 암호는 비밀 키(와 논스)로 의사난수 생성기를 초기화해 긴 혼돈 수열을 만들고, 이를 평문과 비트 단위 XOR로 결합해 암호문을 만듭니다. 복호화는 같은 키로 같은 수열을 다시 만들어 암호문에 XOR하면 됩니다.

안전성은 전적으로 수열의 질에 달려 있습니다. 공격자가 수열의 일부를 알아도 나머지를 예측할 수 없어야 하므로, 일반 난수 생성기가 아니라 암호학적으로 안전한 생성기(CSPRNG)를 써야 합니다. 선형 피드백 시프트 레지스터(LFSR)만으로 만든 수열은 짧은 출력만으로 복원될 수 있어 단독으로는 안전하지 않습니다.

가장 중요한 규칙은 같은 수열을 두 번 쓰지 않는 것입니다. 같은 키스트림으로 두 메시지를 암호화하면 두 암호문을 XOR하는 것만으로 키스트림이 상쇄되어 평문끼리의 XOR이 드러납니다. 그래서 같은 키를 쓸 때는 매번 다른 논스를 사용합니다. 또 혼돈 수열 결합만으로는 변조를 탐지할 수 없으므로, 현대 시스템은 ChaCha20-Poly1305나 AES-GCM처럼 인증 기능이 결합된 AEAD 방식을 씁니다.

역사적으로 가장 단순한 혼돈 수열은 일회용 패드의 진짜 난수열입니다. 메시지 길이만큼의 진짜 난수를 한 번만 쓰면 정보이론적으로 완벽한 비밀성이 보장되지만, 키를 안전하게 배송·관리하기 어렵다는 현실적 한계가 있습니다. 실용적인 스트림 암호는 짧은 키로 긴 의사난수 수열을 만들어 이 문제를 해결합니다.

리터의 용어집에서 '혼돈 수열'은 데이터와 결합되는 쪽의 수열을 가리키는 일반 용어로 쓰이며, 이를 만드는 장치를 '혼돈 생성기'라고 부릅니다.

블록체인·암호화폐에서는

TLS 1.3 연결, 지갑 앱의 암호화 저장, 노드 간 암호화 통신(예: 비트코인의 BIP-324 v2 전송 프로토콜은 ChaCha20 기반)에서 키스트림 방식이 쓰입니다. 블록체인 데이터 자체는 공개되므로, 혼돈 수열은 주로 통신 구간과 키 저장 보호에 쓰입니다.

쉽게 말하면

비밀 키로만 똑같이 다시 만들 수 있는 '무작위 잡음 테이프'를 메시지 위에 덧씌우는 것입니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.