가산 결합기 (Additive Combiner)
가산 결합기는 두 값, 보통 평문과 키스트림을 모듈러 덧셈으로 결합하는 암호 결합기입니다. 비트 단위에서는 2를 법으로 하는 덧셈, 곧 XOR이고, 바이트나 워드 단위에서는 28이나 232를 법으로 하는 덧셈이며, 알파벳 암호에서는 26을 법으로 하는 덧셈입니다. 전통적인 스트림 암호의 기본 결합 방식이며, 라틴 방진 결합기나 동적 치환 결합기 같은 비선형 결합기와 달리 선형입니다.
암호화와 복호화
법을 n이라 하면 암호화는 C = (P + K) mod n이고, 복호화는 같은 키 값을 빼는 (C − K) mod n = P입니다. 덧셈의 역연산인 뺄셈이 존재하기 때문에 키를 아는 사람은 언제나 원래 값을 되찾을 수 있습니다. XOR의 경우 덧셈과 뺄셈이 같은 연산이므로 암호화와 복호화가 완전히 같습니다.
- 비트(n = 2): 평문 1011과 키 0110을 XOR하면 1101, 다시 0110을 XOR하면 1011입니다.
- 문자(n = 26): A = 0, …, Z = 25로 놓으면 평문 H(7)와 키 D(3)의 합은 K(10)이고, 키가 X(23)이면 (7 + 23) mod 26 = 4로 E가 됩니다. 법을 쓰기 때문에 결과가 항상 같은 범위 안에 머뭅니다.
다른 암호와의 관계
버넘 암호와 일회용 패드는 가산 결합기(XOR)에 각각 키 테이프와 진정한 무작위 일회용 키를 결합한 것입니다. 카이사르 암호와 비즈네르 암호도 26을 법으로 하는 가산 결합기에 각각 고정 키와 반복 키를 쓴 형태로 볼 수 있습니다. 현대 스트림 암호와 블록 암호의 CTR·OFB 모드는 의사난수 키스트림을 만든 뒤 XOR 가산 결합기로 평문과 합칩니다.
선형성의 약점
- 알려진 평문 공격: 평문과 암호문 한 쌍을 알면 K = C − P mod n으로 그 위치의 키스트림이 그대로 드러납니다. 따라서 보안은 전적으로 키스트림의 예측 불가능성에 달려 있습니다.
- 키스트림 재사용: 같은 키스트림으로 두 메시지를 결합하면, 두 암호문의 차이(XOR의 경우 두 암호문의 XOR)가 두 평문의 차이와 같아져 키 없이도 평문 정보가 드러납니다.
- 변조 가능성: 암호문의 특정 비트를 뒤집으면 복호된 평문의 같은 비트가 뒤집히므로, 무결성은 별도 인증으로 지켜야 합니다.
비선형 결합기는 결합 연산 자체를 키나 상태에 따라 바꾸어 이런 약점을 줄이려는 시도이지만, 속도와 구현 복잡도에서 대가가 따릅니다. 실무에서는 가산 결합기를 그대로 쓰고 강한 키스트림 생성기와 메시지 인증을 함께 쓰는 방식이 표준입니다.
왜 ‘결합기’라고 부르는가
스트림 암호는 보통 두 부분으로 나누어 설명합니다. 하나는 키로부터 예측하기 어려운 키스트림을 만드는 생성기이고, 다른 하나는 그 키스트림을 평문과 섞는 결합기입니다. 가산 결합기는 결합 단계를 가장 단순한 가역 연산으로 맡기고 보안의 무게를 전부 생성기에 두는 설계입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.