단일 문자 치환 (Monoalphabetic Substitution)

중급암호학수정일

단일 문자 치환(monoalphabetic substitution, 단순 치환)은 메시지 전체에 하나의 고정된 치환 알파벳을 적용해, 각 평문 글자를 언제나 같은 암호문 글자로 바꾸는 고전 암호 방식입니다. 여러 치환 알파벳을 번갈아 쓰는 다중 문자 치환(polyalphabetic substitution, 예: 비즈네르 암호)과 대비됩니다.

자세히 알아보기

가장 단순한 예는 알파벳을 일정 칸만큼 미는 카이사르 암호입니다. 세 칸 밀면 HELLO는 KHOOR가 됩니다. 카이사르 암호의 키는 25가지뿐이어서 모두 시도해 보면 바로 풀립니다. 일반적인 단일 문자 치환은 알파벳 26자를 임의로 섞은 순열을 키로 쓰므로 키가 26! ≈ 4 × 1026(약 288)가지나 됩니다.

그런데도 이 암호는 매우 약합니다. 같은 평문 글자는 항상 같은 암호문 글자가 되므로 언어의 글자 빈도가 그대로 남기 때문입니다. 영어라면 가장 흔한 암호문 글자는 E일 가능성이 높고, 자주 나오는 두 글자 조합(TH, HE)과 단어 패턴을 맞춰 가면 수백 글자의 암호문으로 충분히 풀립니다. 이 빈도 분석은 9세기 아랍 학자 알킨디의 저작에 기록되어 있습니다. 동음 치환이나 다중 문자 치환은 바로 이 약점을 숨기려는 시도였습니다.

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

단일 문자 치환은 오늘날 어떤 블록체인이나 지갑에서도 암호로 쓰이지 않습니다. 하지만 이 암호가 남긴 교훈은 지금도 유효합니다. 첫째, 키 공간이 크다고 안전한 것은 아닙니다. 288가지 키를 가진 암호가 빈도 분석으로 손쉽게 깨지듯, 브레인 월렛처럼 겉보기에 경우의 수가 많아도 사람이 고른 패턴이 남아 있으면 공격자는 그 구조를 이용합니다. 둘째, 현대 블록 암호의 S-box도 본질적으로 '바이트 단위 치환표'이지만, 치환을 여러 라운드의 확산 층과 결합하고 키를 섞어 빈도 정보가 남지 않게 만듭니다. 같은 입력이 같은 출력이 되는 ECB 모드를 쓰지 말아야 하는 것도 같은 이유입니다.

쉽게 말하면

알파벳마다 정해진 대체 글자 한 벌을 계속 쓰는 암호입니다. 글자 습관이 그대로 비쳐 보여 쉽게 들킵니다.

예시

키가 '세 칸 밀기'라면 ATTACK → DWWDFN. 암호문에서 W가 두 번 연속 나온다는 패턴만으로도 평문에 같은 글자가 겹친다는 사실이 드러납니다.

키 공간 26!을 하나씩 모두 시도하는 것은 지금의 컴퓨터로도 오래 걸리지만, 빈도 분석과 사전 기반 탐색을 결합하면 일반 PC로도 대개 짧은 시간 안에 풀립니다.

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