일치 지수(IC) 계산기
텍스트의 글자 분포가 얼마나 치우쳐 있는지 재고, 열 단위 표에서 키 길이를 바로 읽어 냅니다.
예시:
텍스트를 붙여넣으면 측정합니다. 카이사르 예시와 비제네르 예시는 영어 예시와 같은 문장이므로, 암호 방식에 따라 숫자가 어떻게 달라지는지 바로 볼 수 있습니다.
일치 지수 계산기 사용 방법
- 1
텍스트 붙여넣기
평문이나 암호문을 입력란에 넣으세요. A부터 Z까지의 글자만 계산에 들어가고 대소문자, 공백, 숫자, 문장 부호는 무시하므로 서식이 숫자를 흔들지 않습니다.
- 2
지수 읽기
원값은 무작위로 뽑은 두 글자가 같은 글자일 확률입니다. 정규화 값은 그 값을 균등 알파벳 기준으로 환산한 것으로, 1.00이면 무작위이고 1.73 정도면 영어입니다.
- 3
어떤 암호인지 판단하기
0.066 근처면 글자 분포가 그대로 살아 있으니 평문이거나 단순 치환입니다. 0.038 근처면 분포가 평평해진 것이니 반복 키 암호를 의심하세요.
- 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는 진짜 키 길이와 그 배수에서 올라갑니다. 표를 내려 읽으며 처음 값이 뛰는 길이를 찾는 것이 비제네르 키 길이를 찾는 고전적인 방법이고, 실제 텍스트에서는 프리드먼 공식보다 더 잘 맞습니다.
다음 단계
열 단위 표가 어떤 길이를 가리킨다면, 카시스키 검사가 자연스러운 두 번째 의견입니다. 글자 통계가 아니라 반복 구간 사이의 거리에서 출발하므로 실패하는 지점이 다릅니다. 서로 다른 두 방법이 같은 숫자를 가리키면 어느 한쪽보다 훨씬 강한 근거가 됩니다.
길이에 확신이 서면 비제네르 솔버가 암호문을 그 개수의 열로 나누고 각 열을 카이사르 암호로 깨서 키워드와 평문을 돌려줍니다.
자주 묻는 질문
일치 지수가 무엇인가요?
다른 계산기와 값이 다른 이유는 무엇인가요?
일치 지수로 키 길이를 어떻게 찾나요?
프리드먼 추정값은 믿어도 되나요?
5, 10, 15가 모두 잘 나오는 이유는 무엇인가요?
텍스트가 어떤 언어인지 알 수 있나요?
입력한 텍스트가 브라우저 밖으로 나가나요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요