# 동음 치환 암호 (Homophonic Substitution)

동음 치환 암호(homophonic substitution)는 하나의 평문 기호를 미리 정해 둔 여러 개의 서로 다른 암호문 기호, 즉 '동음 기호(homophone)' 중 하나로 바꾸는 치환 암호입니다. 'homophonic'은 그리스어로 '같은 소리'라는 뜻으로, 서로 다른 기호들이 모두 같은 평문 글자를 '소리 낸다'는 의미에서 붙은 이름이며, 영문으로는 homophonic cipher라고도 합니다. 자주 쓰이는 글자에 더 많은 동음 기호를 배정해, 암호문에서 모든 기호가 비슷한 빈도로 나타나게 만드는 것이 목적입니다. 단순 치환에서는 평문의 가장 흔한 글자가 언제나 암호문의 가장 흔한 기호가 된다는 약점을 막기 위한 방법입니다.

## 자세히 알아보기

예를 들어 영어에서 E는 약 12%로 가장 흔하므로 12개의 기호를, 빈도가 1% 정도인 글자에는 1개의 기호를 배정하면, 100개 기호가 모두 약 1%씩 나타나게 됩니다. 암호화할 때는 동음 기호 중 하나를 무작위로 고릅니다. 복호화는 어느 동음 기호든 원래 글자로 바꾸면 되므로 간단합니다. 즉 평문 글자 하나에 여러 기호가 대응하는 일대다 구조이지만, 기호 하나는 언제나 한 글자로만 되돌아가므로 모호함이 없습니다.

대가는 암호문 확장입니다. 기호 종류가 평문 알파벳보다 많아야 하므로 각 기호를 표현하는 데 더 많은 비트(또는 두 자리 숫자)가 필요합니다. 또 빈도는 감출 수 있어도 두 글자 조합과 문맥 정보까지 완전히 감추지는 못해, 충분한 암호문이 있으면 언덕 오르기(hill climbing) 같은 통계적 탐색과 컴퓨터 탐색으로 풀 수 있습니다. 2020년 12월에는 1969년부터 50여 년간 풀리지 않던 조디악 킬러의 340자 암호가 동음 치환에 전치를 결합한 방식이었음이 밝혀지며 해독되었습니다.

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

동음 치환 자체는 현대 암호에서 쓰이지 않지만, '같은 평문이 매번 다른 암호문이 되게 한다'는 핵심 아이디어는 현대 확률적 암호화로 이어졌습니다. 오늘날 안전한 암호화는 매번 새 난스나 IV를 써서, 같은 메시지를 두 번 암호화해도 다른 암호문이 나오도록 합니다(IND-CPA 안전성). 지갑 간 메시지 암호화에 쓰이는 ECIES, AES-GCM, ChaCha20-Poly1305가 모두 이 원칙을 따르며, 그 대가로 난스·태그만큼의 암호문 확장이 생긴다는 점도 동음 치환과 같습니다. 같은 맥락에서 이더리움 트랜잭션의 ECDSA 서명도 서명마다 고유한 난스를 쓰며, 이 난스는 무작위로 뽑거나 RFC 6979처럼 개인 키와 메시지에서 결정론적으로 유도합니다.

## 쉽게 말하면

'E'를 쓸 때마다 12개의 가짜 이름 중 하나를 골라 쓰는 방법입니다. 누가 가장 자주 등장하는지 세어 봐도 티가 나지 않습니다.

## 예시

E에 {17, 42, 63}, T에 {05, 88}을 배정하면 'TEE'는 '05 63 17'이나 '88 42 63' 등 여러 방식으로 암호화됩니다.

이렇게 하면 같은 글자가 반복되어도 암호문 기호가 반복되지 않게 할 수 있어, 단순 치환에서 쓰던 빈도 세기와 반복 패턴 찾기가 바로 통하지 않습니다.

---
출처: https://achivx.kr/glossary/homophonic-substitution-%EB%8F%99%EC%9D%8C%EC%9D%B4%EC%9D%98-%EC%B9%98%ED%99%98/ · ACHIVX 용어 사전 · 수정일 2026-10-20
