러닝 키 암호
키가 짧은 반복 단어가 아니라 긴 텍스트 구절인 Vigenère 암호, 즉 러닝 키 암호를 암호화하고 복호화하세요. 키가 메시지만큼 길고 결코 반복되지 않기 때문에, 보통의 Vigenère를 깨뜨리는 주기적 패턴이 사라집니다. 암호화와 복호화를 전환하고 계산 과정이 실시간으로 만들어지는 모습을 지켜보세요. 모든 작업은 브라우저에서 실행됩니다.
긴 키 구절을 붙여넣으세요. 전통적으로는 약속한 책의 한 페이지입니다. 진정한 러닝 키가 되려면 적어도 메시지만큼 길어야 합니다. 이동에는 오직 글자만 사용되며, 대문자와 소문자는 동일하게 취급되고, 키에 포함된 공백이나 숫자, 문장 부호는 무시됩니다.
위에 텍스트를 입력하면 러닝 키 결과가 여기에 표시됩니다.
러닝 키 암호 사용 방법
- 1
암호화 또는 복호화 선택
평문을 러닝 키 암호문으로 바꾸려면 암호화를, 암호문에서 평문을 되찾으려면 복호화를 고르세요. 같은 러닝 키가 두 방향에 모두 쓰입니다.
- 2
러닝 키 붙여넣기
키로 사용할 긴 텍스트 구절을 붙여넣으세요. 전통적으로는 약속한 책의 한 페이지입니다. 진정한 러닝 키가 되려면 적어도 메시지만큼 길어야 합니다. 오직 글자만 사용되며, 대소문자와 공백, 문장 부호는 무시됩니다.
- 3
텍스트 입력 또는 붙여넣기
변환하려는 메시지를 입력하세요. 암호는 입력하는 즉시 자동으로 실행되며, 아래의 글자별 계산 과정이 실시간으로 갱신되어 짧은 키가 되감겨 반복해야 했던 지점을 강조합니다.
- 4
보기, 복사, 공유
결과를 읽은 뒤, 복사하거나 텍스트 파일로 다운로드하거나, 당신의 정확한 키와 방향, 텍스트 그대로 도구를 다시 여는 링크로 공유하세요. 모든 것이 브라우저 안에 머뭅니다.
러닝 키 암호 이해하기
러닝 키 암호란 무엇인가요?
러닝 키 암호는 다중 문자 치환 암호로, 짧은 반복 키워드 대신 긴 평범한 텍스트 구절을 키로 쓰는 Vigenère 암호의 한 형태입니다. 송신자와 수신자는 미리 키 텍스트를 약속하는데, 고전적으로는 특정 책의 특정 판본을 특정 페이지에서 펼친 것으로, 그 글자들을 순서대로 써서 메시지를 이동시킵니다. 키가 적어도 메시지만큼 길기 때문에 결코 반복할 필요가 없고, 반복 키 암호를 깨기 쉽게 만드는 규칙적인 순환 구조가 그저 사라져 버립니다.
이 길고 반복되지 않는 키가 러닝 키 암호를 남다르게 만드는 점입니다. 보통의 Vigenère 암호는 주기성으로 자신을 드러냅니다: 짧은 키워드가 순환하고, 그 리듬은 감지되어 풀어낼 수 있습니다. 러닝 키는 그 리듬을 완전히 없앱니다. 그 대가로, 이제 키는 자연 언어이며 영어 텍스트가 지닌 온갖 통계적 편향을 안고 있고, 그 편향이 공격자가 대신 파고드는 빈틈이 됩니다.
러닝 키 암호가 작동하는 방식
알파벳에 A를 0부터 Z를 25까지 번호를 매깁니다. 키 텍스트를 메시지 아래에 적어, 평문의 모든 글자 아래에 키 글자 하나씩이 놓이게 합니다. 암호화하려면 각 키 글자를 그 위의 글자에 더하고 26으로 나눈 나머지로 알파벳을 한 바퀴 둘러 감으므로, 암호문 글자는 C = (P + K) mod 26이 됩니다. 그 산술은 정확히 Vigenère 표이며, 바뀐 것은 키의 출처뿐입니다.
복호화하려면 수신자가 같은 키 텍스트를 암호문 아래에 적고 빼서, P = (C − K) mod 26으로 각 평문 글자를 복원합니다. 모든 Vigenère 변형에서처럼 오직 26개의 글자만 변환됩니다: 공백과 문장 부호, 숫자는 그대로 통과하며 키 글자를 소모하지 않으므로, 키는 메시지의 글자들과 계속 정렬된 채 유지됩니다. 대소문자가 보존되어 출력은 원래 텍스트의 모양을 그대로 간직합니다.
예제 풀이
메시지 HELLO를 러닝 키 KEYBOARD로 암호화합니다. 처음 다섯 개의 키 글자 K, E, Y, B, O를 메시지 아래에 줄 맞춰 더합니다: H 더하기 K는 R, E 더하기 E는 I, L 더하기 Y는 J, L 더하기 B는 M, O 더하기 O는 C입니다. 암호문은 RIJMC입니다. 오토키 암호와 달리, 키 글자가 순전히 약속된 키 텍스트에서 오며 평문과는 아무 상관이 없다는 점에 주목하세요.
RIJMC를 복호화하려면 같은 키 KEYBOARD를 그 아래에 적고 뺍니다: R 빼기 K는 H, I 빼기 E는 E, J 빼기 Y는 L, M 빼기 B는 L, C 빼기 O는 O가 되어 HELLO를 복원합니다. 키가 처음부터 온전히 알려져 있어 글자별 되먹임을 기다릴 필요가 없으므로, 메시지 전체를 한 번에 읽어 낼 수 있습니다.
러닝 키 대 반복 키 Vigenère
표준 Vigenère 암호는 짧은 키워드를 메시지 전체에 걸쳐 반복합니다: 키 KEY로는 스트림이 KEYKEYKEY 같은 식으로 이어집니다. 그 반복이 치명적 약점인데, 키 길이가 Kasiski 검사나 일치 지수로 복원될 수 있고, 그러고 나면 각 열은 빈도 분석으로 풀리는 단순한 카이사르 이동이 되기 때문입니다. 러닝 키 암호는 동일한 덧셈 규칙을 쓰지만 메시지만큼 긴 키를 쓰므로, 찾아낼 주기가 없고 그런 고전적 검사가 직접 통하지 않습니다.
위험은 너무 짧은 키를 쓰는 데 있습니다. 러닝 키가 메시지보다 짧으면 처음으로 되감겨야 하고, 그 순간 그것은 그 암호의 온갖 약점을 지닌 보통의 반복 키 Vigenère가 됩니다. 예를 들어 HELLO를 세 글자 키 KEY로 암호화하면 되감겨 RIJVS가 되는데 — 바로 반복 Vigenère의 결과입니다. 이 도구는 재사용된 키 글자를 표시해 암호가 약해지는 모습을 볼 수 있게 하며, 제대로 된 러닝 키는 언제나 적어도 텍스트만큼 길어야 합니다.
러닝 키 대 오토키 암호
러닝 키와 오토키 암호는 가까운 사촌입니다: 둘 다 아무것도 반복되지 않도록 메시지만큼 긴 키를 쓰고, 둘 다 같은 모듈러 덧셈으로 귀결됩니다. 차이는 그 긴 키가 어디서 오는지에 있습니다. 러닝 키 암호는 약속한 책의 한 페이지처럼 공유된 외부 텍스트에서 키를 끌어오는 반면, 오토키 암호는 짧은 시작 키워드 뒤에 평문 자체를 이어 붙여 긴 키를 만듭니다.
그 구분이 각각이 공격받는 방식을 좌우합니다. 오토키 암호는 시작 키워드라는 아주 작은 공유 비밀만 있으면 되지만, 키의 일부가 평문이기 때문에 흔한 단어를 알아맞혀 메시지에 끌고 다니면 더 많은 텍스트가 드러납니다. 러닝 키 암호는 양쪽 당사자가 같은 키 텍스트를 지녀야 하지만, 그 약점은 통계적입니다: 메시지와 키가 모두 자연 언어이므로, 분석가는 일관된 분할이 나타날 때까지 그럴듯한 단어들을 서로 맞대어 시험해 볼 수 있습니다.
러닝 키 암호를 깨는 방법
키가 결코 반복되지 않기 때문에, Kasiski 검사와 일치 지수는 반복 Vigenère에서처럼 먹히지 않습니다. 대신 고전적 공격은 각 암호문 글자가 둘 다 평범한 언어에서 가져온 두 글자의 합이라는 사실을 이용합니다. 영어는 매우 중복적이어서, 어떤 주어진 암호문 글자에 대해 그럴듯한 평문-키 글자 쌍은 소수에 불과하며, 어느 한쪽 스트림의 흔한 단어들이 감지할 수 있는 흔적을 남깁니다.
흔히 William Friedman의 공으로 여겨지는 실용적 방법은, 가능성 있는 단어를 알아맞혀 그것을 키인 양 암호문의 한 구간에서 빼고, 다른 스트림이 언어처럼 보이는지 살피는 것입니다. 키에서의 올바른 추측은 평문의 한 조각을 드러내고, 평문에서의 올바른 추측은 키의 한 조각을 드러내며, 그런 다음 각 조각을 바깥으로 연장하여 두 스트림을 서로 맞대어 풀어낼 수 있습니다. 같은 키 텍스트를 둘 이상의 메시지에 재사용하는 것은 치명적인데, 두 암호문을 빼면 공유된 키가 상쇄되고 두 평문이 결합된 채로 남기 때문입니다.
러닝 키에서 일회용 패드로
러닝 키 암호는 깨질 수 없다고 증명된 유일한 암호인 일회용 패드의 직접적인 개념적 조상입니다. 방법은 거의 같습니다: 메시지만큼 긴 키를 가져다 글자 하나하나 더하는 것입니다. 일회용 패드는 세 가지 엄격한 조건을 덧붙입니다 — 키는 진정으로 무작위여야 하고, 적어도 메시지만큼 길어야 하며, 결코 재사용되어서는 안 됩니다. 이 셋을 모두 충족하면 가능한 모든 평문이 암호문과 똑같이 들어맞으므로, 어떤 분석도 진짜 평문을 가려낼 수 없습니다.
러닝 키는 바로 그 조건들을 충족하지 못합니다. 책의 한 구절은 무작위가 아닙니다; 그 글자 빈도와 흔한 단어들이 위에서 설명한 발판을 분석가에게 내어 주는, 구조화된 영어입니다. 그래서 러닝 키 암호가 반복 Vigenère보다 의미 있게 더 강하기는 하지만, 현대의 기준으로는 어떤 실질적 보안도 제공하지 못하며 진짜 비밀을 지키는 데 결코 써서는 안 됩니다. 이 암호는 암호 역사의 생생한 교훈이자 퍼즐 헌트와 방 탈출, 깃발 뺏기(CTF) 문제의 단골 소재로 즐기는 것이 가장 좋습니다; 실제 보호를 위해서는 AES 같은 현대적이고 충분히 검증된 알고리즘을 쓰세요.
자주 묻는 질문
러닝 키 암호란 무엇인가요?
러닝 키 암호는 어떻게 작동하나요?
러닝 키 암호는 Vigenère 암호와 어떻게 다른가요?
러닝 키 암호 예제를 보여 줄 수 있나요?
러닝 키로 무엇을 써야 하나요?
키가 메시지보다 짧으면 어떻게 되나요?
러닝 키와 오토키 암호의 차이는 무엇인가요?
러닝 키 암호는 책 암호와 같은 것인가요?
이 암호는 공백과 숫자, 문장 부호를 바꾸나요?
러닝 키 암호는 어떻게 깨나요?
러닝 키 암호는 일회용 패드와 관련이 있나요?
러닝 키 암호는 안전하며, 제 텍스트가 업로드되나요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요