암호(Cipher)란?
암호란 평문(Plaintext)을 해독 불가능한 형태인 함호문(Ciphertext)으로 변형하거나, 암호화된 통신문을 해독 가능한 형태로 변환하기 위한 원리, 수단, 방법 등을 취급하는 기술이다. 이를 학문적인 관점에서 다룰 때 보통 암호학(Cryptography)이라 일컫는다. 암호학은 암호와 암호 해독에 관해 연구하는 학문으로 현대 암호학은 컴퓨터 과학, 전자공학, 통신공학, 수학 및 통계학, 물리 등의 여러 분야와 직/간접적으로 관련되어 있으므로 안전한 암호 시스템을 설계/구현 하기 위해서는 위에 열거된 학문에 대한 기초지식을 지니고 이해해야 한다.
암호학은 매우 오랜 역사를 갖고 있다. 약 4,000년 전에 고대 이집트인들은 가장 기본적인 정보 은닉(Information Hidding)의 개념으로부터 출발하여 로마시대의 시이저 암호(Caeser Cipher)를 거쳐 1,2차 세계 대전을 통해 크게 성장하였다. 최근에는 인터넷의 급속한 확대로인해 암호학의 중요성이 크게 인식되고 있다.
암호의 역사
(1) 고대 암호
고대 그리스에서는 노예의 머리를 깎아 통신문을 머리에 작성하고 머리카락이 길어질 때까지 기다렸다가 제 3자에게 발견되지 않게 상대방에게 노예를 보낸 후, 다시 머리를 깎아 통신문을 읽을 수 있도록 했다고 한다. 또한 과일즙으로 글자를 써서 전달한 후 열을 가하면 나타나도록 하는 방법도 사용하였다... 암호라고 부르기에는 부족한 이 방법들은 엄밀히 말하면 스테가노그래피(Steganography)라고 한다.
일반적으로 고대 암호와 근대 암호는 평문에서 다른 문자로 치환하는 치환 암호(Substitution Cipher)와 평문에서 문자의 위치를 변화시켜 사용하는 전치 암호(Transposition Cipher), 그리고 전치 암호와 치환 암호를 결합하여 사용하는 적 암호(Product Cipher)로 분류한다. 전치 암호의 가장 오래된 방식은 B.C. 500년경 고대 그리스의 스파르타에서 전쟁중에 군사적인 목적으로 사용한 Scytale 암호이다. 이 방식은 전달하려는 평문을 재배열하는 방식으로 막대에 종이를 감아서 그 위에 가로로 글을 쓴다음 종이를 풀면 문자가 재배치 되어서 평문의 내용을 인식할 수 없게 된다.
< Scytale Cipher >
최초의 치환 암호는 로마 시대의 Julius Caesar가 사용한 Caesar 암호이다. 이 암호는 평문의 각 문자를 우측으로 n 문자씩 이동시켜 그 위치에 대응하는 다른 문자를 치환함으로써 평문을 암호문으로 변환하는 암호 방식이다.
< Caesar Cipher >
예를 들어 I LOVE SONYA 라는 문장을 각각의 방법으로 암호문으로 만들어 보도록 하겠다.
Caesar Cipher
(n=3)
위 표에 따르면 다음과 같이 암호화 할 수 있다.
평문 : I LOVE SONYA
암호문 : L ORYH VRQBD
Scytale Cipher
위 표에 따르면 다음과 같이 암호화 할 수 있다.
평문 : I LOVE SONYA
암호문 : IVO ENL YOSA
(2) 근대 암호
근대의 암호는 앞에서 말한 것과 같이 세계 대전과 컴퓨터의 발달로 인해서 암호학 연구가 활발하게 이루어지면서 나타났다. 프랑스 암호학자 Blaise de Vigenere 가 고안한 Vigenere암호, 영국군이 사용했던 C. Wheatstone이 만든 Playfair 암호 등 암호 설계와 해독에 관한 연구가 활발히 추진되었다. Shannon은 확률론을 기초로 한 정보이론의 창시자로서 이론적으로 해독이 불가능한 암호 방식을 제안하고, 그 안정성을 평균 정보량을 이용하여 수학적으로 증명하기도 했다. 또한, 강안 함호 알고리즘은 약한(단순한) 암호 알고리즘을 여러 번 반복하여 얻을 수 있다는 것을 보임으로써 확산(Diffusion)과 혼동(Confusion)을 반복하여 안전한 암호를 구현하는 방안을 제시하여 현대의 암호 알고리즘 구조에 지대한 영향을 미쳤다고 한다. 여기서는 근대의 암호화 방법 중에 대표적인 방법인 Vigenere의 방법을 소개하고 넘어가도록 하겠다.
Vigenere Cipher
Vigenere 암호는 16세기 Vigenere가 고안한 암호로 암호키로써 영단어를 선택하고 평문을 해당되는 문자로 바꾼 다음, 각 문자에 대응하는 문자를 평문에 평문에 반복적으로 더하여 얻는 암호문이다. 즉, Caesar 암호를 확장하여 여러 개의 키를 문자 각각에 대해 적용하여 암호화/복호화하는 형태이다. 이는 Caesar 암호와 같이 평문의 각 문자에 일률적으로 대응하는 방법보다 평문의 각 문자에 대해 불규칙적으로 대응하기 때문에 훨씬 안전하다. 하지만 이 방법은 키의 길이가 짧으면 간단하게 깨진다는 약점이 있다.
위 변환표에 따라 암호화를 수행하면 다음과 같다.
평문 : I LOVE SONYA
키 : E NCRY PTION
암호문 : M YQMC HHVMN
(3) 현대 암호
현대 암호는 크게 비밀키 암호 방식과 공개키 암호 방식으로 구분된다. 비밀키 암호 방식은 암호화키가 동일한 키를 사용하기 때문에 송신자와 수신자가 비밀 통신을 하기 전에 키를 사전 분배하여 보관하고 있어야 한다. 반면에, 공개키 암호 방식은 암호화키와 복호화키를 분리하여 암호화키는 공개하고 복호화키는 비밀리에 보관하도록 되어 있다. 이 방식은 송신자가 수신자에게 평문을 암호화하여 전송하려고 할 때, 수신자의 공개키로 평문을 암호화하여 전송하고, 수신자는 자신이 비밀리에 가지고 있던 복호화키(개인키)로 암호문을 복호화 한다. 공개키 암호 방식은 비밀키 암호 방식과 달리 암호화키를 사전에 전송할 필요가 없어 불특정 다수 사이에서 암호 통신망을 구축할때 용이하다.