티스토리 뷰
기원전 1세기
율리우스 카이사르는 남들로부터 개인적인 의사소통이 알려지는 것을 막기위해
본인이 전달하는 서신이나 소통문을 암호화 하기 시작한다.
그는 기본 문구가 있으면,
문구의 각 문자를 일정 간격만큼 “옮겨서” 원 문구를 암호화 (Encrypt) 하는 방식으로
예를들어 E라는 단어가 있으면 그로부터 3글자 앞인 B로 대입, D의 경우 A, C의 경우 A의 앞, 또는 알파벳의 마지막인 (알파벳을 일종의 둥근 환으로 보는 경우) Z로 대입한다.
즉, 암호를 받은사람이 다시 원문으로 되돌리려면 (되돌리는 해독과정을 복호화 (decrypt)),
암호화시 기존의 치환 간격 (이경우 원문에서 3글자 앞) 만 안다면 복호화가 가능했다.
당시 사용되었던 라틴어 알파벳의 23개였던 것을 감안하면,
최대 22번의 무차별 대입 (모든 경우의 수를 찍는 방식) 으로,
암호화된 암호문을 원문으로 아무나 복호화 하는데에는 비교적 짧은 시간안에 가능했다.
이것이 현존하는 가장 오래된 암호화 방식 중 하나.
이전의 그리스 군대에선, 기원전 400년경에
어떤 특정한 지름을 가진 막대에
평문을 쓴 종이를 둘둘 감아,
보낸사람과 받는사람의 막대 크기가 “딱!” 맞아 떨어져야만, 정보가 인식될 수 있는 방식의
스키테일 암호방식도 사용하였다.
이 스키테일 암호는 전치암호 (Transposition Cipher) 의 형태.
당시 그리스에선 일일히 양피지에 암호문을 써왔고, 쉬운 해독을 위해선 막대가 필요했음.
그리고 띠를 받은 사람은 다시 저 방식으로 맞춰서 막대에 두루면 암호 복호화 완료.
원시적이었던 만큼 도구의 영향도 컸었음.
보통 치환암호 (Substitution Cipher) 와 전치암호 (Transposition Cipher) 는 고전 암호학에서 대표적을 쓰이던 두가지 암호화 기술임.
중세시대에 들어섬.
전쟁이 잦았던 중세시대,
이전까지는 상응하는 문자를 대체하는 치환암호문이 암호화 체계의 주를 이루고 있었음.
그러나 치환암호는 뚫기가 쉽다는 약점이 있었고,
수학수준이 높았던 개슬람국가에서 통계학적 분석을 이용
왠만한 암호문들을 쉽사리 해석하기 시작함.
이는 통계학적인 단어 빈도수 계산으로 기존의 암호화 방식을 알아내는 것이었는데,
가장 많이 쓰이는 단어를 분석, 추측하여 끼워맞추기 방식.
(왜냐면 모든 단어를 암호화 하는 패턴은 일정했기 때문)
이에 따라 1차원적인 치환 암호를 조금더 발전시켜
다차원적인 복식 치환 (Polyalphabetic Cipher) 암호를 사용하기 시작.
15세기의 독일의 언어학자이자 암호학자인 요하네스 트리테미우스가 고안
각 글자가 몇번째이냐에 따라 치환을 다르게 하는 방식
물론 이는 기초적인거고,
몇몇 수학적인 짬뽕을 첨가해서 이를 기반으로 좀더 복잡한 치환방식을 적용
해독을 훨씬 어렵게 함
다만 해독이 더 어려워졌을 뿐,
낙타국 수학 머가리들의 분석력에 슬슬 뚫리기 시작
그러나 해독시간이 기존의 암호화 방식에 비해 훨씬 길다는 점에서
(참고로 해독과 복호화의 차이는 해독은 원치 않은사람이 임의적으로 암호를 푸는것,
복호화는 암호를 수신인이 다시 복구하는 작업임. 물론 복호화가 훨씬 빠름)
1분 1초가 아까운 전쟁에선 요긴하게 쓰임
암호화된 정보가 새어나가더라도
정보의 유효기간이 해독에 걸리는 시간보다 비교적 짧은 전시에는
이미 그 정보가 쓸모없어진다 (예를들면 비밀 작전이 이미 수행된 이후) 쯤에 해독이 완료되었기 때문.
르네상스 시대...
예술 열풍이 불기 시작하면서
단어나 글자의 특성이 아닌
예술을 활용한 암호화도 자주 쓰임
예를들면 음악의 혼란을 틈타 음악속에 비밀 메시지를 넣는다든지
그림속에 빼막하게 암호를 넣음
또는 문학을 가장하여 암호문을 넣는경우도 빈번
이러한 암호역사를 판타지화하여 나온 소설, 댄 브라운의 다빈치 코드 (The Davinci Code)
여튼 인간의 뇌가 점점 시대와 함께 발전하면서
암호화 하는 방식도 가지가지가 됨.
1900년도에 들어서면서,
전보 등 전기를 활용한 정보의 전달이 많아지게 되는데…
그로 인해 새로운 방식의 통신이 생겨난다.
전기로 인해 통신의 속도가 빨라짐으로써
암호화, 복호화도 전기와 기계에 의존하게된다.
1915년경, 천조국 육군의 암호학자 윌리엄 프리드먼은 타자기를 개량하여 기계식 암호화에 기여하고
전동로터를 활용한 암호화 기계, 헤베른 로터 기계 (Hebern Rotor Machine) 를 개발
이는 (차후에 설명될) 독일의 애니그마 기계의 전신이 된다.
1917년 천조국 국방부는, 1회용 암호를 고안한다.
이는 현대에 쓰이는 OTP (One-Time Password) 에 기여를 하는데...
이는, 매번 암호화 할때 쓰이는 코드가 순수히 임의적 (랜덤) 이고 매번 바뀐다면,
다시 복호화하는 것이 매우 어렵도록 한것이다.
이는 각 알파벳에 숫자 (1 - 26; A의 경우 1, Z의 경우 26)을 대입하여 암호화 한다.
세계 1차대전이 발발하고,
1917년, 독일 제국에선 미국과 멕시코를 우덜식으로 이간질하여 미국을 대항하는데 멕시코를 이용하려
멕시코 주재 독일대사관에 암호화된 전보를 보냄
이가 바로 그 유명한 Zimmerman Telegram (침머만 전보)임.
그러나, 갓영국이 중간에 첩보로 침머만 전보를 엿본 후 해독하는데 성공함.
내용은 대략, 멕시코가 일본과 독일과 함께 동맹하여 미국을 공격하면,
옛날에 빼앗겼던 텍사스 애리조나 등을 탈환하는데 지원하고 재정적으로도 지원하겠다는 것이었음.
당시만해도 미국은 1차대전에 참전할 의향이 없었으나,
천조국은 1차대전에 참전, 승리를 거두게됨
종전 무렵, 독일은 암호의 거장, 애니그마를 개발함.
말하다시피, 암호는 암호화 방식이 숨겨져있을때 유용한 것으로,
암호화 방식이 유출되거나 감청이 심할경우, 해독도 심해지게 되는 것임. (치머만 전보도 영국으로 코드북이 유출됨으로 발생)
이는 원시적인 치환암호가 26가지 경우의 수 (알파벳 의 경우수) 를 갖는것을 조금 더 진화시켜, 제곱의 원리를 이용.
처음 3개의 로터의 첫 위치에 따른 암호화 경우의 수 (26x26x26) , 그리고 임의로 변경되는 회전자의 경우의 수 (26x26x26) ,
즉 최소 308915776가지의 경우의 수가 존재.
그리고 각 회전자의 위치를 변경한다면 또다른 경우의 수를 수 제곱으로 생성하여, 해독이 어렵게 만드는 방식임.
기계를 활용함으로써 암호, 복호화가 상대적으로 빠르면서,
기계라서 유출이 문서처럼 쉽지가 않다는 점을 이용한것임.
그러나 이미 1930년대 폴란드에서 이 암호를 뚫는 방법이 나타나고
독일은 또한번 패전하게 된다.
1945년 종전 이후...
물리학과 양자론이 발달하면서
원자의 양자가 가질수 있는 여러가지 상태를 활용한 암호화가 1950년대 초반에 고안됨. (물론 지금까지도 현실화되지는 않았다.)
애니그마의 실패 이후에도 기계식암호는 계속적으로 사용 되어왔다.
그러나 1970년대까지의 암호화 방식은 공통적인 문제를 공유하고 있었는데...
바로 암호화 방식과 복호화 방식이 근본적으로 같다는 것이었다.
즉, 암호화 방식이 유출된다면...
복호화하는건 쉽기 때문에 기밀유지가 힘들다는 것.
그렇다면, 대안은 뭘까?
그동안 사용되어왔던 암호화방식은 대칭키 (Symmetric-key),
즉 암호화 방식과 복호화 방식이 거울에 비춘 모습처럼 대칭하여 일치하는 방식.
그럼 서로 다르게 하면 안되나?
그래서 천조국 현대 암호학의 거장, 론 리베스트, 아디 샤미르, 레너드 아델만이 모여,
첫 상용화된 비대칭키 (Asymmetric-key) 암호화 방식인 공개키 암호화 (Public-Key Cryptography)를 고안,
그리고 특허를 낸다.
이는, 수론에서 널리동안 난제로 알려진 P-NP 문제의 성질을 활용한 것인데.
상대적으로 나눗셈 (인수분해)이 곱셈보다 기계적으로 오래 걸린다는 것을 활용.
예를들어, 세개의 수 (2, 7, 37) 가 있다고 치자.
이 세개의 수를 곱하면 2 * 7 * 37 = 518 이 나온다.
초등학교 저학년도 수학시간에 졸지만 않았으면 풀 수 있는 문제임.
그렇지만, 518이 2와 7 과 37의 곱으로 이루어졌다는것을 애초에 몰랐다면 다시 2,7,37로 복귀하는 것은 힘들다
(머가리 엄청 굴려가며 추측해내기 전까진)
그렇지만 이게 518이아니라 무지하게 큰 숫자 (자릿수로 몇백자리 되는 수라면?)
현대의 컴퓨터가 무현반복으로 대입한다 쳐도 (이를 브루트 포스라 함) 수천년에서 수만년 까지 걸린다는 것임
현대에는 공인인증서부터 거의 모든 보안시스템이 RSA기반 암호화 방식으로 이루어져 있다.
즉, 암호화는 상대적으로 빠르지만, 복호화는 매우 어렵고 시간이 소요되는 작업.
예를든다면, 잠글때 열쇠가 필요없는 똑딱이 자물쇠와 비교를 해보자
받는사람이 보내는사람에게 암호화 된 메시지를 받고 싶다면, 이렇게 열려있는 자물쇠를 보낸다.
그러면 보내는사람은 열쇠가 없어도 이렇게 잠글 수 있지만
한번 잠긴 자물쇠는 열쇠가 있어야만 열리는 것 과 같은 원리.
즉, 잠그는 행위 (암호화)는 누구나 할수 있지만 (공개), 여는 행위 (복호화)는 열쇠를 가진 자만이 할 수있다 (비공개).
그러나 이는 여전히 P-NP난제가 해결되지 않았다는 전제에 의존하므로,
혹여나, 인수분해를 빠르게 하는 공식을 발견하면,
그때는 100만불의 상금을 받을 뿐더러 세계의 (거의) 모든 보안시스템의 취약점을 발견한 것이나 마찬가지.
그리고 전자통신의 발달로 수억개의 정보가 확 올라갔다 확 내려갔다 하는 시대.
인터넷도 점점 발달되면서
암호화 방식과 복호화 방식이 복잡해지고,
되돌아 올라오는 것은 힘든 성질을 이용한
해시 함수 등의 개발도 시작 된다.
해시함수는 어떤 입력값이있으면 그에대한 암호화된 값을 저장하되,
그 암호화된 값에서 다시 입력값으로 되돌리는 것은 어렵게끔 만드는 것.
MD5라는 해시함수를 활용하여 암호화 하면
전혀 알수없는 16진수의 숫자값이 나옴.
그리고 서버상에도 비밀번호가 16진수로 저장되어
만약에 내가 로그인을 시도한다면, 16진수로 변환하여
서버에 저장된 결과값과 검증 하는데에만 사용,
즉 서버의 관리자도 원래 비밀번호가 뭔지는 알 수 없음.
그래서 해킹을 당하더라도 원래 비밀번호는 유출이 안되게 끔 하는 것임.
왜냐하면 같은 입력값으로는 오로지 하나의 유일한 결과값이 나올 수 밖에 없어야 하기 때문.
즉, 해시는 원래의 값을 모르더라도 원래의 값과 동일한지 검증만 할 수 있게끔 도와줌.