T

Text Machine

강력한 텍스트 도구를 브라우저에서

힐 암호

선형대수 위에 세워진 고전적인 다중 글자 암호인 힐 암호를 암호화하고 복호화하세요. 글자들은 블록으로 묶여 숫자 벡터로 바뀐 뒤 키 행렬에 곱해져 26으로 나눈 나머지를 취합니다: 암호화는 C = K·P, 복호화는 P = K⁻¹·C 입니다. 2×2 또는 3×3 키를 고르고, 실시간 행렬과 그 행렬식, 그리고 모듈러 역행렬을 확인하며, 블록 단위의 계산 과정을 따라가 보세요. 모든 작업은 브라우저에서 실행됩니다.

키 행렬

키 (글자)

키는 4개의 글자(A=0 … Z=25)이며 행렬을 행 단위로 채웁니다. 2×2 키는 글자를 쌍(이중 글자) 단위로 암호화합니다.

평문
암호문

위에 텍스트를 입력하면 결과가 여기에 표시됩니다.

키 행렬

각 글자 블록은 벡터(A=0 … Z=25)가 되어 키 행렬에 곱해진 뒤 26으로 나눈 나머지를 취합니다. 키는 그 행렬식이 mod 26에서 가역일 때만 작동합니다.

C = K · P (mod 26)

키 행렬을 채우려면 정확히 4개의 글자(A–Z)를 입력하세요.

힐 암호 사용 방법

  1. 1

    암호화 또는 복호화와 행렬 크기 선택

    암호화하려면 암호화를, 복호화하려면 복호화를 선택한 뒤, 2×2 키(글자 쌍 단위)나 3×3 키(글자 세 개 단위)를 고르세요.

  2. 2

    키를 글자로 입력

    행렬을 행 단위로 채우는 키 글자를 입력하세요 — 2×2 키에는 네 글자, 3×3에는 아홉 글자입니다. 실시간 행렬은 행렬식을 보여 주고 키가 mod 26에서 가역인지 알려 줍니다.

  3. 3

    텍스트 입력 또는 붙여넣기

    메시지를 입력하면 입력하는 즉시 변환됩니다. 계산 패널은 각 블록을 벡터로, 행렬 곱셈을, 그리고 그 결과 블록을 보여 줍니다.

  4. 4

    키 행렬과 역행렬 확인

    키 행렬 패널을 열어 키와 그 행렬식을, 그리고 — 키가 유효할 때 — 복호화에 쓰이는 모듈러 역행렬을 확인하세요.

  5. 5

    복사, 다운로드, 공유

    결과를 복사하거나 텍스트 파일로 다운로드하거나, 입력한 텍스트와 키, 크기, 방향을 그대로 갖춘 채 도구를 다시 여는 링크로 공유하세요.

힐 암호 이해하기

힐 암호란 무엇인가요?

힐 암호는 미국 수학자 레스터 S. 힐(Lester S. Hill)이 1929년에 고안한 고전적인 다중 글자 치환 암호입니다. 한 번에 한 글자씩 바꾸는 대신, 글자 블록 전체를 하나의 숫자 벡터로 다루어 비밀 키 행렬에 곱하고 26으로 나눈 나머지를 취함으로써 블록을 통째로 암호화합니다. 이는 세 개가 넘는 기호를 한 번에 다룰 수 있었던 최초의 실용적 암호였으며, 선형대수를 암호학의 한복판으로 끌어들였습니다.

각 출력 글자가 자기 블록 안의 모든 입력 글자에 의존하기 때문에, 힐 암호는 더 단순한 암호들을 드러내는 한 글자 단위의 빈도를 감춥니다. 2×2 키는 글자를 쌍으로 섞고, 3×3 키는 셋씩 섞으며, 더 큰 행렬은 더욱 큰 블록을 섞습니다. 이 확산은 현대 블록 암호의 바탕에 깔린 바로 그 발상이어서, 힐 암호는 즐겨 쓰이는 교육 예제가 되었습니다 — 비록 선형 암호로서 약간의 알려진 평문만 있으면 쉽게 깨지기는 하지만 말입니다.

힐 암호가 작동하는 방식

먼저 A=0, B=1부터 Z=25까지로 글자를 숫자로 바꿉니다. 키는 그러한 숫자들로 이루어진 n×n 행렬인데; 여기서는 행렬을 행 단위로 채우는 일련의 글자로 입력하므로, 2×2 키에는 네 글자가, 3×3 키에는 아홉 글자가 필요합니다. 평문은 n개의 글자로 이루어진 블록으로 나뉘며, 각 블록은 열 벡터로 적힙니다.

블록 P를 암호화하려면 C = K · P (mod 26)을 계산합니다: 키 행렬에 벡터를 곱하고 모든 성분을 26으로 나눈 나머지로 줄인 뒤, 그 숫자들을 다시 글자로 읽습니다. 복호화하려면 키 행렬의 모듈러 역행렬 K⁻¹가 필요하며 P = K⁻¹ · C (mod 26)을 계산합니다. 역행렬은 행렬식이 26으로 나눈 나머지에서 가역일 때 — 즉, 26과 공약수를 갖지 않을 때 — 에만 존재하는데, 이것이 키를 고를 때 가장 중요한 단 하나의 규칙입니다.

유효한 키 행렬 고르기

모든 행렬이 힐 키가 될 수 있는 것은 아닙니다. 복호화가 작동하려면 키의 행렬식을 26으로 나눈 나머지가 26과 서로소여야 합니다. 26 = 2 × 13 이므로, 행렬식은 홀수여야 하고 13의 배수가 아니어야 합니다; 허용되는 값은 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 라는 열두 개의 숫자입니다. 행렬식이 짝수이거나 13과 같으면 모듈러 역행렬이 존재하지 않으며 암호문을 유일하게 복호화할 수 없습니다.

이 도구는 행렬식을 대신 계산하여, 키가 가역일 때는 초록색 배지를, 그렇지 않을 때는 빨간색 배지를 복호화에 쓸 역행렬과 함께 보여 줍니다. 키가 거부되면 글자를 한두 개 바꾸면서 행렬식이 유효한 값에 안착할 때까지 갱신되는 모습을 지켜보세요. 이 실시간 피드백은 손으로 힐 키를 고르는 까다로운 일을 빠르고 시각적인 연습으로 바꿔 줍니다.

2×2 예제 풀이

키 DDCF를 봅시다. 이는 2×2 행렬을 윗행에 숫자 3, 3, 아랫행에 2, 5로 채웁니다. 그 행렬식은 3×5 − 3×2 = 9 이고, 9는 26과 서로소이므로 이 키는 유효합니다. 이제 HELP를 암호화해 봅시다. 첫 번째 블록 HE는 벡터 (7, 4)입니다: 곱하면 (3×7 + 3×4, 2×7 + 5×4) = (33, 34)가 되고, 이는 mod 26으로 (7, 8) = HI로 줄어듭니다.

두 번째 블록 LP는 (11, 15)이며, (3×11 + 3×15, 2×11 + 5×15) = (78, 97) = (0, 19) = AT가 됩니다. 따라서 HELP는 HIAT로 암호화됩니다. 복호화하려면 도구가 키를 (15, 17 / 20, 9)로 역변환하여 각 암호 블록에 곱해 HELP를 되찾습니다. 위에 키로 DDCF를 입력하면 모든 단계가 실시간 계산 패널에 나타나는 것을 볼 수 있습니다.

3×3 예제 풀이

전형적인 3×3 예제는 키 GYBNQKURP를 쓰는데, 이는 행렬을 첫째 행에 6, 24, 1, 둘째 행에 13, 16, 10, 셋째 행에 20, 17, 15로 채웁니다. 삼중 글자 ACT — 벡터 (0, 2, 19) — 를 암호화하면 줄이기 전에 (67, 222, 319)가 되고, 이는 26으로 나눈 나머지로 (15, 14, 7), 즉 POH가 됩니다.

이 행렬의 행렬식은 26으로 나눈 나머지로 25 이며 26과 서로소이므로 유효한 키이고, 그 모듈러 역행렬은 행렬 (8, 5, 10 / 21, 8, 21 / 21, 12, 8)입니다. 암호 블록 POH에 그 역행렬을 곱하면 ACT로 되돌아옵니다. 크기 선택기를 3×3으로 바꾸고 GYBNQKURP를 입력하면 이 교과서적 예제를 재현하고 도구가 유도하는 역행렬을 볼 수 있습니다.

채움, 글자, 그리고 서식

힐 암호는 A–Z 26개의 글자만 알기 때문에, 공백과 숫자, 문장 부호는 암호화 전에 제거되며 복호화할 때 되돌아오지 않습니다. 메시지는 고정된 크기의 블록으로 처리되므로, 길이가 블록 크기의 배수가 아닌 평문은 마지막 블록을 완성하기 위해 글자 X로 채워집니다; 따라서 복호화된 메시지는 한두 개의 여분 글자로 끝날 수 있습니다.

글자의 대소문자는 보존되지 않습니다 — 모든 것이 대문자로 다루어집니다. 이러한 한계는 이 도구가 아니라 고전 암호 자체에 본래 따르는 것이며, 힐 암호가 동시대 암호들처럼 자유롭게 흐르는 텍스트가 아니라 짧은 전술 메시지에 쓰였던 까닭의 일부입니다. 실시간 분해는 당신의 텍스트가 어떻게 블록으로 묶이고 채워지는지를 정확히 보여 줍니다.

안전성과 암호 해독

힐 암호의 강점은 동시에 치명적 약점이기도 합니다: 선형이라는 점입니다. 각 암호 블록은 평문 블록의 고정된 선형 함수이므로, 충분한 평문–암호문 블록 쌍을 알아낸 공격자는 선형 연립방정식을 세워 풀어서 키 행렬을 곧장 복원할 수 있습니다. n×n 키의 경우 대략 n개의 알려진 블록이면 보통 충분하며, 이는 이 암호가 알려진 평문 공격에 빠르게 무너지게 만듭니다.

또한 블록 사이의 확산도, 선형 혼합 너머의 혼돈도 제공하지 않으므로, 동일한 평문 블록은 언제나 동일한 암호 블록으로 암호화됩니다. 현대 기준으로 안전하지 않으며, 실제 정보를 보호하는 데 결코 써서는 안 됩니다 — 대신 AES 같은 검증된 알고리즘을 쓰세요. 그러나 행렬과 모듈러 산술, 블록 암호화가 어떻게 맞물리는지를 명료하고 직접 다뤄 보는 방식으로 보여 주는 예로서, 힐 암호는 배우기에 가장 좋은 고전 암호 중 하나로 남아 있습니다.

자주 묻는 질문

힐 암호란 무엇인가요?
힐 암호는 레스터 S. 힐(Lester S. Hill)이 1929년에 만든 고전적인 다중 글자 치환 암호입니다. 각 블록을 숫자 벡터로 바꾸어 비밀 키 행렬에 곱하고 26으로 나눈 나머지를 취함으로써 글자를 블록 단위로 암호화합니다. 모든 출력 글자가 블록 전체에 의존하기 때문에 한 글자 단위의 빈도를 감추며, 선형대수를 실용적인 방식으로 암호화에 적용한 최초의 암호였습니다.
힐 암호는 어떻게 작동하나요?
글자는 숫자가 됩니다(A=0 … Z=25). 평문은 n개의 글자로 이루어진 블록으로 나뉘어 각각 벡터로 적히고, n×n 키 행렬 K를 써서 C = K·P (mod 26)으로 암호화됩니다. 복호화는 키의 모듈러 역행렬을 씁니다: P = K⁻¹·C (mod 26). 2×2 키는 글자 쌍에, 3×3 키는 셋씩에 작동합니다.
유효한 힐 암호 키는 어떻게 고르나요?
키 행렬은 그 행렬식을 26으로 나눈 나머지가 26과 서로소일 때에만 복호화할 수 있습니다. 26 = 2 × 13 이므로, 행렬식은 홀수여야 하고 13의 배수가 아니어야 합니다 — 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 중 하나입니다. 이 도구는 행렬식을 실시간으로 보여 주고 키가 가역인지 아닌지를 표시하므로, 유효해질 때까지 글자를 조정할 수 있습니다.
힐 암호 예제 풀이를 보여 줄 수 있나요?
2×2 키 DDCF(행 3,3과 2,5, 행렬식 9)로 단어 HELP는 HIAT로 암호화됩니다: HE = (7,4)는 (7,8) = HI로, LP = (11,15)는 (0,19) = AT로 대응됩니다. 3×3 키 GYBNQKURP로는 삼중 글자 ACT가 POH로 암호화됩니다. 위에 어느 키든 입력하면 모든 블록과 행렬 곱셈이 단계별로 나타나는 것을 볼 수 있습니다.
힐 암호는 어떻게 복호화하나요?
복호화는 각 암호 블록에 키 행렬의 모듈러 역행렬을 곱합니다, P = K⁻¹·C (mod 26). 이 도구에서는 복호화를 선택하고 같은 행렬 크기를 설정한 뒤 암호화에 쓰인 것과 같은 키를 입력하면; 도구가 역행렬을 계산하여 평문을 다시 만들어 줍니다. 키는 mod 26에서 가역이어야 하며, 그러지 않으면 역행렬이 — 따라서 유일한 복호화도 — 존재하지 않습니다.
2×2 힐 암호와 3×3 힐 암호의 차이는 무엇인가요?
행렬 크기가 블록 길이를 정합니다. 2×2 키는 글자를 한 번에 두 개씩 암호화하며 네 글자 키가 필요하고; 3×3 키는 한 번에 세 개씩 암호화하며 아홉 글자 키가 필요합니다. 더 큰 행렬은 블록당 더 많은 글자를 섞어 빈도 분석에 조금 더 잘 견디지만, 설정하기가 더 어렵고 여전히 알려진 평문 공격에 무너집니다.
제 키가 왜 비가역이라고 나오나요?
힐 키는 그 행렬의 행렬식이 26과 서로소일 때에만 복호화할 수 있습니다. 행렬식이 짝수이거나 13의 배수이면, 행렬에 mod 26 역행렬이 없으며 암호문을 유일하게 복호화할 수 없습니다. 키의 글자를 한두 개 바꾸면서 도구가 키를 가역으로 표시할 때까지 행렬식이 갱신되는 것을 지켜보세요.
공백과 숫자, 문장 부호는 어떻게 되나요?
힐 암호에는 A–Z 글자만 존재하므로, 공백과 숫자, 문장 부호는 암호화 전에 제거되어 복호화할 때 다시 나타나지 않습니다. 메시지의 길이가 블록 크기의 배수가 아니면, 마지막 블록을 채우기 위해 글자 X로 채워지므로, 복호화된 메시지는 한두 개의 여분 글자로 끝날 수 있습니다.
힐 암호는 안전한가요?
아니요. 힐 암호는 선형이므로, 충분한 평문–암호문 블록 쌍을 얻은 공격자는 선형 연립방정식을 풀어 키 행렬을 복원할 수 있습니다. n×n 키의 경우 대략 n개의 알려진 블록이면 보통 충분합니다. 행렬과 모듈러 산술이 어떻게 블록 암호를 이루는지를 배우기에는 탁월하지만, 실제 보호를 위해서는 언제나 AES 같은 현대적 알고리즘을 써야 합니다.
힐 암호는 누가 발명했나요?
힐 암호는 미국 수학자 레스터 S. 힐(Lester S. Hill)이 발명하여 1929년 학술지 The American Mathematical Monthly에 발표했습니다. 세 글자가 넘는 블록을 실용적인 규모로 암호화할 수 있었던 최초의 암호라는 점에서 주목할 만했으며, 행렬 대수와 모듈러 산술을 암호화 도구로 도입했습니다 — 현대 블록 암호 설계에 메아리치는 발상입니다.
행렬의 모듈러 역행렬이란 무엇인가요?
그것은 키에 26으로 나눈 나머지로 곱했을 때 단위 행렬을 주는 행렬입니다. 2×2 또는 3×3 키의 경우 수반 행렬(전치한 여인수 행렬)에 행렬식의 모듈러 역수를 곱하여 구합니다. 힐 암호는 이를 써서 암호화를 되돌리며, 이 도구는 키가 유효할 때마다 자신이 계산한 역행렬을 표시합니다.
제 텍스트가 서버로 전송되나요?
아니요. 모든 암호화와 복호화는 전적으로 브라우저에서 일어나므로, 입력한 텍스트와 키는 결코 업로드되거나 기록되거나 저장되지 않습니다. 공유 링크조차 텍스트와 키를 URL의 해시 뒤 부분에 담아 두는데, 브라우저는 이 부분을 서버로 절대 전송하지 않으므로, 직접 링크를 공유하기로 선택하기 전까지는 메시지가 비공개로 유지됩니다.

관련 도구

이런 편리한 도구도 함께 사용해 보세요

포 스퀘어 암호

투 스퀘어 암호

카이사르 암호

비제네르 암호

아트바시 암호

레일 펜스 암호