Vigenère 솔버
Vigenère 암호문을 붙여넣으면 키를 몰라도 키워드와 원래 메시지를 복원합니다. 솔버는 일치 지수로 키 길이를 찾아내고, 카시스키 검사로 이를 확인한 뒤, 각 열을 카이사르 암호로 풀어 가장 영어다운 해독 결과를 골라냅니다. 모든 작업은 브라우저에서 실행됩니다.
샘플로 사용해 보기:
위에 Vigenère 암호문을 붙여넣으면 복원된 키, 해독된 메시지, 키 길이 분석이 여기에 표시됩니다. 텍스트가 많을수록 답이 더 믿을 만해집니다.
비제네르 해독기 사용 방법
- 1
암호문 붙여넣기
Vigenère로 암호화된 텍스트를 복사해 입력란에 붙여넣으세요. 한 문단 이상이면 가장 좋은 결과가 나옵니다. 글자는 대소문자에 상관없이 읽으며, 공백, 숫자, 문장 부호는 푸는 동안 무시됩니다.
- 2
복원된 키 읽기
솔버는 가장 유력한 키워드를 맨 위에 보여줍니다. 한 번의 클릭으로 복사하세요 — Vigenère 암호 도구에 붙여넣어 같은 메시지가 해독되는지 검증할 수 있습니다.
- 3
해독된 메시지 읽기
키 아래에는 원래의 대소문자, 띄어쓰기, 문장 부호가 복원된 전체 평문이 나타납니다. 결과를 보관하려면 복사하세요.
- 4
키 길이 증거 확인하기
일치 지수 차트와 카시스키 패널은 왜 그 키 길이가 선택되었는지 보여줍니다. 결과가 이상해 보이면 차트에서 다른 길이를 클릭해 풀이를 강제하거나, 최대 키 길이를 넓히세요.
- 5
공유 또는 지우기
여러분의 암호문이 그대로 들어 있는 상태로 도구를 다시 여는 공유 가능한 링크를 복사하세요 — 텍스트는 URL의 해시 뒤쪽 부분에 실리며, 이 부분은 결코 서버에 닿지 않습니다. 지우기는 모든 것을 초기화합니다.
Vigenère 암호 깨기, 알기 쉽게 풀어보기
이 도구가 하는 일
Vigenère 암호는 반복되는 키워드를 따라 각 글자를 서로 다른 양만큼 옮겨 메시지를 숨깁니다. 그 단순한 발상은 세 세기 동안 le chiffre indéchiffrable — 해독 불가능한 암호 — 라는 별명을 얻었습니다. 글자 빈도를 세는 흔한 수법이 이 암호 앞에서는 통하지 않기 때문입니다. 그럼에도 이 도구는 키를 받지 않고도 이 암호를 자동으로 깹니다. 암호문을 붙여넣으면 가장 유력한 키워드와 해독된 메시지를 돌려줍니다.
이 도구는 사람 암호 분석가가 하는 방식 그대로, 다만 더 빠르게 작동합니다. 키가 얼마나 긴지 알아내고, 메시지를 그만큼의 별개 카이사르 암호로 쪼갠 뒤, 각각을 풀고, 결과가 실제로 영어처럼 읽히는지 확인합니다. 키도 필요 없고, 어림짐작도 없으며, 어떤 것도 브라우저 밖으로 나가지 않습니다 — 공격 전체가 여러분의 기기에서 실행됩니다.
Vigenère 암호를 깰 수 있는 이유
길이가 L인 키워드는 L번째마다 오는 글자를 모두 같은 시프트로 암호화합니다. 그래서 1번째, (L+1)번째, (2L+1)번째 글자를 차례로 모으면 그 묶음의 모든 글자는 같은 양만큼 옮겨진 것이며 — 평범한 카이사르 암호를 이룹니다. L개의 시작 위치 각각에 대해서도 똑같습니다. 따라서 Vigenère 암호는 하나의 어려운 문제가 아니라 함께 쌓인 L개의 쉬운 문제이며, 여러분과 평문 사이를 가로막는 유일한 것은 L을 알아내는 일입니다.
키 길이를 알고 나면 각 열은 영어의 치우친 글자 빈도를 그대로 간직하되 단 하나의 시프트로 이름표만 다시 붙은 상태입니다. 이것이 바로 고전 빈도 분석이 다루도록 만들어진 상황입니다. 그러므로 Vigenère를 깨는 기술 전체는 하나의 물음으로 귀결됩니다. 키는 얼마나 긴가?
일치 지수로 키 길이 찾기
일치 지수는 텍스트에서 무작위로 고른 두 글자가 같을 확률을 측정합니다. 평범한 영어는 글자가 매우 고르지 않게 쓰이기 때문에 약 0.066 근처에 있고, 완전히 무작위인 텍스트는 0.038에 가깝습니다. 암호문을 올바른 개수의 열로 나누면 각 열이 단일 치환이 되어 그 일치 지수가 영어 값 쪽으로 다시 튀어 오릅니다. 틀린 개수로 나누면 열은 평탄하고 무작위처럼 보이는 0.038에 머뭅니다.
이 도구는 1부터 여러분이 정한 최댓값까지 모든 키 길이를 시도해 각각에 대한 평균 열 일치 지수를 측정하고, 그 결과를 막대 차트로 그립니다. 실제 길이는 키 큰 막대로 두드러지며 — 그 배수도 마찬가지인데, 길이 10이면 5개씩 묶인 모든 묶음도 가지런히 맞아떨어지기 때문입니다. 이런 배수 모호성 때문에 이 도구는 가장 높은 막대를 그저 믿지 않습니다. 다음 절들에서 그 이유를 설명합니다.
카시스키 검사
키 길이를 찾는 두 번째이자 더 오래된 방법이 있는데, 1863년 프리드리히 카시스키가 발견했습니다. THE 같은 흔한 단어가 키워드의 같은 부분과 두 번 맞물리면, 두 번 모두 같은 암호문 시퀀스로 암호화됩니다. 그렇게 반복된 두 위치 사이의 거리는 반드시 키 길이의 정수 배수여야 하므로 — 키 길이가 그 거리를 나누어떨어지게 합니다. 반복되는 시퀀스를 여럿 찾아 간격을 재면, 키 길이는 그 간격들의 공약수 가운데 숨어 있습니다.
이 도구는 암호문에서 반복되는 세 글자 시퀀스를 훑어 그 사이의 간격을 모으고, 각 후보 약수가 몇 개의 간격을 나누어떨어지게 하는지 셉니다. 가장 많은 지지를 받는 약수가 가장 유력한 키 길이입니다. 이는 일치 지수와는 독립된 별도의 증거 패널로 표시되어, 서로 다른 두 기법이 답에 대해 합의를 이룰 수 있게 합니다.
각 열을 풀고 키워드 읽어내기
키 길이가 정해지면 모든 열이 카이사르 암호이고, 카이사르 암호는 곧바로 무너집니다. 각 열에 대해 솔버는 스물여섯 가지 시프트를 모두 시도하고, 그중 해독된 글자가 영어의 기대 빈도에 가장 잘 맞는 것을 카이제곱 검정으로 측정해 남깁니다. 한 열의 우승 시프트는 키워드의 글자 하나입니다. 시프트 11은 L, 시프트 4는 E, 이런 식입니다. 우승 시프트를 순서대로 읽으면 키워드가 저절로 철자됩니다.
복원된 그 키워드로 메시지 전체를 해독하면 원래의 대소문자, 띄어쓰기, 문장 부호가 정확히 제자리에 돌아온 평문이 나옵니다. 만약 복원된 키가 우연히 반복형이라면 — 이를테면 실제 키가 LEMON인데 LEMONLEMON으로 나왔다면 — 이 도구는 그것을 가장 짧은 주기로 줄여, 여러분이 언제나 진짜 최소 키워드를 보게 합니다.
먼저 풀고 나서 검증하기 — 바이그램이 중요한 이유
순진한 솔버는 일치 지수에서 키 길이를 골라내고 거기서 멈춥니다. 그러나 두 가지 흔한 경우에 어긋납니다. 반복이 많은 메시지는 통계를 일그러뜨릴 수 있고, 실제 길이는 그 약수와 쉽게 혼동됩니다. 이 도구는 모든 후보 길이에서 풀어 본 다음 각 해독이 실제로 얼마나 영어처럼 읽히는지로 결과를 판정해 그 함정을 피합니다 — 먼저 풀고, 다음에 검증하는 것입니다.
판정 기준은 놀랄 만큼 속이기 쉬운 낱글자 빈도가 아닙니다. 살짝 틀린 키도 그럴듯한 글자 조합을 우연히 갖춘 뒤죽박죽 텍스트를 만들어낼 수 있기 때문입니다. 대신 이 도구는 각 해독을 바이그램으로 채점합니다 — 인접한 모든 글자 쌍의 우도를, 방대한 영어 자료에서 학습한 값으로 따집니다. 진짜 영어는 TH, HE, ER 같은 쌍이 풍부하고 QJ나 ZX는 거의 나오지 않으므로, 키 글자 하나만 틀려도 있을 수 없는 쌍이 끼어들어 점수가 가라앉습니다. 바이그램 적합도가 가장 좋은 해독이 이기고, 동점일 때는 더 짧은 키가 우선하는데, 이것이 평범한 카이사르 암호가 올바르게 한 글자짜리 키로 귀결되는 이유입니다.
얼마나 많은 텍스트가 필요하며, 언제 어려워지는가
각 열을 빈도 분석으로 풀기 때문에 중요한 것은 각 열에 몇 글자가 들어가느냐 — 즉 전체 길이를 키 길이로 나눈 값입니다. 열마다 글자가 대략 마흔 개 이상이면 복원은 키와 평문 모두 대개 정확합니다. 글자 이백 개짜리 한 문단이면 짧은 키는 손쉽게 깨지지만, 글자 열 몇 개짜리 더 긴 키는 확실히 하려면 수백 글자의 암호문을 필요로 합니다.
암호문이 키에 비해 짧으면 열이 얄팍해지고 열별 빈도 집계가 잡음이 많아집니다. 그래도 솔버는 아무것도 내놓지 않는 대신 최선의 결과를 돌려줍니다 — 흔히 키 글자가 한두 개 어긋났지만 여전히 읽을 만한 아슬아슬한 근사치입니다. 결과가 거의 맞아 보인다면, 보통의 해법은 단순히 암호문을 더 넣거나 차트를 써서 키 길이를 손으로 살짝 조정하는 것입니다. 이 암호는 잴 만한 텍스트가 정말로 부족할 때만 버팁니다.
자주 묻는 질문
정말 키 없이 Vigenère 암호를 깰 수 있나요?
솔버는 어떻게 키 길이를 찾나요?
일치 지수란 무엇인가요?
카시스키 검사란 무엇인가요?
복원된 키가 살짝 틀릴 수 있는 이유는 무엇인가요?
암호문이 얼마나 필요한가요?
이 도구는 왜 낱글자 빈도가 아니라 바이그램을 확인하나요?
특정 키 길이를 강제할 수 있나요?
Beaufort, Gronsfeld이나 다른 다중 치환 암호에도 통하나요?
제 암호문이 서버로 전송되나요?
이것은 Vigenère 암호 도구와 무엇이 다른가요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요