비제네르 암호
원하는 키워드로 비제네르 암호를 암호화하고 복호화하세요. 고전적인 비제네르, 자동 키, 보퍼트 변형을 자유롭게 전환하고, 인터랙티브 타불라 렉타를 따라가며 결과를 복사하거나 다운로드하고 링크로 공유할 수 있습니다. 모든 작업은 브라우저에서 실행됩니다.
고전 비제네르: 키워드가 메시지 전체에 걸쳐 반복되며 각 글자에 서로 다른 이동량을 더합니다.
위에 텍스트를 입력하면 결과가 여기에 표시됩니다.
타불라 렉타 (비제네르 정사각형)
왼쪽 열에서 키 글자를 찾고 맨 위 행에서 평문 글자를 찾으면, 두 줄이 만나는 칸이 바로 암호문 글자입니다. 키워드에 들어 있는 글자의 행이 강조됩니다.
비제네르 암호 사용 방법
- 1
암호화 또는 복호화 선택
평문을 암호문으로 바꾸려면 암호화를, 같은 키워드로 암호문을 다시 평문으로 바꾸려면 복호화를 선택하세요.
- 2
암호 변형 선택
고전 비제네르, 키가 절대 반복되지 않는 더 강력한 자동 키, 또는 가역적인 보퍼트 변형 중에서 고르세요. 키워드 아래의 짧은 힌트가 각각을 설명해 줍니다.
- 3
키워드 입력
LEMON 같은 키워드를 입력하세요. 키워드에서 A부터 Z까지의 알파벳만 사용되며, 메시지에 맞춰 자동으로 반복되거나 늘어납니다.
- 4
텍스트 입력 또는 붙여넣기
메시지를 입력하면 입력하는 즉시 암호가 적용됩니다. 알파벳은 암호화되고 공백과 숫자, 문장 부호는 변하지 않고 통과합니다.
- 5
복사, 다운로드, 공유
결과를 복사하거나 텍스트 파일로 다운로드하거나, 입력한 키워드와 텍스트, 설정을 그대로 다시 불러오는 링크로 공유하세요.
비제네르 암호 이해하기
비제네르 암호란 무엇인가요?
비제네르 암호는 키워드를 사용해 텍스트를 암호화하는 다중 알파벳 치환 암호입니다. 카이사르 암호처럼 모든 글자를 똑같은 고정된 양만큼 이동하는 대신, 키워드의 각 글자를 이용해 메시지의 각 글자에 서로 다른 이동량을 적용하며, 키워드를 끝없이 순환시킵니다. 같은 평문 글자가 위치에 따라 여러 다른 암호문 글자로 바뀔 수 있기 때문에, 이 암호는 단순한 암호를 손쉽게 깨뜨리게 만드는 단일 글자 빈도 패턴을 숨깁니다.
약 3세기 동안 이 암호는 깨뜨릴 수 없는 것으로 여겨졌고, 그 덕에 프랑스어로 le chiffre indéchiffrable, 즉 해독 불가능한 암호라는 별명을 얻었습니다. 오늘날에는 퍼즐과 방 탈출 게임, CTF 챌린지에서 즐겨 쓰이며, 키가 암호를 어떻게 강화하는지 보여 주는 고전적인 학습 사례로 남아 있습니다.
비제네르 암호화의 원리
먼저 LEMON 같은 키워드를 고릅니다. 키워드를 메시지 위에 반복해서 늘어놓아 평문의 모든 글자가 키의 한 글자와 짝을 이루게 합니다. 각 키 글자는 이동량을 나타냅니다. A는 0칸, B는 1칸, C는 2칸을 뜻하며 이런 식으로 Z까지 가면 25칸을 이동합니다. 암호화하려면 각 평문 글자에 그 키 글자를 더하고 알파벳을 순환시키며, 복호화하려면 대신 빼면 됩니다.
A부터 Z까지의 알파벳만 암호화되고 각 글자는 대문자나 소문자 형태를 그대로 유지합니다. 공백과 숫자, 문장 부호는 변하지 않고 통과하며 키 글자를 소비하지 않으므로, 키는 언제나 메시지의 실제 글자들과 정렬된 상태를 유지합니다.
실제 예시: 키워드 LEMON
문구 ATTACK AT DAWN과 키워드 LEMON을 예로 들어 봅시다. 반복한 키워드를 글자에 맞춰 늘어놓으면 LEMONLEMONLE가 됩니다. 각 평문 글자에 그 키 글자를 더하면, A plus L is L, T plus E is X, T plus M is F, 이런 식으로 진행해 암호문 LXFOPVEFRNHR가 만들어집니다. ATTACK의 두 T가 서로 다른 키 글자 아래에 놓이기 때문에 각각 X와 F라는 다른 암호문 글자가 된다는 점에 주목하세요. 바로 이것이 단순한 빈도 분석을 무력화하는 핵심입니다.
복호화하려면 같은 키워드로 과정을 거꾸로 진행해 각 키 글자를 빼거나, 타불라 렉타를 거꾸로 읽으면 됩니다. 키워드가 없으면 암호문은 거의 아무것도 드러내지 않습니다.
비제네르 공식과 타불라 렉타
글자를 A를 0, Z를 25로 해서 0부터 25까지 번호로 매기면, 암호화는 C = (P + K) mod 26이고 복호화는 P = (C - K) mod 26입니다. 여기서 P는 평문 글자, K는 현재 키 글자이며 mod 26이 알파벳을 순환하게 만듭니다. 같은 연산을 타불라 렉타, 즉 이동된 알파벳들을 모은 26 곱하기 26 격자를 이용해 손으로도 수행할 수 있습니다. 왼쪽에서 키 글자를 찾고 맨 위에서 평문 글자를 찾으면, 그 행과 열이 만나는 칸이 바로 암호문 글자입니다.
자동 키와 보퍼트 변형
자동 키 변형은 표준 암호의 가장 큰 약점인 반복되는 키를 보완합니다. 키워드가 다 떨어지면 키는 평문 자체로 이어지므로 흐르는 키가 절대 반복되지 않고 암호를 공격하기가 훨씬 어려워집니다. 복호화는 평문을 한 글자씩 복원해 그것을 다시 키 흐름에 되먹입니다.
보퍼트 변형은 C = (K - P) mod 26 공식을 사용합니다. 키에서 빼는 연산은 그 자체가 역원이므로 같은 연산으로 암호화와 복호화가 모두 되는데, 이 점 덕분에 한때 바다에서 쓰이던 암호 원반에 편리했습니다. 이 도구는 세 가지를 모두 지원하므로 같은 텍스트와 키워드로 비교해 볼 수 있습니다.
비제네르 암호를 깨는 방법
이 암호는 두 단계로 깹니다. 먼저 키워드의 길이를 찾는데, 고전적으로는 암호문에서 반복되는 글자 묶음을 찾아 그 사이의 간격을 재는 카시스키 검사를 쓰거나, 일치 지수를 이용하는 프리드먼 검정을 씁니다. 키 길이를 알아내면 암호문은 그만큼의 열로 나뉘는데, 각 열은 단일 카이사르 이동으로 암호화된 것이어서 일반적인 빈도 분석이 각 열을 따로따로 깨뜨립니다.
이는 긴 메시지에 짧은 키를 쓴 비제네르 암호는 상당히 깨기 쉽다는 뜻이며, 그래서 이 암호의 강도는 길고 반복되지 않는 키를 쓰는 데 크게 좌우됩니다. 자동 키와 일회용 패드라는 발상은 바로 그 반복을 없애려는 시도에서 직접 자라났습니다.
비제네르 암호의 짧은 역사
키워드를 사용해 알파벳을 전환한다는 발상은 1553년 조반 바티스타 벨라소가 처음 발표했으며, 요하네스 트리테미우스와 레온 바티스타 알베르티의 다중 알파벳 표를 바탕으로 한 것이었습니다. 이 방식은 훗날 프랑스 외교관 블레즈 드 비제네르의 공으로 잘못 돌려졌는데, 정작 그 자신의 연구는 더 강력한 자동 키 방식을 다루었음에도 그의 이름이 그대로 굳어 버렸습니다. 반복 키 암호는 여러 세기 동안 암호 분석가들을 막아 냈지만, 1850년대에 찰스 배비지가 비공개로 깨뜨렸고 1863년에 프리드리히 카시스키가 일반적인 방법을 발표하면서 무너졌습니다.
비제네르 암호는 안전한가요?
현대 기준으로는 아닙니다. 카시스키와 프리드먼 방법이 발표된 뒤로는 반복 키를 쓰는 어떤 비제네르 암호든 끈기만 있으면 깰 수 있고, 오늘날에는 컴퓨터로 즉시 깰 수 있습니다. 이제 그 진짜 가치는 교육용이자 오락용입니다. 키가 어떻게 사소한 암호를 훨씬 강력한 암호로 바꾸는지 가장 명확하게 보여 주는 방법이며, 퍼즐과 프로그래밍 연습 문제의 단골로 남아 있습니다. 실제 보안을 위해서는 AES 같은 현대 알고리즘을 대신 사용합니다.
자주 묻는 질문
비제네르 암호란 무엇인가요?
비제네르 암호는 카이사르 암호와 어떻게 다른가요?
키워드란 무엇이며 어떻게 사용되나요?
정답이 있는 비제네르 예시를 보여 줄 수 있나요?
타불라 렉타 또는 비제네르 정사각형이란 무엇인가요?
자동 키와 보퍼트 변형이란 무엇인가요?
비제네르 암호는 어떻게 깨거나 푸나요?
비제네르 암호는 왜 해독 불가능하다고 불렸나요?
비제네르 암호는 누가 발명했나요?
숫자나 공백, 문장 부호도 바꾸나요?
비제네르 암호는 안전한가요?
내 텍스트가 서버로 전송되나요?
비제네르 암호를 코드로 어떻게 작성하나요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요