T

Text Machine

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

단일 치환 암호 해독기

단일 치환 암호나 크립토그램을 붙여넣으면 키를 몰라도 원래 메시지를 복원합니다. 해독기는 먼저 글자 빈도를 맞춰 시작 추정을 만든 다음, 영어 trigram으로 채점하는 simulated annealing을 사용해 26글자 알파벳을 탐색하면서 가장 영어처럼 읽히는 해독 결과를 찾아냅니다. 모든 과정은 브라우저에서 실행됩니다.

샘플 사용해 보기:

암호문

위에 치환 암호를 붙여넣고 풀기를 누르면, 복원된 메시지와 치환 알파벳이 여기에 표시됩니다. 글을 많이 줄수록 답이 더 정확해집니다.

치환 암호 해독기 사용 방법

  1. 1

    암호문 붙여넣기

    치환 암호나 크립토그램을 복사해 상자에 붙여넣으세요. 글이 많을수록 더 안정적으로 풀립니다. 글자는 대소문자에 상관없이 읽히고, 공백, 숫자, 문장 부호는 풀이 중에는 무시되었다가 답에 다시 복원됩니다.

  2. 2

    풀기 누르기

    암호 풀기를 클릭하세요. 탐색은 잠시 실행되며 — 수십만 개의 후보 알파벳을 시도합니다 — 그런 다음 찾아낸 가장 영어다운 해독 결과를 보여줍니다.

  3. 3

    복원된 메시지 읽기

    해독된 텍스트가 원래의 대소문자, 띄어쓰기, 문장 부호가 복원된 채로 나타납니다. 한 번의 클릭으로 복사해 결과를 보관하세요.

  4. 4

    복원된 알파벳 확인하기

    메시지 아래에 치환 알파벳이 각 암호문 글자가 무엇으로 해독되었는지 보여줍니다. 흐리게 표시된 글자는 텍스트에 한 번도 나오지 않아 해독기가 배치할 수 없었습니다. 알파벳을 복사해 재사용하거나 키를 검증하세요.

  5. 5

    공유하거나 지우기

    정확히 당신의 암호문으로 도구를 다시 여는 공유 링크를 복사하세요 — 텍스트는 해시 뒤의 URL 부분에 실려 가는데, 그 부분은 서버에 결코 도달하지 않습니다. 지우기는 모든 것을 초기화합니다.

치환 암호 해독, 쉽게 설명하기

이 도구가 하는 일

단일 치환 암호는 알파벳의 모든 글자를 다른 글자로 바꿉니다 — A는 Q가 되고, B는 W가 될 수 있습니다 — 그리고 그렇게 뒤섞인 알파벳을 메시지 전체에 동일하게 사용합니다. 이는 신문 크립토그램, 방탈출 퍼즐, 그리고 미국 크립토그램 협회의 Aristocrat 뒤에 있는 암호입니다. 가능한 알파벳은 4백 셉틸리언이 넘어 하나씩 시도하기에는 너무 많지만, 그래도 치환 암호는 모든 암호 중에서 가장 깨기 쉬운 것 중 하나입니다. 이 도구는 키 없이 자동으로 그것을 대신 깨드립니다.

암호문을 붙여넣으면 해독기는 가장 가능성 높은 원래 메시지와 함께, 복원한 전체 치환 알파벳을 돌려줍니다. 숙련된 퍼즐 풀이꾼이 하는 방식 그대로 작동합니다 — 글자 빈도에서 시작한 다음, 텍스트가 더 영어처럼 읽히게 만드는 변경을 유지하면서 글자를 계속 바꿔봅니다 — 다만 1초에 수십만 번씩 그렇게 합니다. 어떤 것도 브라우저를 벗어나지 않으며, 모든 탐색은 사용자 본인의 기기에서 실행됩니다.

치환 암호가 깨질 수 있는 이유

치환 암호는 어떤 글자가 어떤 글자인지는 숨기지만, 각 글자가 얼마나 자주 쓰이는지는 숨기지 못합니다. 영어에서 E는 다른 어떤 글자보다 훨씬 흔하며, 그 뒤를 T, A, O, I, N이 잇고, J, Q, X, Z는 드뭅니다. 암호화는 그 빈도에 단지 다른 이름표를 붙일 뿐입니다: E를 대신하는 글자가 무엇이든 그것이 암호문에서 가장 흔한 글자가 됩니다. 바로 그 한 가지 사실 — 글자 빈도가 치환을 거쳐도 살아남는다는 점 — 이 모든 암호 해독학이 세워진 갑옷의 균열입니다.

빈도만으로는 충분치 않은데, 여러 글자가 비슷한 개수를 가져 실수로 서로 바뀔 수 있기 때문입니다. 더 깊은 신호는 글자들이 어떻게 결합하는지에 있습니다. 영어는 어떤 패턴을 좋아하고 — TH, HE, ING, THE, AND — 다른 패턴은 거의 전혀 쓰지 않습니다. 올바른 해독 결과에는 그런 자연스러운 패턴이 가득하고, 잘못된 결과에는 진짜 영어가 결코 쓰지 않는 조합이 박혀 있습니다. 그 차이를 측정하는 것이 바로, 그럴듯해 보이는 수많은 오답 가운데서 컴퓨터가 정답을 알아보게 해주는 것입니다.

1단계: 빈도에 맞춘 시작 추정

해독기는 먼저 암호문에서 각 글자가 얼마나 자주 나오는지 세고, 그 개수를 알려진 영어 빈도 순서에 맞춰 정렬합니다. 가장 흔한 암호문 글자는 E로 추정하고, 그다음은 T, 이어서 A, O, I, N 순으로 목록을 따라 내려갑니다. 이것은 모든 크립토그램 풀이꾼이 손으로 익히는 고전적인 첫 수입니다.

그 추정이 완벽한 경우는 드뭅니다 — 특히 드문 글자일수록 잘못 배치되기 쉽습니다 — 하지만 완벽할 필요는 없습니다. 탐색이 시작하기에 합리적인 지점을 줄 만큼만 가까우면 됩니다. 거기서부터 도구는 메시지가 또렷하게 잡힐 때까지 알파벳을 한 글자씩 다듬어 갑니다.

2단계: simulated annealing이 키를 찾는다

시작 추정에서부터 해독기는 두 글자의 평문 의미를 거듭 맞바꾸며, 이제 메시지가 더 영어처럼 읽히는지 묻습니다. 맞바꿈이 도움이 되면 유지합니다. 문제는 항상 즉각적인 개선만 고집하면 탐색이 어떤 단일 맞바꿈으로도 벗어날 수 없는 거의-정답 — 지역 최적해 — 에 갇힌다는 점입니다. 치환 암호 풀이는 바로 이것을 해결하는 simulated annealing이라 불리는 기법의 교과서적인 사례입니다.

Simulated annealing은 때때로 상황을 잠시 더 나쁘게 만드는 맞바꿈도 받아들이는데, 그 확률은 처음에는 높았다가 꾸준히 낮아집니다 — 마치 탐색이 처음에는 뜨겁다가 천천히 식는 것처럼 말입니다. 초반에는 자유롭게 돌아다니며 막다른 길에서 빠져나오고, 후반에는 안정되어 찾아낸 최선의 알파벳을 다듬습니다. 도구는 이를 서로 다른 시작점에서 여러 번 실행하고, 각 실행을 엄격한 개선-전용 단계로 마무리한 뒤, 단 하나의 최선 결과만 유지합니다 — 바로 이 때문에 단순한 언덕 오르기로는 놓칠 답도 안정적으로 찾아냅니다.

해독기가 영어를 판단하는 법: trigram 적합도

모든 후보 알파벳은 단 하나의 숫자, 즉 trigram 적합도로 채점됩니다. 도구는 해독된 텍스트에서 연속된 세 글자의 모든 묶음을 살펴보고, 방대한 영어 글에서 만든 세 글자 빈도표를 사용해 각 묶음이 실제 영어에서 얼마나 가능성이 있는지를 합산합니다. THE, AND, ING 같은 흔한 묶음은 높은 점수를 받고, 영어가 결코 쓰지 않는 묶음은 형편없는 점수를 받습니다.

Trigram이 중요한 이유는 한 글자 빈도는 너무 속이기 쉽기 때문입니다 — 잘못된 키도 글자 개수는 맞추면서 여전히 헛소리일 수 있습니다. 그럴듯한 세 글자 조합으로 한 페이지를 통째로 위조하기는 훨씬 어렵습니다. 모든 맞바꿈을 더 높은 trigram 적합도 쪽으로 몰아감으로써, 탐색은 한 번의 맞바꿈마다 진짜 영어 쪽으로 끌려갑니다. 이 표는 이 사이트 자체의 글에서 생성되므로, 외부에서 가져오는 것이 없고 도구는 빠르고 비공개로 유지됩니다.

얼마나 많은 텍스트가 필요한가, 그리고 언제 어려운가

치환 암호를 깨는 일은 통계적인 작업이라, 입력하는 텍스트 양에 흥하고 망합니다. 보통의 영어로 대략 백오십 글자 이상이면 복원은 대개 거의 완벽합니다. 팔십에서 백 글자 정도면 여전히 작동하지만, 드문 글자 한둘 — 거의 나오지 않는 J, Q, X, Z — 은 잘못 읽힐 수 있는데, 그것들을 고정할 만한 증거가 충분치 않기 때문입니다. 약 오십 글자 아래에서는 사람이든 기계든 어떤 해독기도 대체로 추측에 의존하게 됩니다.

메시지를 더 어렵게 만드는 것이 몇 가지 더 있습니다: 흔한 글자를 일부러 피하는 텍스트(예: 팬그램), 영어가 아닌 글, 또는 글자에 이름표만 다시 붙이는 게 아니라 글자 위치까지 옮기는 암호입니다. 해독 결과가 거의 맞게 나올 때, 답은 거의 항상 암호문을 더 넣거나, 끈질긴 한두 글자를 직접 눈으로 고치는 것입니다. 텍스트가 단순 치환이 전혀 아니라면, Cipher Identifier가 실제로 무엇을 보고 있는지 알려줄 수 있습니다.

치환 암호와 그 사촌들

단어 구분을 유지하는 단순 치환을 크립토그램 출제자들은 Aristocrat이라 부르고, 공백을 떼어낸 같은 암호는 Patristocrat입니다. 둘 다 단일 치환 — 메시지 전체에 고정된 알파벳 하나 — 이며, 둘 다 여기 방법으로 함락됩니다. Caesar와 Atbash는 그저 특수하고 더 단순한 치환일 뿐이라, 이 도구가 그것들도 깹니다. 다만 각각의 전용 페이지가 즉시 풀어주긴 합니다.

난이도가 크게 뛰는 단계는 다중 치환 암호인데, 진행하면서 알파벳을 바꾸기 때문에 같은 글자가 여러 다른 글자를 대신할 수 있습니다. Vigenère 암호가 유명한 예이며, 메시지 전체에 대한 빈도 분석은 더 이상 통하지 않습니다. 메시지가 이 해독기에 저항하고 글자 빈도가 수상하리만치 평평해 보인다면, 다중 치환일 수 있습니다 — 대신 Vigenère Solver를 사용하세요.

자주 묻는 질문

정말 키 없이 치환 암호를 풀 수 있나요?
네. 치환 암호는 어떤 글자가 어떤 글자인지는 숨기지만 각 글자가 얼마나 자주 쓰이는지는 숨기지 못하며, 영어의 글자 및 세 글자 묶음 빈도는 매우 특징적입니다. 해독기는 그 빈도에서 시작한 다음, 해독 결과가 가장 영어처럼 읽히는 알파벳을 탐색하여, 사전에 아무것도 제공하지 않고도 메시지와 키를 모두 복원합니다.
이 도구는 어떤 종류의 암호를 푸나요?
단일 치환 암호를 풉니다 — 뒤섞인 고정 알파벳 하나가 메시지 전체의 글자를 대체하는 종류입니다. 여기에는 신문 크립토그램, Aristocrat과 Patristocrat, 키워드 알파벳 암호, 그리고 Caesar와 Atbash 같은 더 단순한 경우가 포함됩니다. 진행하면서 알파벳을 바꾸는 Vigenère 같은 다중 치환 암호는 풀지 못합니다.
해독기는 어떻게 작동하나요?
두 단계로 작동합니다. 먼저 암호문 글자 빈도를 영어에 맞춰 시작 추정을 만듭니다. 그다음 simulated annealing을 사용합니다 — 두 글자를 거듭 맞바꾸며 텍스트를 더 영어답게 만드는 맞바꿈을 유지하되, 막다른 길을 벗어나기 위해 때때로 후퇴도 받아들입니다 — 세 글자 조합이 얼마나 자연스러운지로 채점합니다. 여러 번 실행하고 최선의 결과를 유지합니다.
왜 글자 빈도 대신 trigram 채점을 사용하나요?
한 글자 빈도는 여전히 헛소리를 만들어내는 키로도 맞출 수 있어서, 정답을 알아보기에 그것만으로는 충분치 않습니다. Trigram 적합도는 세 글자의 모든 묶음을 실제 영어에 견주어 채점하는데, 거기서 THE, AND, ING는 흔하고 대부분의 묶음은 극히 드뭅니다. 잘못된 키는 부자연스러운 묶음을 만들어 낮은 점수를 받으며, 이로써 탐색이 진짜 해독 결과로 좁혀 들어갈 수 있습니다.
크립토그램을 깨려면 텍스트가 얼마나 필요한가요?
거의 완벽한 풀이를 위해서는 보통의 영어로 적어도 백오십 글자를 목표로 하세요. 팔십에서 백 글자 정도면 대개 작동하지만 드문 글자 한둘은 잘못 읽힐 수 있습니다. 약 오십 글자 아래에서는 어떤 해독기도 확신할 만한 통계적 증거가 거의 없으므로, 부분적인 해독만 기대하세요.
결과가 거의 맞는데 몇 글자가 틀려요. 왜죠?
J, Q, X, Z 같은 드문 글자는 너무 드물게 나와서 짧은 메시지에는 그것들을 확신 있게 배치할 만큼 충분히 들어있지 않을 수 있고, 비슷한 빈도의 두 글자는 가끔 서로 바뀔 수 있습니다. 해결책은 보통 암호문을 더 넣거나, 나머지 메시지가 읽히게 된 뒤 어긋난 한두 글자를 직접 눈으로 고치는 것입니다.
공백을 유지하는 크립토그램(Aristocrat)도 푸나요?
네. 공백, 숫자, 문장 부호는 결과에 보존되지만 풀이 중에는 무시되므로, 단어 구분은 도움도 방해도 되지 않습니다. 당신의 퍼즐이 공백을 유지하든(Aristocrat) 제거하든(Patristocrat), 동일한 빈도-그리고-trigram 방법이 메시지를 복원합니다.
해독기는 결정론적인가요?
네. 무작위 탐색을 사용하긴 하지만, 그 무작위성은 고정된 시드로 구동되므로 같은 암호문은 항상 같은 결과를 냅니다. 그것은 또한 공유 링크가 그것을 여는 누구에게나 정확히 같은 풀이를 재현한다는 뜻이기도 합니다.
영어에서만 작동하나요?
내장된 빈도표와 trigram 표는 영어를 기술하므로, 영어 평문에 맞춰져 있습니다. 다른 언어로 된 메시지는 탐색이 성공하더라도 대개 말이 안 되는 결과로 나오는데, 잘못된 통계에 맞추고 있기 때문입니다. 영어가 아닌 텍스트에는 그 언어의 빈도 데이터가 필요합니다.
제 암호문이 서버로 전송되나요?
아니요. 모든 탐색이 브라우저에서 실행되므로, 당신의 텍스트는 결코 업로드되거나 기록되거나 저장되지 않습니다. 공유 링크조차 당신의 암호문을 해시 뒤의 URL 부분에 보관하는데, 브라우저는 그 부분을 결코 서버로 전송하지 않으므로, 당신이 공유하기로 선택하지 않는 한 비공개로 유지됩니다.
치환 암호가 전혀 아니면 어떻게 하나요?
풀이 결과가 헛소리로 나오고 글자 빈도가 유난히 평평해 보인다면, 그 메시지는 다중 치환이거나 전치 기반이거나 아예 다른 무언가일 수 있습니다. Cipher Identifier를 실행해 무엇을 다루고 있는지 알아낸 다음, 맞는 도구를 사용하세요 — 예를 들어 반복 키 암호라면 Vigenère Solver를 쓰면 됩니다.

관련 도구

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

암호 식별기

빈도 분석

유닉스 타임스탬프 변환기

JSON ↔ CSV 변환기

CSV를 JSON으로 변환기

JSON ↔ YAML 변환기