암호학의 개요
암호학이란 정보를 보호하기 위한 수학적, 언어학적인 방법을 다루는 학문으로 컴퓨터과학, 정보보안, 수학, 언어학과 관련 깊다. 전시에서의 통신 수단으로도 많이 쓰이기 때문에 군사 기술과도 관계가 깊다. 정보를 보호하기 위한 수학적, 언어학적인 방법을 다루는 학문이다. 컴퓨터과학, 정보보안, 수학, 언어학과 관련 깊다. 전시에서의 통신 수단으로도 많이 쓰이기 때문에 군사 기술과도 관계가 깊다.
1. 암호학의 분류
암호학은 크게 두 가지 분류로 나누어진다. 후술 할 비밀키 암호화 기법과 공개키 암호화 기법이며, 역사적으로는 비밀키 암호화 기법이 먼저 등장하였다. 수학과에서는 4학년 때 응용 수학으로서 배우게 된다. 그리고 국가정보원, CIA 등 정보기관의 가장 대표적인 이미지를 만들어주는 학문으로 정보기관 채용 모집인원도 암호학 전공자가 아주 많은 편이다.
2. 고전 암호
2.1. 카이사르 암호
역사상 가장 오래된 암호의 형태 중 하나로 유명한 체계. 카이사르가 사용했다고 전해진다. 원문의 글자 하나하나를 다른 글자로 치환하는 치환 암호로, 모든 글자를 정해진 키 숫자만큼 뒤의 철자로 바꾸는 방식. 현대 영문 알파벳이 26종이므로, 총 25가지 키를 사용할 수 있다. 크기가 다른 원판 두 개를 겹쳐 놓고 중심을 서로 고정한 뒤 테두리 쪽에 순서대로 알파벳을 쓰는 식으로 암호판도 만들 수 있다. 이 체계 자체가 유명하기도 하지만, 암호화 원리 자체가 매우 단순하여 전혀 모르는 사람이라도 글자 빈도 분석이나 브루트 포스로 순식간에 뚫을 수 있다. 현대 기준으로는 보안성은 거의 없는 수준이다. 카이사르 당시에도 자기 이름 철자인 C만 키로 써서 유명무실한 암호였다는 일화도 있다. 그래도 전승(傳承)되는 최초의 암호화 기법이라는 점에 의의가 있다.
2.2. 비즈네르 암호
카이사르 암호를 키값이 26개 밖에 존재하지 않는다는 단점을 보완해서 만든 암호이다. 여기서 키는 한 글자가 아닌 하나의 단어로 키 칸에 계속 반복되게 적는다. 그럼 같은 단어라도 키에서 다른 위치에 걸리게 되면 암호화된 글자는 달라지게 된다. 상세히 적자면, A에 0, B에 1, ..., Z에 25의 숫자를 대입해서 원문과 키의 숫자를 더한 결과값을 나타낸 것이다.
2.3. 스키테일
주로 스파르타에서 전쟁에 나가 있는 군대에 메시지을 전할 때 썼던 암호이다. 이 암호를 암호화하고 복호화하는 과정은 스키테일(Scytale)이라는 원통형 나무 막대기를 이용한다. 이것으로 암호화하는 과정은 다음과 같다. 이 막대기에 종이를 왼쪽부터 오른쪽으로 위에서 아랫방향으로 돌려 싼 다음 왼쪽에서 오른쪽으로 메세지를 적는다. 빈칸은 아무렇게나 채운 다음 종이를 스키테일에서 푼다. 이것을 복호화 할 때는 같은 굵기의 스키테일에 감아서 확인을 해보면 된다.
3. 현대 암호
원본을 알아보지 못하도록 비화하는데 쓰이는 컴퓨터 알고리즘이다. 컴퓨터가 발달하면서 이전에는 군용이나 중대한 사업용으로만 쓰이던 암호가 일상생활에도 널리 활용되게 되었다. 단순한 개인 게시판을 시작으로 대형 DBMS까지 다양한 분야에서 암호학이 실제로 쓰이며, 이러한 암호의 보급화는 전자상거래가 시작되는 데 결정적인 역할을 하기도 했다. 암호는 개인정보 보호와 악의적 공격자의 공격으로 인하여 데이터가 누출되었을 때 중요한 자료들을 바로 가져갈 수 없도록 처리하거나 온라인 상에서 신원을 보장하는데 이용될 수 있다.
3.1. 양방향 암호 시스템
암호는 크게 대칭형 암호와 비대칭형 암호의 2가지로 나눌 수 있으며, 암호화에 사용하는 키 값과 복호화에 사용하는 키 값이 같은지 다른지를 기준으로 구분한다. 암호화할 때 사용한 키로 복호화를 할 수 있으면 대칭형 암호, 암호화 키와 복호화 키를 따로 구분하면 비대칭형 암호다. 통상적으로 대칭형 암호는 비공개키 암호에 사용되며 비대칭형은 공개키 암호에 사용된다. 대칭형 암호 중에는 블럭 암호와 스트림 암호가 있다. 전자는 일정 비트 수(단위, 또는 블록)를 암호화하는 방식이며, 후자는 연속적인 데이터를 암호화하는 방식이다.
3.2. 단방향 암호 시스템
평문에서 암호문으로 만드는 것은 자유지만, 그 반대는 아니란다로 대표되는 암호 체계. 대부분이 해시 암호화 체계이다. 이는 일반적으로 password를 password를 저장하는 용도로 사용된다. 예를 들어 초창기 유닉스/리눅스는 유저의 password를 암호화하여 /etc/passwd 파일에 저장해 두었다. 보안을 위해서 암호화 방식도 어려운 것으로 변경되었을 뿐만 아니라 저장 위치도 /etc/shadow 라는 파일로 변경하고, 관리자가 아니면 볼 수도 없도록 제한을 걸어놨다. 예를 들여 어떤 사용자의 password를 12345678라고 한다면, 이를 MD5로 암호화했을 때 25d55ad283aa400af464c76d713c07ad이 되는데, 이를 저장해 둔다. 그리고, 누군가가 로그인을 시도할 때 12345678 을 입력하고 이를 MD5로 암호화해서 그 결과를 비교해보면 같은 값이 나옴을 알 수 있다. 하지만, 반대로 암호화된 문자열에서 원래 암호를 복호화하는 것은 아주 어렵다. 다만, 컴퓨터의 발전으로 인해서 MD5 같은 알고리즘은 더 이상 안전하지 않다.