순수 공부 목적으로 작성한 게시글입니다.
고전 암호는 일반적으로 치환(Substitution) 과 전치 (Transposition)의 방법으로 설계됩니다.
치환 : 평문의 문자를 다른 문자로 바꾸는 것
전치 : 평문 문자들의 위치를 바꾸는 것
단순한 고전 암호는 한 가지 원리만을 사용하는 치환 암호(Substitution cipher) 또는 전치 암호 (Transposition cipher)입니다. 복잡한 고전 암호는 두 원리를 모두 사용합니다.
치환 암호는 단일 문자 치환 암호(Monoalphabeticc substitution cipher) 와 다중 문자 치환 암호(Polyalphabetic substitution cipher)로 나누어진다.
단일 문자 치환 암호
평문의 각 문자를 약속된 다른 문자로 치환하는 암호이다. 복호화를 위해 치환의 대응 관계는 일대일 대응이다.
평문의 'A'가 암호문의 'B"로 치환된다면, 평문의 다른 어떤 문자도 'B'로 치환되지 않습니다.
대표적인 예로 카이사르 암호(Caesar cipher)가 있다.
평문의 각 알파벳을 정해진 횟수만큼 다음 순서에 해당하는 알파벳으로 치환한다.
알파벳을 밀어낸 횟수만 알면 해독할 수 있다. 알파벳을 밀어낸 횟수를 키(Key)라고 한다면, 알파벳은 총 26자 이므로 가능한 키의 가짓수는 26개 이다.
다중 문자 치환 암호
평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있다. 대표적인 예로 비제네르 암호가 있다.
암호화와 복호화는 미리 정해진 키워드를 통해 이루어진다.
전치 암호
평문을 구성하는 문자들의 순서를 재배열하여 암호문을 만든다. 평문을 정해진 길이의 블록들로 나누고, 규칙을 적용해서 블록 안의 문자들을 재배치한다. 대표적인 예시로 스키테일 암호가 있다.
고전 암호 공격
전수 키 탐색 공격(Exhaustive key search attack) 과 빈도수 분석(Frequency analysis)가 있다.
전수 키 탐색 공격 : 평문과 암호문을 알때, 키 공간을 전부 탐색하며 주어진 암호문과 같은 암호문을 생성하는 키를 찾는 방법이다. 단순한 공격이지만 키 공간의 크기가 작다면 빠른 시간안에 키를 찾고, 암호를 해독할 수 있다.
빈도수 공격 : 단일 치환 암호는 평문의 문자와 암호문의 문자가 항상 일대일 대응을 이루기 때문에 평문의 통계적 특성이 유지된다. ex) 영어 문장에서 각 알파벳이 사용되는 빈도를 그래프로 표현하면 아래와 같은데, 이런 특성은 문자를 단일 치환해도 유지된다.
평문의 E를 A로 치환해서 암호문을 만들었다면, 암호문에서 가장 많이 등장하는 알파벳인 A일 가능성이 높다. 이런 추측을 바탕으로 암호문을 복구하는 것 -> 빈도수 분석