카이사르 암호
글자판을 오른쪽으로 몇 칸 밀어 적어서, 약속된 규칙을 아는 사람끼리만 읽을 수 있게 만든 비밀 쪽지예요.
정의 카이사르 암호는 글자의 순서를 일정한 칸수만큼 뒤로 밀어서 다른 글자로 바꾸는 가장 오래되고 기초적인 암호 방식이에요. 원래 글자가 무엇인지 모르게 모양을 바꾸지만, 몇 칸을 밀었는지만 알면 누구나 다시 원래대로 읽을 수 있어요.
글자판을 옆으로 쓱 밀어내는 비밀 쪽지
친구와 비밀 쪽지를 주고받을 때 한글 자음을 한 칸씩 밀어 쓰기로 약속했다고 상상해 보세요. 'ㄱ' 대신 'ㄴ'을 쓰고, 'ㅂ' 대신 'ㅅ'을 쓰는 식이에요. 이렇게 쓰면 '밥'이라는 글자는 '솟'처럼 변해서 남들이 쉽게 알아채지 못해요.
고대 로마의 장군 율리우스 카이사르는 전쟁터에서 부하들과 중요한 작전 명령을 주고받을 때 바로 이 방식을 썼어요. 그는 알파벳 글자를 오른쪽으로 세 칸씩 뒤로 밀어서 비밀 편지를 작성했죠.
예를 들어 'A'는 'D'가 되고, 'B'는 'E'가 돼요. 알파벳 끝에 있는 'Z'는 다시 맨 앞으로 돌아가 'C'가 돼요. 이렇게 글자의 위치를 다른 글자로 1대1 맞바꾸는 방식을 단일 치환 암호라고 불러요. 편지를 배달하는 전령이 적군에게 붙잡혀도 내용을 들키지 않기 위한 지혜였어요.
열쇠 하나로 잠그고 푸는 대칭키의 조상
암호학에서는 누구나 읽을 수 있는 원래 문장을 '평문'이라 부르고, 읽지 못하게 바꾼 글을 '암호문'이라고 해요. 평문을 암호문으로 바꾸는 과정을 '암호화', 다시 원래 글자로 되돌려 푸는 과정을 '복호화'라고 불러요.
카이사르 암호에서 가장 중요한 핵심은 '글자를 몇 칸 밀었는가'예요. 암호학에서는 이 이동 칸수를 암호를 푸는 비밀키라고 불러요. 비밀키가 '3'이라면 세 칸을 밀고, 비밀키가 '5'라면 다섯 칸을 밀어 글자를 바꾸는 식이에요.
편지를 보낸 사람과 받는 사람은 서로 똑같은 비밀키 숫자를 미리 알고 있어야 해요. 3칸 밀어서 암호화했다면, 받는 사람은 반대로 3칸 당겨서 복호화해야 내용을 읽을 수 있죠. 보내는 쪽과 받는 쪽이 똑같은 열쇠를 쓴다는 점에서, 오늘날 널리 쓰이는 대칭키 암호화 방식의 가장 원시적인 조상이라고 볼 수 있어요.
조금 더 정확히 말하면: 왜 지금은 쓰지 못할까요?
조금 더 정확히 말하면, 카이사르 암호는 오늘날 컴퓨터 환경에서는 전혀 안전하지 않아요. 영문 알파벳은 총 26글자뿐이라, 글자를 밀어낼 수 있는 규칙의 가짓수가 1칸부터 25칸까지 딱 25가지에 불과하기 때문이에요.
공격자가 컴퓨터를 쓰지 않고 손으로 종이에 25가지 경우를 하나씩 적어보기만 해도 단 5분 만에 암호가 풀려버려요. 이렇게 가능한 모든 경우의 수를 무식하게 전부 대입해서 비밀번호를 찾아내는 방식을 무차별 대입 공격이라고 불러요.
설령 글자 수가 많은 언어라 해도 안전하지 않아요. 일상 언어에는 자주 나오는 글자가 정해져 있어서, 암호문에서 가장 많이 나타난 알파벳을 찾아내는 빈도 분석 공격을 쓰면 금방 원래 문장이 드러나요. 그래서 오늘날의 현대 암호 기술은 글자를 단순히 옆으로 미는 대신, 풀기 어려운 복잡한 수학 공식과 천문학적인 길이의 비밀키를 사용해요.
🤔 흔한 오해
카이사르 암호는 컴퓨터가 없던 옛날에는 절대로 풀 수 없는 완벽한 암호였다.
알파벳 기준 이동 가능한 경우의 수가 25가지뿐이라, 손으로 하나씩 대입해 보거나 자주 등장하는 알파벳의 빈도를 분석하면 컴퓨터 없이도 쉽게 풀 수 있었어요.
🧺 일상에서 만나요
카이사르 암호는 글자를 정해진 칸수만큼 밀어서 숨기는 가장 기초적인 대칭키 암호 방식이에요.