열 전치 암호
키워드와 메시지를 입력하면 도구는 메시지를 키 아래 행에 쓰고, 열에 키 글자의 알파벳 순서대로 번호를 매긴 뒤 그 번호 순서대로 읽어 냅니다. 모든 격자가 그려져서 보입니다. 복호화는 길이만으로 격자를 다시 만들며, 채움이 있든 없든 동작합니다. 두 번째 키를 넣으면 이중 전치가 됩니다.
키 글자 하나당 열 하나이며, 키의 알파벳 순서대로 읽습니다. 반복되는 글자는 왼쪽에서 오른쪽으로 번호가 매겨집니다. 숫자도 가능합니다(3142).
암호화할 때와 같은 설정으로 복호화하세요. 여기서 유지하는 모든 문자는 격자의 일부입니다.
격자
격자 1: 키 ZEBRAS 아래에 메시지를 행으로 쓰세요
| Z | E | B | R | A | S |
|---|---|---|---|---|---|
| 순서 6 | 순서 3 | 순서 2 | 순서 4 | 순서 1 | 순서 5 |
| W | E | A | R | E | D |
| I | S | C | O | V | E |
| R | E | D | F | L | E |
| E | A | T | O | N | C |
| E |
열을 순서대로 읽으세요: EVLN · ACDT · ESEA · ROFO · DEEC · WIREE
열 전치 암호 사용 방법
- 1. 모드와 키워드를 고르세요. 키워드의 각 글자가 열 하나의 머리글이 됩니다. 열은 키 글자의 알파벳 순서대로 번호가 매겨지며, 같은 글자가 반복되면 왼쪽에서 오른쪽 순서로 번호가 매겨집니다. 숫자도 쓸 수 있습니다.
- 2. 마지막 행을 어떻게 끝낼지 정하세요. 짧게 두어 불규칙한 열을 만들거나, X로 채워 모든 열의 길이를 같게 하세요. 보내는 쪽과 받는 쪽이 같은 선택을 해야 합니다.
- 3. 움직일 문자를 고르세요. 기본으로는 글자만 대문자로 움직입니다. 고전적인 방식이 그렇습니다. 공백, 구두점, 소문자를 체크하면 그것도 함께 움직이며, 복호화도 같은 설정으로 하세요.
- 4. 이중 전치를 하려면 두 번째 키를 넣고, 결과를 복사하세요. 원하면 다섯 글자씩 묶어서 복사할 수 있습니다. 작업 과정에는 각 격자가 열 번호와 함께 표시됩니다.
열 전치의 작동 방식
전치 암호는 모든 글자를 보존하고 순서만 바꿉니다. 열 전치에서는 메시지를 키 글자 수만큼의 폭으로 행에 쓴 뒤, 열을 왼쪽에서 오른쪽이 아니라 키 글자의 알파벳 순서대로 읽어 냅니다.
ZEBRAS에서 알파벳 순서의 글자는 A, B, E, R, S, Z이므로, 여섯 열은 6 3 2 4 1 5 순서로 읽습니다. A 열을 먼저 읽습니다. 메시지 We are discovered. Flee at once. — 글자 25개 — 는 완전한 행 네 개와 다섯 번째 행의 한 글자를 채웁니다:
키워드 ZEBRAS의 격자
Z E B R A S 6 3 2 4 1 5 ----------- W E A R E D I S C O V E R E D F L E E A T O N C E
열을 번호 순서대로 읽으면 EVLN, ACDT, ESEA, ROFO, DEEC, WIREE가 나오며, EVLNA CDTES EAROF ODEEC WIREE로 보냅니다. 이것이 도구의 샘플입니다. 마지막 행을 X로 채우면 EVLNX ACDTX ESEAX ROFOX DEECX WIREE가 되며, 여기에는 수신자가 복호화한 뒤 지워야 할 채움 글자 다섯 개가 있습니다.
복호화: 격자 다시 만들기
수신자는 길이(25)와 키(6개 열)를 압니다. 25 = 4 × 6 + 1이므로 완전한 행은 네 개이고 한 글자가 남습니다. 따라서 왼쪽 첫 열은 다섯 글자를, 나머지 열은 네 글자씩 가집니다. 번호 순서대로 열을 채우고(A 아래 EVLN, B 아래 ACDT, 그리고 Z 아래 WIREE까지) 행을 가로로 읽으면 메시지가 복원됩니다. 채움이 있으면 모든 열의 길이가 같아져 계산이 더 간단합니다.
이중 전치
결과를 두 번째 격자에 통과시키면 훨씬 철저하게 뒤섞입니다. EVLNACDTESEAROFODEECWIREE를 STRIPE 아래에 쓰고(열 순서 5 6 4 2 3 1) 읽으면 CAEEN SOIAE DRLEF WEDRE EVTOC가 나옵니다. 복호화는 두 번째 격자를 먼저 풀고, 그다음 첫 번째 격자를 풉니다. 채움을 켜면 이 도구는 첫 번째 격자만 채우므로, 두 번째 격자는 항상 길이만으로 풀립니다.
역사
전치는 오래된 발상입니다. 고대 스파르타의 스키테일은 글을 쓴 띠를 막대에 감았습니다. John Falconer의 Cryptomenysis Patefacta(1685)는 키를 쓴 열 전치를 설명한 가장 이른 영어 문헌 중 하나이며, 마지막 행을 채우는 널(null)도 다룹니다. 제1차 세계대전에서 독일군은 프랑스가 Übchi라고 부른 이중 열 전치를 썼습니다. 프랑스군은 이를 정기적으로 해독했고, 그 성공이 신문 Le Matin에 보도되자 독일군은 1914년 11월 18일 이를 바꿨습니다. 제2차 세계대전에서 이중 전치는 영국 특수작전집행부(SOE), 미국 OSS, 네덜란드 레지스탕스, 프랑스 마키의 야전 암호였으며, 독일 육군과 해군의 비상 암호이기도 했습니다.
열 전치는 얼마나 안전한가?
단일 전치는 약합니다. 글자 빈도가 일반 영어와 정확히 같아서, 분석가는 글자가 바뀐 것이 아니라 옮겨졌다는 것을 바로 알 수 있습니다. 또한 열의 수를 추측하고, 암호문을 열로 잘라 서로 밀어 맞춰 단어가 나타날 때까지 시도할 수 있습니다(애너그램 방식). 불규칙한 열은 채운 열보다 이를 어렵게 합니다. 이중 전치는 1950년대까지 현장에서 신뢰받았지만, 같은 키로 만든 같은 길이의 두 메시지는 함께 애너그램할 수 있습니다. 2013년 George Lasry는 저자가 해독할 수 없다고 여긴 이중 전치 문제를 컴퓨터로 풀었습니다. 이 도구는 전치의 원리를 배우는 데 쓰세요. 비밀을 지키는 데 쓰지는 마세요.
자주 묻는 질문
- 열 전치 암호란 무엇인가요?
- 메시지를 키워드 아래 행에 쓰고, 키워드 글자의 알파벳 순서대로 열을 읽어 내는 암호입니다. 메시지의 모든 글자는 암호문에 남고 순서만 바뀝니다. 키워드를 아는 수신자는 격자를 다시 만들고 행을 읽습니다.
- 키워드에서 열 순서는 어떻게 정해지나요?
- 키워드의 글자를 알파벳 순서로 번호 매기세요. ZEBRAS는 A가 가장 먼저, Z가 마지막이므로 6 3 2 4 1 5가 됩니다. 글자가 반복되면 사본들은 왼쪽에서 오른쪽 순서로 번호가 붙습니다. 그래서 LETTER는 3 1 5 6 2 4가 됩니다. 3142 같은 숫자 키는 수의 크기 순서대로 읽습니다.
- 마지막 행을 X로 채워야 하나요?
- 양쪽이 합의한다면 어느 쪽이든 괜찮습니다. 채우면 모든 열의 길이가 같아져 손으로 하기 쉽지만, 복호화 후 채움 글자를 지워야 하고 그것이 격자의 모양을 분석가에게 알려 줍니다. 마지막 행을 짧게 두는 불규칙한 열은 채움 글자가 없어 공격하기 더 어렵습니다.
- 키 없이 열 전치를 어떻게 복호화하나요?
- 열의 수를 추측하세요. 채움을 썼다면 메시지 길이가 열의 수로 나누어떨어집니다. 암호문을 그 길이의 열로 쓰고, 행이 단어로 읽힐 때까지 열들을 재배열하세요. TH, HE, IN 같은 흔한 글자 쌍이 어떤 열들이 나란히 놓여야 하는지 알려 줍니다. 이중 전치는 손으로 풀기 어렵게 하지만, 컴퓨터로는 여전히 풀 수 있습니다.
- 이중 전치란 무엇인가요?
- 열 전치를 두 번 적용한 것으로, 보통 서로 다른 두 키워드를 씁니다. 첫 번째 격자의 출력이 두 번째 격자의 입력이 됩니다. 한 번의 전치보다 훨씬 강하며, 제2차 세계대전의 저항 조직과 SOE, OSS 요원들이 이에 의존했지만, 현대 컴퓨터 공격에 대해서는 안전하지 않습니다.
- 치환 암호와 전치 암호는 어떻게 다른가요?
- 치환 암호는 각 글자를 다른 글자로 바꾸고 순서는 그대로 둡니다. 전치 암호는 글자를 그대로 두고 순서를 바꿉니다. 그래서 전치는 평문의 글자 빈도를 그대로 남깁니다. 역사적으로 둘은 자주 결합되었는데, 제1차 세계대전의 ADFGVX 암호가 그런 예입니다.