동적 치환 결합기 (Dynamic Substitution Combiner)

고급암호학수정일

동적 치환 결합기(dynamic substitution combiner)는 테리 리터(Terry Ritter)가 고안해 미국 특허(US 4,979,832)로 공개한 스트림 암호용 결합 장치입니다. 평문과 키스트림을 XOR로 합치는 대신 치환표를 통과시키고, 사용할 때마다 표 안의 항목 배열을 바꿉니다. 목적은 알려진 평문 공격 상황에서도 키스트림(혼돈 수열)이 그대로 드러나지 않게 하는 것입니다.

자세히 알아보기

보통의 스트림 암호는 C = P ⊕ K처럼 덧셈(XOR) 결합기를 씁니다. 이 경우 공격자가 평문 P와 암호문 C를 알면 K = P ⊕ C로 키스트림이 즉시, 완전히 드러나고, 이를 단서로 내부 난수 생성기를 공격할 수 있습니다. 리터는 XOR 결합기 자체에는 '강도가 없다'고 보고 이를 대체하려 했습니다.

동적 치환에서는 먼저 키로 섞은 가역 치환표를 준비합니다. 평문 값으로 표의 항목을 골라 출력으로 내보낸 뒤, 키스트림 값으로 고른 다른 항목과 방금 쓴 항목을 맞바꿉니다. 그래서 어떤 평문 매핑이 한 번 쓰이면 곧바로 다른 상태로 바뀌고, 자주 나오는 평문 값일수록 그 매핑이 더 자주 바뀝니다. 수신자는 같은 키스트림으로 같은 교환을 반복하며 역표를 유지해 복호화합니다. 알려진 평문이 있어도 공격자가 관찰하는 것은 계속 변하는 표의 일부일 뿐이어서 키스트림을 직접 얻기 어렵습니다.

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

동적 치환 결합기는 표준화되지 않은 학술·역사적 설계이며, 블록체인이나 지갑에서 쓰이지 않습니다. 현대의 접근은 반대 방향입니다. ChaCha20이나 AES-CTR처럼 키스트림 생성기 자체를 암호학적으로 안전하게 만들어, 키스트림 일부가 드러나도 키나 다른 부분을 알아낼 수 없게 하고, 결합은 단순한 XOR로 둡니다. 그리고 결합기의 '변조 가능성' 문제는 Poly1305나 GCM 같은 인증 태그를 붙인 AEAD로 해결합니다. 또 데이터 의존적인 표 조회와 교환은 캐시 타이밍 공격에 노출되기 쉬워, 상수 시간 구현을 중시하는 지갑·HSM 환경에는 맞지 않습니다.

쉽게 말하면

암호표를 한 번 쓸 때마다 표의 칸 두 개를 몰래 바꿔 두는 방식입니다. 같은 글자도 다음에는 다른 글자로 바뀝니다.

예시

표 [3, 1, 0, 2]에서 평문 0은 3으로 암호화되고, 키스트림이 2를 가리키면 0번과 2번 항목을 바꿔 표가 [0, 1, 3, 2]가 됩니다. 다음에 평문 0이 오면 이번에는 0으로 암호화됩니다.

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