아핀 암호
E(x) = (ax + b) mod 26으로 인코딩하고 디코딩하세요. a와 b를 입력하면 a를 되돌릴 수 있는지 확인하고, 모듈러 역원을 찾고, 모든 글자의 계산 과정을 보여 줍니다. 키를 모를 때는 디코딩 모드에서 312개를 모두 시도해 결과가 얼마나 영어처럼 보이는지로 순위를 매깁니다.
26과 공통 인수가 없어야 합니다. 아래 12개 값 중에서 고르세요.
어떤 정수든 되며 mod 26으로 처리됩니다.
이 키의 계산 과정
인코딩: E(x) = (5x + 8) mod 26
디코딩: D(y) = 21(y − 8) mod 26
5 × 21 = 105이고 이는 26의 배수보다 1 큰 수이므로 21은(는) 5의 역원입니다.
가능한 모든 a와 그 역원
| a | 1 | 3 | 5 | 7 | 9 | 11 | 15 | 17 | 19 | 21 | 23 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a⁻¹ | 1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
글자별 계산 — 처음 12글자
| 글자 | x | a·x + b | mod 26 | 결과 |
|---|---|---|---|---|
| A | 0 | 8 | 8 | I |
| F | 5 | 33 | 7 | H |
| F | 5 | 33 | 7 | H |
| I | 8 | 48 | 22 | W |
| N | 13 | 73 | 21 | V |
| E | 4 | 28 | 2 | C |
| C | 2 | 18 | 18 | S |
| I | 8 | 48 | 22 | W |
| P | 15 | 83 | 5 | F |
| H | 7 | 43 | 17 | R |
| E | 4 | 28 | 2 | C |
| R | 17 | 93 | 15 | P |
아핀 암호 사용 방법
- 1. 모드를 고르고 텍스트를 입력하세요. 인코딩은 평문을 암호문으로, 디코딩은 그 반대로 바꿉니다.
- 2. 키를 설정하세요. 곱셈 값 a와 이동 값 b를 입력합니다. a는 입력란 아래에 나열된 12개 값 중 하나여야 하며, 클릭하면 바로 사용할 수 있습니다. b는 어떤 정수든 되며 mod 26으로 줄여 쓰입니다.
- 3. 계산 과정을 읽으세요. 결과 아래 패널에 내 키의 두 공식, a의 역원, 각 글자의 계산이 나옵니다.
- 4. 키를 모른다면 모두 시도해 보세요. 디코딩 모드에서 312개 키 모두 시도를 선택하세요. 글자 수가 영어와 얼마나 비슷한지에 따라 결과의 순위가 매겨지고, 이 키 사용을 누르면 그중 하나를 불러옵니다.
아핀 암호 공식
글자에 0부터 번호를 매깁니다. A = 0, B = 1 … Z = 25. 글자 x를 암호화하려면 a를 곱하고 b를 더한 뒤 26으로 나눈 나머지를 취합니다. E(x) = (a·x + b) mod 26. 글자 y를 복호화하려면 그 과정을 거꾸로 되돌립니다. b를 빼고 a의 모듈러 역원인 a⁻¹을 곱합니다. D(y) = a⁻¹·(y − b) mod 26. 역원은 a에 곱했을 때 나머지가 1이 되는 수입니다. a = 5이면 5 × 21 = 105 = 4 × 26 + 1이므로 역원은 21입니다.
a로 쓸 수 있는 값이 12개뿐인 이유
a를 곱했을 때 서로 다른 두 글자가 같은 자리로 가면 안 됩니다. 그러면 복호화 답이 둘이 되기 때문입니다. 이는 a가 26 = 2 × 13과 공통 인수를 가질 때마다 일어납니다. 예를 들어 a = 2이면 2 × 13 = 26이 mod 26에서 0이므로 A(0)와 N(13)이 모두 b로 갑니다. 따라서 a는 홀수여야 하고 13이 아니어야 하며, 아래의 열두 수만 남습니다. 바로 mod 26에서 역원을 가지는 수들입니다. b의 선택지가 26개이므로 12 × 26 = 312개의 키가 되며, 그중 하나(a = 1, b = 0)는 아무것도 바꾸지 않습니다.
| a | 1 | 3 | 5 | 7 | 9 | 11 | 15 | 17 | 19 | 21 | 23 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a⁻¹ | 1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
실제 예시: a = 5, b = 8
a = 5, b = 8일 때 AFFINE CIPHER는 IHHWVC SWFRCP로 암호화됩니다. 이것이 도구의 샘플입니다. AFFINE의 글자를 하나씩 계산하면 다음과 같습니다.
| 글자 | x | 5x + 8 | mod 26 | 결과 |
|---|---|---|---|---|
| A | 0 | 8 | 8 | I |
| F | 5 | 33 | 7 | H |
| I | 8 | 48 | 22 | W |
| N | 13 | 73 | 21 | V |
| E | 4 | 28 | 2 | C |
디코딩할 때 도구는 a⁻¹ = 21을 곱합니다. I(8)는 21 × (8 − 8) = 0이 되어 A이고, H(7)는 21 × (7 − 8) = −21이 되어 mod 26에서 5, 즉 F입니다. 이 단계에서 음수가 나오는 것은 정상입니다. mod 26은 수가 0과 25 사이에 놓일 때까지 26을 더하거나 빼라는 뜻일 뿐입니다.
익숙한 두 암호는 사실 아핀 암호입니다. a = 1이면 공식이 x + b가 되어 b만큼의 카이사르 시프트이고, a = 25, b = 25이면 알파벳을 거꾸로 읽는 아트바시 암호입니다.
아핀 암호를 푸는 방법
실제로 바뀌는 키는 311개뿐이므로 가장 단순한 공격은 모두 시도하는 것이며, 무차별 대입 옵션은 이를 순식간에 해냅니다. 어려운 부분은 정답을 알아보는 일이라서, 도구는 각 결과의 글자 수를 일반적인 영어와 카이제곱으로 비교해 순위를 매깁니다. 한 문장 이상이면 올바른 키가 맨 위에 오지만, 짧은 구절에서는 그렇지 않을 수 있습니다. IHHWVC SWFRCP만 놓고 보면 실제 키 (5, 8)은 4위이므로 첫 줄을 믿지 말고 목록을 내려 가며 읽으세요.
암호 해독가는 대수를 이용해 더 잘할 수 있습니다. 아핀 암호는 단일 문자 치환 암호로 각 글자가 항상 같은 글자가 되므로, 빈도 분석으로 어떤 암호문 글자가 E와 T를 나타내는지 추정할 수 있고, 그런 추정 두 개가 방정식 두 개를 줍니다. 위의 키에서는 E(4)가 C(2)가, T(19)가 Z(25)가 되므로 4a + b ≡ 2, 19a + b ≡ 25 (mod 26)입니다. 두 번째에서 첫 번째를 빼면 15a ≡ 23이고, 15의 역원인 7을 곱하면 a ≡ 161 ≡ 5, 그다음 b ≡ 2 − 20 ≡ 8입니다. 알려진 평문 두 글자만 있으면 키 전체를 복구할 수 있습니다.
자주 묻는 질문
- 아핀 암호란 무엇인가요?
- 각 글자의 번호 x를 (a·x + b) mod 26으로 바꾸는 치환 암호입니다. 모든 글자에 a를 곱한 뒤 b만큼 이동시키며, 키는 (a, b) 쌍입니다. 같은 글자는 항상 같은 암호문 글자가 되므로 단일 문자 치환 암호이며, 카이사르 암호보다 더 강해 보이는 친척이지만 해독이 더 어렵지는 않습니다.
- a는 왜 26과 서로소여야 하나요?
- 복호화는 26을 법으로 한 a의 역원을 곱하는데, 이 역원은 a와 26이 공통 인수를 갖지 않을 때만 존재합니다. 공통 인수가 있으면 서로 다른 두 글자가 같은 글자로 암호화되어 메시지를 확실하게 되읽을 수 없습니다. 그래서 모든 짝수와 13이 제외되고 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25가 남습니다.
- a의 모듈러 역원은 어떻게 구하나요?
- a에 곱해서 26으로 나눈 나머지가 1이 되는 1에서 25 사이의 수를 찾으면 됩니다. a = 7이면 7 × 15 = 105 = 4 × 26 + 1이므로 15입니다. 경우가 열두 가지뿐이므로 위 표에서 읽는 것이 가장 빠르며, 큰 법에서는 확장 유클리드 알고리즘으로 역원을 바로 구합니다.
- 아핀 암호의 키는 몇 개인가요?
- 312개입니다. a의 선택지 12개에 b의 선택지 26개를 곱한 값입니다. 그중 a = 1, b = 0은 텍스트를 바꾸지 않으므로 실제로 암호화하는 키는 311개입니다. 손으로도 오후 한나절이면 모두 시도해 볼 수 있을 만큼 적고, 컴퓨터로는 순식간입니다.
- 카이사르 암호도 아핀 암호의 일종인가요?
- 네. a = 1로 두면 공식이 x + b가 되어 b만큼의 카이사르 시프트가 되며, ROT13은 a = 1, b = 13입니다. 아트바시도 a = 25, b = 25인 아핀 암호입니다. 둘 다 무차별 대입이 시도하는 312개 키 안에 들어 있습니다.
- 아핀 암호는 안전한가요?
- 아니요. 무차별 대입, 빈도 분석, 그리고 위의 대수에서 보듯 알려진 평문 두 글자만으로도 깨집니다. 모듈러 산술을 연습하기에는 훌륭하지만, 중요한 것에는 현대 암호화를 써야 합니다.