코드와 암호

중학교컴퓨터 과학A부터 Z까지의 문자는 이동되거나 치환되며, 그 외 문자는 그대로 유지됩니다. 빈도 분석은 각 문자의 개수를 영어의 문자 빈도와 비교합니다.

패스로 이 실험실 잠금 해제

패스가 있으면 수업용 프레젠테이션 모드를 포함해 사이트의 모든 시뮬레이션을 이용할 수 있습니다. 아래의 수업 자료는 누구나 무료로 이용할 수 있습니다.

일회성 결제이며 구독은 없습니다.

이 실험 소개

수천 년 동안 사람들은 글자를 뒤섞어 메시지를 숨겨 왔습니다. 율리우스 카이사르는 알파벳에서 각 글자를 세 자리씩 이동시켰습니다. 이후에는 비밀 키워드로 글자를 바꾸거나 글자마다 이동하는 칸 수를 다르게 하는 암호가 등장했습니다. 이러한 암호는 모두 결국 해독되었으며, 글자별 출현 횟수를 세는 방법이 자주 사용되었습니다. 직접 메시지를 암호화하고 복호화해 보세요. 글자를 하나씩 따라가며 암호화 과정을 살펴본 다음, 빈도 분석으로 비밀 문구를 풀어 보세요.

학습 목표

  • 카이사르 암호, 키워드 치환 암호, 비즈네르 암호로 메시지 암호화 및 복호화하기
  • 알고리즘과 키의 차이 설명하기
  • 각 암호에서 가능한 키의 개수를 비교하고, 그것이 무차별 대입 공격에 어떤 의미인지 살펴보기
  • 글자 빈도를 사용해 카이사르 암호 해독하기
  • 현대 암호화에 단순한 글자 치환보다 훨씬 더 많은 것이 필요한 이유 설명하기

사용 방법

  1. 1예시 메시지를 카이사르 암호로 세 칸 이동해 암호화합니다. 글자를 하나씩 따라가며 각 글자가 원판을 따라 어떻게 이동하는지 살펴보세요.
  2. 2‘결과를 입력으로 사용’을 누르고 복호화하세요. 시프트 3을 되돌리려면 어떤 시프트를 해야 할까요? 시프트 13을 두 번 적용하면 어떻게 될까요?
  3. 3시저 암호에서 유용한 키는 25개뿐입니다. 손으로 모두 시도하려면 얼마나 걸릴까요? 컴퓨터로는 어떨까요?
  4. 4키워드 암호로 전환하세요. 키워드로부터 암호 알파벳을 어떻게 만들까요? 가능한 키가 훨씬 더 많아지는 이유는 무엇일까요?
  5. 5키를 LEMON으로 설정해 비즈네르 암호로 메시지를 암호화하세요. 메시지에서 반복되는 글자 중 암호화했을 때 서로 다른 두 글자가 되는 것을 찾으세요. 이것이 빈도 분석을 방어하는 데 어떻게 도움이 될까요?
  6. 6‘해독’을 여세요. 윤곽선이 막대와 일치할 때까지 시프트를 움직이세요. 복호화된 글이 의미가 통하는지 확인하세요.
  7. 7‘해독’에 아주 짧은 암호문을 붙여 넣으세요. 짧은 텍스트에서는 빈도 분석이 왜 덜 효과적일까요?

모델

시저 암호화(A = 0부터 Z = 25까지 문자에 번호를 매김)
시저 복호화
비즈네르 암호: 길이가 m인 키를 사용하며 글자마다 시프트가 바뀜
문자 빈도가 일반적인 영어의 빈도에서 얼마나 벗어나는지

가정

  • 교실에서 사용하는 암호와 마찬가지로 A부터 Z까지 26개의 문자만 암호화됩니다. 대소문자는 유지되고 나머지는 모두 변경 없이 복사됩니다.
  • 영어 문자 빈도는 공표된 표준값을 사용합니다. 빈도 분석은 숨겨진 텍스트가 일반적인 영어라고 가정합니다.
  • 키워드 암호에서는 중복 문자를 제외한 키워드를 적은 다음, 나머지 알파벳을 순서대로 적습니다.
  • 키워드 암호의 키 개수는 알파벳을 배열할 수 있는 모든 경우의 수, 즉 26! ≈ 4 × 10²⁶입니다.

수업에서 해 보기

  1. Q1시프트가 3인 카이사르 암호 KHOOR ZRUOG를 복호화하세요.
  2. Q2시프트가 26이면 왜 쓸모가 없나요?
  3. Q3키워드 암호에는 약 4 × 10²⁶개의 키가 있지만 쉽게 해독할 수 있습니다. 어떻게 해독하는지 설명하세요.
  4. Q4비제네르 암호는 왜 카이사르 암호보다 문자 빈도를 더 잘 숨기나요?
  5. Q5코드와 암호의 차이를 설명하세요.

자주 묻는 질문

실습이 영어 텍스트에서만 작동하는 이유는 무엇인가요?

이 역사적 암호들은 26개의 라틴 알파벳을 사용하며, 암호 해독 도구는 각 문자의 출현 횟수를 영어와 비교합니다. 다른 언어는 문자 빈도가 다르고, 중국어나 일본어 같은 문자 체계에는 완전히 다른 방법이 필요합니다.

비제네르 암호는 어떻게 해독되었나요?

1850년대와 1860년대에 찰스 배비지와 프리드리히 카시스키는 반복되는 문자 묶음으로 키의 길이를 알아낼 수 있음을 발견했습니다. 길이를 알고 나면 m번째마다 나타나는 문자는 각각 단순한 시저 암호가 되어 빈도 분석으로 해독할 수 있습니다.

이 방식은 인터넷에서 사용하는 암호화와 어떻게 다른가요?

AES 같은 현대 암호는 문자가 아니라 비트를 처리하고 여러 라운드에 걸쳐 비트를 섞으므로, 문자 출현 횟수로는 아무 정보도 알아낼 수 없습니다. RSA 같은 공개 키 방식은 두 사람이 한 번도 만나지 않고도 키를 합의할 수 있게 해 줍니다.