T

Text Machine

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

일치 지수(IC) 계산기

텍스트의 글자 분포가 얼마나 치우쳐 있는지 재고, 열 단위 표에서 키 길이를 바로 읽어 냅니다.

예시:

텍스트

텍스트를 붙여넣으면 측정합니다. 카이사르 예시와 비제네르 예시는 영어 예시와 같은 문장이므로, 암호 방식에 따라 숫자가 어떻게 달라지는지 바로 볼 수 있습니다.

일치 지수 계산기 사용 방법

  1. 1

    텍스트 붙여넣기

    평문이나 암호문을 입력란에 넣으세요. A부터 Z까지의 글자만 계산에 들어가고 대소문자, 공백, 숫자, 문장 부호는 무시하므로 서식이 숫자를 흔들지 않습니다.

  2. 2

    지수 읽기

    원값은 무작위로 뽑은 두 글자가 같은 글자일 확률입니다. 정규화 값은 그 값을 균등 알파벳 기준으로 환산한 것으로, 1.00이면 무작위이고 1.73 정도면 영어입니다.

  3. 3

    어떤 암호인지 판단하기

    0.066 근처면 글자 분포가 그대로 살아 있으니 평문이거나 단순 치환입니다. 0.038 근처면 분포가 평평해진 것이니 반복 키 암호를 의심하세요.

  4. 4

    열 단위 표에서 키 길이 찾기

    다중 치환으로 보인다면, 열 단위 IC가 0.066 쪽으로 다시 올라가는 가장 짧은 길이를 찾으세요. 그것이 키 길이이며 비제네르 솔버에 넣을 숫자입니다.

일치 지수 이해하기

숫자 하나가 답하는 질문 하나

일치 지수는 좁은 질문 하나에 답합니다. 텍스트에 손을 두 번 넣어 글자를 하나씩 꺼냈을 때, 같은 글자가 두 번 나올 확률은 얼마인가. 26개 글자가 똑같이 흔한 주머니라면 26분의 1, 약 0.0385입니다. 영어는 그 두 배에 가까운 0.066 정도입니다. 영어가 고른 주머니가 아니기 때문입니다. E, T, A, O가 엄청난 몫을 차지하고 J, Q, X, Z는 거의 나오지 않습니다.

이 차이가 이 통계량의 쓸모 전부입니다. 이름표를 바꿔도 값은 그대로입니다. 모든 A를 Q로, 모든 Q를 A로 바꾸면 개수는 자리를 옮기지만 치우침 자체는 그대로라 지수가 변하지 않습니다. 반면 여러 알파벳에 흩뿌리면 값은 버티지 못하는데, 반복 키 암호가 하는 일이 정확히 그것입니다.

알 수 있는 것과 알 수 없는 것

IC가 0.066 근처라면 글자 분포가 그대로라는 뜻입니다. 평범한 평문, 카이사르 이동, 아트배시 반전, 모든 단순 치환 암호가 여기에 해당합니다. 단일 치환 암호를 이 숫자가 아니라 빈도 분석으로 깨는 이유가 그것입니다.

IC가 0.038 근처라면 분포가 평평해졌다는 뜻입니다. 평문 글자 하나가 여러 암호문 글자로 대응되고 있다는 신호이고, 비제네르 계열이거나 진짜 무작위 문자열입니다.

그 사이 값은 대개 암호가 특이해서가 아니라 텍스트가 짧아서 나옵니다. 100글자 아래에서는 지수가 오해를 부를 만큼 튀고, 300글자 아래에서는 결론이 아니라 힌트로 다루는 편이 낫습니다.

실제로 일하는 부분은 열 단위 표

텍스트 전체의 값 하나는 암호의 종류를 알려 줍니다. 키 길이를 찾으려면 한 단계가 더 필요한데, 대부분의 계산기가 빼먹는 단계가 바로 이것입니다.

글자를 L개의 더미로 나눠 봅시다. 1번, L+1번, 2L+1번 글자는 첫 번째 더미로, 2번, L+2번 글자는 두 번째 더미로 넣는 식입니다. L이 진짜 키 길이라면 한 더미 안의 글자는 모두 같은 키 글자로 이동한 것이므로, 그 더미는 영어를 카이사르로 옮긴 것이고 영어의 치우침을 그대로 지닙니다. L이 틀리면 각 더미에 서로 다른 이동량이 섞여 평평해집니다.

그래서 더미들의 평균 IC는 진짜 키 길이와 그 배수에서 올라갑니다. 표를 내려 읽으며 처음 값이 뛰는 길이를 찾는 것이 비제네르 키 길이를 찾는 고전적인 방법이고, 실제 텍스트에서는 프리드먼 공식보다 더 잘 맞습니다.

다음 단계

열 단위 표가 어떤 길이를 가리킨다면, 카시스키 검사가 자연스러운 두 번째 의견입니다. 글자 통계가 아니라 반복 구간 사이의 거리에서 출발하므로 실패하는 지점이 다릅니다. 서로 다른 두 방법이 같은 숫자를 가리키면 어느 한쪽보다 훨씬 강한 근거가 됩니다.

길이에 확신이 서면 비제네르 솔버가 암호문을 그 개수의 열로 나누고 각 열을 카이사르 암호로 깨서 키워드와 평문을 돌려줍니다.

자주 묻는 질문

일치 지수가 무엇인가요?
텍스트에서 무작위로 글자 두 개를 뽑았을 때 같은 글자가 나올 확률입니다. 식으로 쓰면 각 글자의 등장 횟수 n에 대해 n(n-1)을 모두 더한 뒤 전체 글자 수 N에 대해 N(N-1)로 나눈 값입니다. 영어는 소수의 글자가 대부분을 차지해서 0.066 근처가 나오고, 균등한 무작위 알파벳은 26분의 1, 즉 0.0385 정도가 나옵니다.
다른 계산기와 값이 다른 이유는 무엇인가요?
거의 언제나 정규화 때문입니다. 어떤 도구는 확률 원값을 그대로 보여 주고 어떤 도구는 26을 곱하므로, 같은 텍스트가 0.0667로도 1.73으로도 보입니다. 여기서는 두 값을 모두 표시합니다. 나머지 흔한 원인은 공백이나 숫자까지 글자로 센 경우인데, 이 도구는 A부터 Z까지만 셉니다.
일치 지수로 키 길이를 어떻게 찾나요?
값 하나만으로는 찾지 못합니다. 키 길이를 찾는 것은 암호문을 L개의 열로 나눠 각 열을 따로 재는 작업입니다. 진짜 L에서는 모든 열이 같은 이동량으로 암호화되어 영어의 IC를 유지하고, 틀린 L에서는 열이 뒤섞여 평평하게 남습니다. 열 단위 표는 모든 후보를 나란히 보여 줍니다.
프리드먼 추정값은 믿어도 되나요?
1922년에 나온 공식으로, IC 하나에서 대략적인 키 길이를 뽑아냅니다. 열 단위 표 옆에 두고 검산용으로 쓰기에는 좋지만 단독으로 쓰기에는 틀리는 경우가 잦고 특히 짧은 텍스트에서 그렇습니다. 텍스트가 이미 평문만큼 뭉쳐 있거나 IC를 낼 수 없을 만큼 짧으면 줄표가 나옵니다. 이 공식은 반복 키가 텍스트를 평평하게 만들었다고 전제하므로, 그 범위 밖에서는 추정할 대상 자체가 없고 어떤 숫자를 내놓아도 지어낸 것이 됩니다.
5, 10, 15가 모두 잘 나오는 이유는 무엇인가요?
10개 열로 나누는 것은 진짜 5개 열을 반씩 다시 나눈 것이라, 각 조각이 여전히 같은 이동량을 유지하기 때문입니다. 진짜 길이의 배수는 모두 그 점수를 물려받습니다. 정답은 그 계열에서 가장 짧은 값이고, 그래서 추천 목록에서 배수를 걸러 냅니다.
텍스트가 어떤 언어인지 알 수 있나요?
아주 대략적으로만 가능합니다. 비교 표는 입력한 텍스트가 공개 기준값 대비 어디쯤인지 보여 주지만, 값이 비슷한 언어가 여럿이고 표본이 짧으면 그 차이보다 더 크게 흔들립니다. 자연어인지 무작위처럼 보이는 텍스트인지 가르는 용도로 쓰고, 프랑스어인지 스페인어인지 고르는 데는 쓰지 마세요.
입력한 텍스트가 브라우저 밖으로 나가나요?
나가지 않습니다. 계산 전체가 페이지 안에서 이뤄집니다. 어디에도 업로드하거나 기록하거나 저장하지 않습니다.

관련 도구

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

카시스키 검사

비제네르 해독기

빈도 분석

암호 식별기

치환 암호 해독기

유닉스 타임스탬프 변환기