1. 암호의 개요
1.1 암호학의 개념
암호(cryptography)란 평문을 해독 불가능한 암호문(ciphertext)으로 변형하거나 또는 암호화된 통신문을
복원 가능한 형태로 변환하기 위한 원리, 수단, 방법 등을 취급하는 기술 또는 과학이다.
그리고 암호학은 암호화 암호 해독을 연구하는 학문으로 정수론의 합동이론, 확률통계, 전자, 통신 및 전산학 등
많은 분야의 학문과 연결되어 있다. 과거에서 현대까지 자신의 정보를 안전하게 지키거나 전달하기 위해 많은
노력들이 진행되고 있다. 이러한 일들은 암호를 사용함으로써 소기의 목적을 이룰 수 있다.
암호를 이용해서 정보의 보호가 가능하고, 개인의 프라이버시를 지키는 것이 가능하고, 안전한 정보의 전달이 가능하다.
이것뿐만 아니라, 비밀과 안전이 보호되어야 하는 모든 곳에 암호는 사용될 수 있다.
암호는 고대(450 B.C.)로부터 아주 중요하게 인식되어 왔고, 또한 상대방의 비밀 정보를 훔치고자 많은 노력들이 있었다.
정보보호의 필요성은 정보를 보호하는 가장 좋은 방법인 암호학에 관한 연구의 시발점이 되었다.
만약, 정보가 제3자에게 노출될 수 없는 전송 수단을 통해 전달된다면 그 정보는 안전하고,
정보를 보호하기 위한 연구는 필요하지 않을 것이다.
하지만 그러한 전송 수단은 존재하지 않기 때문에 우리는 항상 위험에 대해 대비를 하여야 한다.
즉, 암호는 제3자가 정보를 훔쳐내더라도 그 의미를 알 수 없도록 하는 것이다.
암호에 쓰이는 간단한 용어를 살펴보면 송신자가 보내고자 하는 원래의 데이터를 평문(plaintext) 이라고 하고,
평문을 어떤 과정을 거쳐 제 3자가 보더라도 평문의 내용을 쉽게 알지 못하도록 하는 것이 암호화(encryption)
라고 하는데 평문이 암호화과정을 거치면 암호문(ciphertext)이 된다.
반대로 암호문으로부터 평문으로 바꾸는 과정을 복호화(decryption)라고 한다.
이러한 암호화, 복호화 과정에서 이용되는 알고리즘을 암호 알고리즘이라 하고 암호 알고리즘에서 평문을
변환하는 주제가 되는 것을 키(key)라고 한다. 암호화, 복호화 과정에서는 송신자와 수신자가 알고 있는 키
(key)가 사용되는데 제3자는 송신자와 수신자의 키를 알지 못함으로 평문의 내용을 쉽게 알지 못할 것이다.
따라서 송수신자는 서로간의 비밀키의 관리를 중요시해야 한다.
1.2 암호학의 역사
암호는 로마 시대에 살았던 줄리어스 시저로부터 거슬러 올라간다.
그는 가족간의 비밀통신을 하기 위하여 노출되지 않도록 특별한 암호(흔히 Caesar cipher라 불린다)를
사용함으로 해서 대치 암호(substitution cipher)의 역사는 시작되었다고 말할 수 있다.
정보 보호의 필요성은 옛날부터 중요하게 생각되어 왔고, 그에 반하여 상대방의 정보를 알아내고자
하는 시도도 계속되어 왔다.
고대로부터 이러한 시도들은 암호의 발전뿐만 아니라 암호 해독(cryptanalysis)의 발전을 가지고 왔다.
암호의 발달 과정은 단순한 문자 대입에 의한 방법에서 복잡한 기계를 이용하여 암호 알고리즘을 구현하던
시대, 그리고 수학적으로 복잡도가 높은 암호 알고리즘을 이용하는 현대의 암호학 시대로 발전해 왔다.
단순한 문자 대입 방법을 주로 사용한 시대는 암호화 과정에서 통계적인 생각을 하지 않았기 때문에
통계적으로 암호문을 쉽게 해독할 수 있다. 이 방법의 대표적인 암호 시스템은 시저 암호(Caesar cipher)
가 있는데 시저 암호는 알파벳의 한 문자를 다른 문자로 치환하는 것이다.
그 외에도 Vigenere cipher, 미국 남북 전쟁시 남군이 이용하던 Beaufort cipher 등이 있다.
복잡한 기계를 이용하여 암호 알고리즘을 구현하던 시대는 암호를 해독하는 데 엄청난 시간이 요구되기
때문에 그 당시에는 안전한 시스템이었다. 하지만 컴퓨터의 엄청난 발달과 계속된 연구에 의해 새로운
암호 해독 방법의 개발로 인해 암호를 해독하기 위한 시간이 많이 줄어들게 되어 오늘날에는 안전한
시스템이라고 말할 수 없게 되었다. 이 방법의 대표적인 암호 시스템은 제 2차 세계대전 중 사용된
독일의 ENIGMA 와 미국의 M-209 등을 들 수 있다.
현대의 암호학은 70년대 초 컴퓨터 산업의 발달과 수학적 배경을 기본으로 하여 그 동안 발전된 여러가지 이론을
혼합하여 복잡도가 높은 암호 알고리즘을 만들어 냈다. 이 방법의 대표적인 암호 시스템은 암/복호화 키가 같은
관용 암호방식인 DES와 암/복호화 키가 서로 다른 공개키 암호방식으로 RSA, EIGamal, ECC 등이 있다.
오랫동안 많은 분야에서 암호는 연구되어 왔고 암호기법과 암호 해독방법 등을 발전시켜 왔다.
그러나 진정한 의미의 학문으로서 오늘날과 같은 위치를 차지하게 된 것은 수학과의 만남에서 비롯되었다고
할 수 있을 것이다. 즉, 오늘날 암호학(cryptography)은 수학의 한 응용분야이며 암호학의 역사는
수론을 통해 지금도 계속되고 있다.
1.3 현대 암호학의 분류
현대에 들어와서는 암호학은 크게 관용 암호 방식, 공개키 암호 방식으로 나누어진다.
관용 암호방식은 다른 말로 대칭키 암호방식이라고 하는데, 이는 암호화키와 복호화 키가 일치한다는 특징이 있다.
즉, 송신자가 수신자에게 평문을 암호화하여 메시지를 보낼 때 쓰여진 키와 수신자가 암호문을 평문으로
바꾸는 데 쓰는 키가 동일하다는 것을 의미한다. 공개키 암호방식은 송/수신자가 암호화할 때 쓰이는 키와
복호화 할 때 쓰이는 키가 서로 다르다. 즉, 송신자는 수신자의 공개키(public key)로 평문을 암호화해서
메시지를 보내면, 수신자는 자신의 비밀키(private key)로 암호문을 복호화 한다.
스트림 암호방식은 이전화된 평문과 키 수열의 XOR(배타적 논리합)로 암호문을 생성한다.
대칭키 암호방식의 대표적인 것은DES(Date Encryption Standard)이다.
DES는 공용 컴퓨터 네트워크의 시설이 급증하면서 1970년대 초반 표준 암호알고리즘의 필요성이
강력히 대두됨에 따라 1973년 미 표준국에서 미국 암호 표준화를 공모하였고, IBM에서 제안한
알고리즘에 1977년 데이터 암호 표준으로 채택되었다. DES는 데이터 암호의 표준이 되면서
광범위하게 사용되고 있으며, 특히 금융 분야에서 널리 이용해 왔다.
DES의 특징을 살펴보면 평문을 64비트로 끊어서 64비트 암호문으로 만드는 블록(block)암호이고,
키는 64비트를 이용하는데 실제 키는 56비트이고 나머지 8비트는 검사용 비트이다. 각각의 블록은
16번의 반복적 암호화 과정을 가지고 있고, 각 과정마다 전치 및 대치의 과정을 거친 평문과 56비트
의 내부키에서 나온 48비트의 키가 섞여 암호문을 만든다.
복호화는 암호화 과정과 동일하나 사용되는 키만 역순으로 작용한다. 또한 DES는 안전성을 증가시키기 위해 키의 길이를
128비트로 늘인 변형된 알고리즘도 있다. 대칭키 암호방식은 송/수신자 사이에 키를 철저히 비밀로 관리해야 한다.
만약, 통신망에 가입된 사람의 수가 많을 경우 비밀로 관리해야 하는 키의 수도 많아진다. 이러한 키 관리의 어려움 외에도
대칭 암호방식에서는 전자 문서의 내용에 대한 디지털 서명(digital signature)을 확인할 수 없다는 문제가 있다.
이러한 문제를 해결할 수 있는 암호방식이 비대칭 암호 방식인데, 보통 공개키 암호 방식이라 불리운다.
공개키 암호방식은 관용 암호방식과 달리 암호화키와 복호화키가 다르다. 이러한 공개키 암호방식에는 Diffie-Hellman의
이산 대수문제(discrete logarithm problem)의 어려운 점을 이용하는 EIGamal방식이 있고, 소인수 분해의 어려움을
이용하는 RSA 방식 등이 있다. 공개키 암호방식은 암호화, 복호화시 두 개의 키를 사용함으로써 대칭키 암호방식의
문제점이었던 각각의 키 관리의 어려움과 디지털 서명문제를 해결 할 수 있다. 두 개의 키는 공개키와 비밀키로
불리어지고 공개키는 모두에게 공개하고 비밀키는 각자가 보관함으로써, 키 관리나 디지털 서명이 용이하다.
송신자는 수신자의 공개키를 이용해 평문을 암호화해서 보내면, 수신자는 자신의 비밀키로 평문을 복호화 한다.
이 공개키 암호방식은 암호학에서 커다란 변화를 가져왔다.
이 공개키 암호방식은 각종 정보보호 매커니즘의 중추적인 역할을 하고 있으며, 관용 암호방식과 같이 암호시스템의 많은
어플리케이션에 사용되고 있다. 스트림 암호방식은 1970년대 유럽을 중심으로 연구되었으며 선형 쉬프트 레지스터를
이용한 이진 수열 발생기를 사용하는 암호시스템이다. DES가 평문을 암호화하거나 복호화 할 때 블록으로 처리하는
반면 스트림 압호방식은 이진화된 평문과 키 순서열의 XOR을 통하여 암호문과 키의 결합으로 평문을 얻는다.
스트림 암호방식은 다른 암호 방식과는 다르게 수학적 분석이 가능하고 주기, 선형 복잡도 등의 여러 수학적 수치값을
정확히 계산할 수 있으며 또한 알고리즘 실현이 쉽다.
1.4 응용분야
현대 사회는 네트워크 환경의 발달과 컴퓨터의 폭넓은 보급에 의해 사회의 전반적인 활동 모습을 크게 변화시키고 이다.
특히 인터넷이라는 개방된 네트워크가 출현하면서 사회는 급속히 변하고 있다.
face-to-face 방식이 정보화 사회에 접어들면서 모두 개방된 통신망으로 옮겨가고 있는 추세이다.
하지만, 개방된 통신망은 편리성에 그 이점이 있지만 개방되는 데이터를 어떻게 보호하고 개인적인 프라이버시를
어떻게 지켜주는가가 가장 큰 문제로 대두되고 있다. 개방형 시스템의 계층구조는 메인 프레임에서 데이터베이스,
네트워크, PC 등에 이르기까지 모든 부분을 포괄한다.
특히 암호의 필요성은 이제 PC 뿐만 아니라 개인휴대단말기(PDA), 무선 통신 기기, IC카드 등 다양한 모습으로
등장하고 있는 개인의 네트워크 접속 수단에도 해당된다. 기계적인 측면뿐만 아니라 내용적인 응용분야도 다채롭다.
유무선 데이터통신, 금융지불, 기업내부 전산망, 전자상거래(EC) 등 꼽아보면 보안기술이 응용되지 않는 분야가 없다.
대표적인 응용 분야로는 네트워크 상에서의 사용자 인증, 안전한 메일 교환, 전자 화폐 및 전자 지불 등이 있다.
네트워크 상에서 양자간에 정보를 송수신할 때, 직접 상대방과 만나서 정보를 전달하는 것과는 달리 다음과 같은 문제가 생긴다.
정보를 교환하고 있는 사람이 정확히 누구인지, 전달하는 정보가 정확히 전달되었는지, 제 3자가 불법적으로 정보를
도청하지는 않는지에 관한 확인의 필요성이 꼭 필요하다. 이러한 확인은 암호를 이용해 해결할 수 있는데 이를 일반
적으로 인증(authentication)이라고 한다. 컴퓨터 및 네트워크의 발달로 인해 정보의 교환이 빈번히 발생함에 따라
상대방이 정당한 상대인지를 확인해야 할 필요성은 더욱더 증가함으로 전자 서명과 인증 기술은 꼭 필요할 것이다.
암호는 인증 뿐만 아니라 메일을 암호화하는 데도 이용될 수 있다.
전자우편(E-mail)은 인터넷의 급속한 확산에 의해 보편화되었고 인터넷 서비스 중 이용이 가장 많은 서비스이지만
보안은 아주 취약하다. 기존의 E-mail 은 통신로 상에 아무런 변함없이 전송됨으로써 제3자에 의해서 가로채이거나
내용의 변조가 용이하다. 하지만 암호 기술에 의해 설계된 PEM(Privacy Enhanced Mail)이나 PGP(Pretty Good
Privacy) 및 S/MINE(Secure Multipurpose Internet Mail Extension)등을 사용함으로써 기존의E-mail 이 가지고
있었던 도청, 메시지 변조, 송신자 변조, 송신부인, 재전송, 수신 부인의 문제는 해결될 수 있어 보다 안전하게
E-mail을 전송할 수 있다.
암호의 응용 중에서 가장 대표적인 것은 전자 상거래일 것이다.
전자 상거래는 네트워크를 이용하여 거래가 성립되므로 이에 대한 안전장치가 필요하다. 기존의 상거래는 소비자와
판매자가 직접 만나기 때문에 신원 사칭이나 도청에 대한 위험이 없었다. 그러나 인터넷을 이용한 상거래는 편리한
반면 다음과 같은 문제점이 생길 수 있다. 네트워크를 통하여 물품구입을 하기 위해선 사용자의 카드번호 및 신상
정보를 제시해야 하며 이것은 곧 안전하지 못한 통신망에 개인의 중요정보가 노출되는 위험이 있다.
또 쇼핑몰을 개설하고 있는 상점이 정당한 거래를 수행하고 있는 상점인지 또는 상점을 대상으로 물품을 구입
하고자 접촉해 오는 사용자가 정당한 사용자인지에 대한 확인이 쉽지 않다. 이러한 위험을 해결할 수 있는
방법은 암호에 의존하는 것이다. 암호를 이용해 개인 정보를 전송할 수 있고 쇼핑 몰과 사용자사이의 인증
문제를 해결할 수 있다. 암호는 위에서 언급한 분야만이 아니라 전자 화폐, 전자 신분증, 전자 투표 등
많은 곳에서 응용될 수 있다. 암호는 컴퓨터와 각종 통신을 사용하는 모든 분야, 이를테면 군사, 외교는
물론이고 여러 산업 분야에서 사용자의 프라이버시를 보호하고 안전한 통신을 요구하는 곳이라면
암호는 사용되어야 한다.
현재는 물론이고 미래사회는 정보에 대한 의존성이 높아 갈 것이고 이런 중요한 정보는 컴퓨터 시스템과 각종 통신
수단에 전송되거나 저장될 것이기 때문에 이러한 과정에서 정보보호의 필요성과 중요성은 증대될 것이다.
또한 네트워크의 발달로 인해 기존의 오프라인상의 작업들이 온라인상으로 하나 둘씩 옮겨가는 추세에서
정보보호는 필수적 요구사항이다. 이 보안 문제를 해결할 수 있는 것이 암호이다.
2. 암호 알고리즘
암호 시스템은 키 관리 형태에 따라 크게 비밀키 암호 시스템(Secret-Key Cryptosystem)과
공개키 암호 시스템(Public-Key Cryptosystem)으로 나뉘어 질 수 있다.
비밀키 암호 시스템은 공개키 암호 시스템이 나오기 전에 주로 사용되던 암호 방식이다.
그 뒤 이 방식의 키 관리 단점을 해결하고자 공개키 암호 시스템이 나오게 되었다.
2.1 비밀키 암호 시스템
비밀키 암호 시스템은 대칭 암호 방식(Symmetric Cipher System)이라 부르는데 관용 암호 방식(Conventional Cryptosystem)
또는 단일키 암호 시스템(One-Key Cryptosystem)으로도 불리며 암호화와 같은 키를 사용하는 방식을 말한다.
예를 들면, 송신자는 전송하고자 하는 평문(plaintext)을 키와 암호 알고리즘을 통해 암호문(ciphertext)으로 변환하고,
수신자에게 전송한다. 수신자는 동일한 키를 복호 알고리즘 사용해서 원래의 평문을 만들어 내게 된다.
이때, 송신자와 수신자는 암호화 통신을 하기 전에 안전하게 키를 교환되어야 하며, 암호 통신을 도청하려는 제 3자는 송신자와
수신자가 사용한 키가 없으면 원래의 평문을 알 수가 없게 된다.
다음 그림은 이러한 비밀키 암호 시스템을 예시하고 있다.
비밀키 암호 시스템의 보안성은 여러 가지 요소에 의해 좌우되나 그 중에서도 가장 중요한 점은 안전하게 키를 보관하는 것이다.
즉, 암호화 통신을 하는 송/수신자는 자신들이 가지고 있는 키가 노출이 되지 않도록 비밀로 간직해야 하는데 이것은 암/복호화
알고리즘이 공개가 되더라도 키를 알지 못하면 암호문을 해독할 수가 없도록 설계가 되기 때문이다.
이와 같은 특징으로 인하여 암호화 통신을 하고자 하는 상대방이 많으면 그에 따라 관리해야하는 키의 수도 증가하게 되며 키
관리상의 문제가 생기게 된다. 그러나 비밀키 암호 시스템은 많은 다양한 알고리즘(DES, IDEA,RC5,RC6 등)이 나와 있으며
암/복호화 속도가 공개키 암호 방식보다 빠르기 때문에 현재에도 평문을 암호화하기 위해 가장 많이 사용하고 있다.
비밀키 암호 시스템은 다시 불록 암호(Black Cipher) 방식과 스트림 암호(Stream ciphers) 방식의 두 개 범주로 주로 유럽에서
연구 발전된 선형 쉬프트 레지스터를 이용한 이진 수열 발생기를 사용하여 평문을 한번에 1비트씩(때로는 바이트 단위로) 암호화
시키는 암호시스템을 말한다. 블록 암호 방식에서 전형적인 블록 크기는 64비트를 이용하며 때때로 보다 큰 블록을 사용하기도 한다.
그리고 같은 키를 사용하는 블록 암호에서 같은 평문 블록은 언제나 같은 암호문 블록으로 암호화된다.
스트림 암호에서는 주기가 긴 스트림으로 암호화 되며, 다른 암호 시스템과 달리 비교적 레지스터의 주기성으로 인해 수학적 분석이
가능하여 여러 가지 중요한 수치에 대하여 이론적인 값을 정확히 계산할 수 있다. 또한 블록 암호 시스템은 쇄도(avalanche)효과
때문에 암호화 라운드 수가 증가함에 따라 평문과 키의 확산(diffusion)현상이 촉진되어 비도가 높아지는 반면 스트림 암호 시스템은
암호문에 오류가 생길 때 에러 전파 현상이 시스템 구조에 따라 커질 수도 있고 또 작을 수도 있다.
(1) DES(Data Encryption Standard)
ANSI에 의해 Data Encryption Algorithm(DEA)와 ISO에 의해 DEA-1로 알려진 DES는 지난 20년 동안 세계적인 표준으로 사용된
64비트 블록 암호 알고리즘이다. 1972년에 National Institute of Standards and Technology(NIST)의 전신인, National Bureau
of Standards (NBS)는 컴퓨터와 통신 데이터를 보호하기 위한 프로그램을 개발하였다.
NBS에서는 알고리즘에 대한 몇 가지 설계 기준을 제시하였고 이를 만족시키는 알고리즘으로서 56비트의 키를 사용하여 블록으로
암호화하며 1976년 미국 연방 표준으로 채택된 후 매 5년마다 안전성 평가를 통하여 1998년까지 안전성을 인정받아 왔다.
그러나 근래에 들어 표준으로서 DES에 대한 안전성을 보장할 수 없게 됨에 따라 NIST에서는 1998년을 기준으로 표준에서
DES를 제외시키고 새로운 알고리즘을 표준으로 삼기 위해 표준을 공모하여 1998년에 15개의 대칭키 암호 알고리즘을 후보
로서 선택해 놓은 상태이다. DES의 구조는 크게 데이터 암호화부와 키 생성부로 구성되어 있다.
먼저 키 생성부에서 생성된48비트의 16개 라운드 키(round key)는 데이터 암호화부의 각 라운드로 들어가 평문블록과 함께 치환,
대치, 그리고 키 스케줄 등을 통하여 암호문을 만들어 내게 된다. 복호화는 암호화의 역순이다.
초기에 128비트의 키 길이로 설계되었던 DES는 NSA(National Security Agency)에 의해 56비트로 키 길이가 줄어든 이후
꾸준히 키 길이에 대한 논쟁이 되어 왔으며 컴퓨팅 파워가 증가하고 네트워크 기술이 발달하여 DES에 대한 다양한 공격이
시도가 되어 왔다. 이에 DES의 대안으로서 안전성이 향상된 3중 DES(Triple Des)가 나오게 되었다.
이 알고리즘은 2개의 키를 사용함으로서 키 길이가 112비트로 늘어나게 되었으며 DES에 대한 대안으로서 키 관리 표준
ANSI X9.17과 ISO 8732, 그리고 PEM(Privacy Enhanced Mail)에 채택되었다. 현재 3중 DES에 대한 실용적인 암호
분석 공격법은 없는 것으로 알려져 있다.
(2) IDEA(International Data Encryption Algorithm)
IDEA는 DES를 대체하기 위해 스위스 연방 기술 기관의 Xuejia Lai와 James Massey가 개발한 새로운 블록 암호 알고리즘이다.
이 알고리즘은 128비트의 키를 사용하여 64비트 블록을 암호화한다.
IDEA는 64비트 데이터 블록을 네 개의 16비트 서브 블록으로 나눈다.
네 개의 서브 블록은 각 라운드에 입력 값으로 들어가며 총 8개의 라운드로 구성되어 있다.
각 라운드에서 입력으로 들어간 네 개의 서브 블록은 교환되며, 마지막으로 네 개의 서브블록은 네개의 서브키와 결합이 된다.
각 라운드에서 나온 네 개의 서브 블록은 다시 초기 입력 블록과 두 번의 덧셈 연산과 두 번의 곱셈 연산을 통하여 64비트
암호문을 입력으로 사용하되 키 서브 블록은 역원 등의 조합으로 얻어진다. 이러한 IDEA 는 DES보다 약 2배 정도 빠르며
여기서 사용되는 1128비트의 키는 brute-force attack에 보다 효율적으로 대응할 수가 있다.
(3) RC2 & RC4
RC2 는 DES를 대체하고 차분 공격과 선형 공격에 강하도록 RSA 사의 Ron Rivest 에 의해 설계된 변환 키 길이 64비트
블록 암호 알고리즘이다. 이 밖에 RCI 와 RC3 가 만들어졌는데 RCI 는 Ron Rivest 의 개인 연구 노트에서만 기록되어
있을 뿐 발표되지는 않았으며, RC3 는 RSA 사에 의해 깨졌다.
RC2 는 DES 에 비해 소프트웨어 구현 시 약 3배 정도 빠르며 0비트부터 굉장히 큰 길이까지 다양한 길이의
키를 사용할 수가 있다. 또한 DES에서 사용되는 것과 같은 S박스가 존재하지 않는다.
RC4 역시 1987년 Ron Rivest 에 의해 개발 되었으며, 키 크기가 변환되는 64비트 스트림 암호시스템이다.
이 알고리즘은 RC2 와 마찬가지로 차분 공격과 선형 공격에 강하도록 설계되었고 OFB 모드에서 작동한다.
또한 이 알고리즘은 DES 보다 약 10배 정도 빠른 속도를 가지고 있다. 그 외에도 1994년 발표된 RC5 알고리즘과
그의 개량형인 RC6 등이 1995년에 고안된 상태이다.
(4) AES(Advanced Encryption Standard)
암호 알고리즘이 수학적으로 안전하게 설계되었을 때 암호의 비도를 결정하는 것은 키의 길이(key length)이다.
대칭키 암호는 일반적으로 64비트 블록과 키를 사용해 왔으며, 이것은 매우 안전하다고 생각 되었다.
하지만 컴퓨터 속도의 비약적인 발전으로 인해 안전하다고 알려져 왔던 DES 등의 암호가 전사적인 공격
(brute-force-attack) 을 통해서 짧은 시간 내에 해독될 수 있다는 것이 여러 실험을 통해 입증되고 있다.
이러한 위협에 대응하기 위해 1997년 1월 미국의 NIST 에서는 기존의 미국 표준 암호인 DES 를 대치하기
위한 128 비트 대칭키 암호 알고리즘을 마련하기 위한 계획을 발표하였다.
이 암호 알고리즘은 기존의 DES 암호의 변형인 3중 DES보다 효과적이고 안전해야 하며, 128비트 이상의 키 길이를
가져야 하며 다음 세기에 정부와 상업적 용도를 위해 사용될 수 있도록 높은 안전성을 가져야 한다.
이 계획안에 따라 전세계를 대상으로 새로운 128비트 암호 알고리즘을 모집하였고, 98년 8월에 한국을 비롯한
10여 개국의15개 알고리즘이 공식 후보로 채택되었다.
98년 8월 후보로 선택된 알고리즘은 다음과 같다.
AES 후보로 선택된 알고리즘
명칭 | 제작자 | 국가 |
LOKI97 | Lawire Brown, Josef Pieprzyk, Jennifer Seberry | Australla |
RIJNDAEL | Joan Daemen, Vincent Rijmen | Belgium |
CAST-256 | Entrust Technologies, Inc. | Canada |
DEAL | Outerbridge, Knudsen | Canada |
FROG | TecApro Internacional S.A. | Costa Rica |
DFC | Centre National pour la Recherche Scientifque(CNRS) | France |
MAGENTA | Deutsche Telekom AG | Germany |
E2 | Nippon Telegraph and Telephone Corporation (NTT) | Japan |
CRYOTON | Future System, Inc. | Korea |
HPC | Rich Schroeppel | USA |
MARS | IBM | USA |
RC6 | RSA Laboratories | USA |
SAFER+ | Cylink Corporation | USA |
TWOFIST | Bruce Schneier, John Kelsey, Doyg Whiting, David Wagner, Chris Hall,Nlieis Ferguson | USA |
SERPENT | Ross Anderson, Ell Biham, Knudsen | UK,Israel,Norway |
2.2 공개키 암호 시스템
공개키 암호 시스템은 비대칭키 암호 시스템(Asymmetric Crypto system)이라고도 불리며, 수학적 함수를
기반으로 하여 비밀키 암호 시스템과 달리 키 쌍이 존재하여 하나의 키는 누구든지 사용할 수 있도록
공개하며 다른 하나는 자신만이 비밀스럽게 보관하는 방식을 일컫는다.
이때 공개하는 키를 공개키(public key) 라고 하며 비밀스럽게 보관하는 키를 개인키(private key)라고 한다.
이러한 방식을 사용함으로써 공개키 암호 시스템은 비밀키 암호시스템의 키 관리와 분배의 문제점을 해결해 주고 있다.
즉, n명의 사람들과 암호화 통신을 하기 위해서 비밀키 암호 시스템에서는 n(n-1)/2개의 키가 필요하게 되나,
공개키 암호 시스템에서는 각 사용자당 2개씩의 키만 필요하게 되므로 전체적으로 2n개의 키들만이 필요하게 된다.
그러나 이러한 강점이외에 키 사이즈가 크다는 점과 2진수를 10진수로 변환하는 연산시간이 길다는 단점이 있으며,
선택적 평문 공격에 대한 취약성을 가지고 있다.
공개키 암호를 이용해서 송신자와 수신자가 암호 통신을 하기 위해서는 다음과 같은 과정을 거친다.
먼저 송신자는 수신자의 공개키로 메시지를 암호화하여 전송한다.
그러면 수신자는 자신의 개인키로 암호문을 복호화 하여 평문을 얻는다.
네트워크 상에서 누군가 암호문을 얻더라도 개인키 없이는 암호문을 복호화 할 수 없으므로 안전하게
데이터를 전송할 수가 있다.
개인키는 언제나 소유자만이 보관하고 있으며, 전송되거나 다른 사람에게 알려질 필요가 없기 때문이다.
이러한 속성은 또한 비밀키 암호 시스템에서 제공할 수 없는 디지털 서명 기능을 제공해 준다.
디지털 서명은 송신자 A가 평문을 자신의 개인키로 암호화한 암호문을 전송하고,
수신자가 암호문을 A의 공개키로 복호화 함으로써 이루어진다.
이때 개인키를 알고 있는 사람은 오직 송신자 A밖에 없기 때문에 A의 공개키로 확인하는
서명을 한 사람이 A라는 것을 확인할 수 있다.
이러한 과정은 디지털 데이터로 작성된 문서에 작성자나 송신자의 도장을 찍는 것과 마찬가지로
효과를 거둠으로써 정보화 사회에 있어서 매우 중요한 수단으로 자리매김하고 있다.
그러나 이러한 공개키 암호 시스템은 그 역사도 짧으며 현재 나와 있는 알고리즘도 그리 많은 편이 아니다.
또한 비밀키 암호 시스템보다도 데이터 암호화 속도가 매우 느리기 때문에 일반적으로 데이터 암호화에는
사용하지 않으며 키 분배나 디지털 서명 등에 많이 사용되고 있다.
이러한 공개키 암호 시스켐의 대표적인 것으로는 RSA 암호가 있으며
이 밖에 ELGamal, Schnorr, DSA, LDC, ECC 등이 있다.
3. 암호 프로토콜
3.1 인증
현대 사회는 컴퓨터 및 통신망의 보급이 확대되고, 분산 처리 시스템과 개방형 시스템의 응용이
활발히 진행되면서 수많은 정보들이 교환되고 있다.
인터넷상에서 전자 우편을 이용하여 서로의 서신을 교류하는 모습들은 그 일례라 하겠다.
하지만 컴퓨터를 이용한 정보의 교류는 그 상대방이 적법한 상대인지, 전송 도중 내용의
이상이 없었는지에 대한 의구심이 생길 수 있다.
인증(authentication)이란 이와 같은 정보의 교류 속에서 전송 받은 정보의 내용이 변조 또는
삭제되지 않았는지와 주체가 되는 송/수신자가 정당한지를 확인하는 방법을 말한다.
보통 인증이라 하면 사용자 인증과 메시지 인증으로 구분한다.
다음은 인증 서비스가 필요한 부분과 사용자 인증 그리고 메시지 인증에 대해 살펴보겠다.
네트워크 통신상의 위협 요소
네트워크를 통해 메시지를 주고 받을 경우 다음과 같은 위협 요소들이 존재할 수 있다.
1) 위장: 마치 자신이 정당한 송/수신자인 것처럼 행동하거나, 불법적 메시지를
정당한 사용자로부터 온 것처럼 위장할 수 있다.
2) 내용 변조 및 수정: 내용의 일부 또는 전체를 삽입, 삭제, 변경, 수정하는 일련의 행위
3) 순서 및 시간 변경: 통신 쌍방간의 메시지를 삭제하거나 재 정렬하는 경우 송신자의 의도와는
다른 결과를 얻을 수 있다. 또한 메시지를 지연시키거나 같은 내용을 반복해 보낼 경우 수신자는
혼란을 일으킬 수 있다.
4) 트래픽 분석: 사용자들 사이의 트래픽 형태를 예측함으로써 연결의 주기와 기간 등을
결정해 주요 정보가 전송되는 혼란을 일으킬 수 있다.
5) 부인: 메시지의 송신 또는 수신 사실을 부인함으로써 신뢰성을 떨어뜨릴 수 있다.
1) ~ 3)까지의 위협 요소는 메시지 인증을 통해 해결이 가능하며,
4)의 경우는 메시지 자체에 대한 기밀성을 강조한 것으로 여러 가지 암호학적 방법을 이용할 수 있다.
5)의 경우는 메시지 인증 및 사용자 인증을 동시에 수행하면 해결 가능하게 된다.
사용자 인증
사용자 인증이란 메시지의 생성, 전송, 수신, 이용, 저장, 등의 일련의 과정에 관련되어 있는 송/수신자,
전송자, 이용자, 관리자들이 제3자에게 자신이 진정한 사용자라는 것을 증명할 수 있도록 하는 기능을 말한다.
그러나 제3자가 위장을 통해 자신이 진정한 사용자임을 증명하려 할 경우 불가능해야 한다.
메시지 인증
메시지 인증이란 전송되는 내용이 변경이나 수정이 되지 않고 본래의 정보를 그대로 가지고 있다는 것을 확인하는 과정을 말한다.
정리해 보면, 수신된 메시지가 정당한 사용자로부터 전송되었고, 변경되지 않았음을 확인하기 위해 인증을 수행하게 된다.
다음에 언급할 디지털 서명 방식은 사용자 및 메시지 인증을 통해 부인을 봉쇄하기 위한 하나의 인증기법이다.
3.2 디지털 서명
최근 들어 세계적으로 인터넷의 열풍이 불고 있다.
이것은 컴퓨터 보급의 확산과 디지털 통신망의 급속한 발전에 따른 결과로,
소위 "정보화 사회"로의 전환이 가속화되어 가고 있는 상황이다.
이런 정보화 사회로의 발전은 일반적인 생활 방식 및 상거래 그리고 행정에 있어 지대한 영향을 마치고 있다.
행정 기관 및 각 기업들은 더욱 빠른 통신을 위해 많은 투자와 지원시책을 전개하고 있으며,
각 개인 역시 인터넷 및 상용 서비스를 통해 개인 홍보 및 많은 정보를 함께 공유하는 등
여러 방법으로 통신망을 이용하고 있다.
이런 현실 속에서 국내외를 연결하는 통신망 또한 그 기술의 발전으로 거대한 하나의 통합 통신망으로
발전해 가면서 그 활용도 또한 매우 활발하게 진척되고 있다.
그런데 이런 모든 정보는 과거부터 사용해 오던 종이 문서의 교류에서 벗어나 전자 문서로
그 주체가 변해가는 것이 하나의 특기 사항이다.
특히 인터넷을 통한 전자상거래, 그리고 전자화 되는 사무실 속에서의 전자 문서 처리 등이 그 대표적인 예다.
이렇듯 전자화된 문서의 교류가 늘어나고, 동시에 사용자들이 증가하면서 부정적인 면도 생기게 되었다.
즉, 원하지 않는 정보가 유출되지는 않았는가? 제3자에 의한 정보의 불법적 변경은 없는가? 등등.
이는 전자 문서 교환에 있어 인감과 같은 역할을 수행하는 디지털 서명을 낳게 한 배경이 되었으며 동시에
개인의 고유성을 인증하기 위해 매우 중요한 의미를 부여한다.
디지털 서명이란 전자화된 문서의 메시지 내용이 수정 및 변조되지 않았음을 보장하는 동시에 메시지의
주체인 사용자들이 진정하다는 것을 제 3자가 확인할 수 있게 하는 인증 방식을 말한다.
전자화된 문서에 대한서명의 종류는 크게 개인 신체의 고유성을 강조해서 지문, 성문(voice), 망막(retina)을
기준으로 파악하는 전자적 확인과 정보 보호 이론을 응용해 인증하는 디지털 서명으로 구분한다.
디지털 서명의 종류는 상당히 많이 나와 있는데, 미국에서는 1991년에 표준 디지털 서명인 DSS(Digital signature
Standard)를 공포한 상태이며, 기술적으로, 법적으로 공개 검토되고 있다.
뿐만 아니라, 1997년 현재 국내에서도 표준안으로 KCDSA(Korean Certificate Digital Signature Algorithm)를
검토하고 있는 중이다.
그 외에도 독일의 Schorr방식, Nyberg-Rueppel 방식 등이 있고, 공통키 암호 시스템을 이용한
Rabin, RSA, ELGamal 서명 방식, ID를 이용한 Fiat-shamir 방식과 Ohta방식, Knapsck문제를
이용한 Merkle-Hellman 방식 등 상당수의 디지털 서명 방식이 나와 있는 상태이다.
3.3 키 관리
암호에서 가장 중요한 정보는 키(key)이다,
아무리 강력한 암호를 사용한다 하더라도 키 정보가 알려진다면 아무런 소용이 없다.
또한 수십년 동안 안전했었고 약점 또한 발견되지 않은 암호알고리즘이라도 암호화에 사용된 키의 크기가 작거나
적절하지 않게 선택된 키를 사용하여 문서를 암호화한다면 그 암호문은 수분만에 해독될 수도 있다.
암호를 분석하려는 사람들이 어떤 암호를 해독하려 할 때 대부분 알고리즘을 분석하기 보다는
키와 관련된 약점을 찾아서 암호를 해독하려 시도할 것이다.
결국 키가 안전하게 관리 되지 못한다면 전체 시스템의 보안 비도가 매우 떨어지게 된다.
이처럼 암호학에서 가장 어려우면서 중요한 문제가 바로 키 관리이다.
이러한 키 관리는 키의 생성에서 교환, 폐기에 이르기까지 키와 관련된 전반적인 사항들을 다룬다.
키 관리에서 다루는 항목과 내용은 다음과 같다.
키 관리의 기능
기능 | 내용 |
생성(generation) | 생성 규칙에 따른 랜덤한 키 생성 |
등록(registration) | 사용자 정보와 키의 등록 |
분배(distribution) | 암호 사용자들간의 키 분배 |
설치(installation) | 키 관리 시스템의 설정 |
저장(storage) | 키의 안전한 저장 |
보관(archiving) | 법적 문제에 대처하기 위한 보관 |
취소(revocation) | 키의 유효성 해제, 취소 목록 생성 |
삭제 (deregistration) | 등록된 키의 삭제 |
폐기(destruction) | 필요 없는 키의 안전한 폐기 |
(1) 키의 분배
사용자 키를 생성한 후에 생성된 키를 안전하게 분배하기 위한 과정을 키 분배라고 한다.
키 분배는 관용키 암호 방식에서의 키 분배와 공개키 방식에서의 키 분배로 나눌 수 있다.
관용 암호에서는 반드시 암호 통신을 하려는 주체들이 항상 같은 키를 공유해야 하며,
이러한 키를 다른 사람이 알 수 없도록 해야 한다.
관용키 암호만을 사용할 경우 키의 분배 문제가 무척 어려워진다.
이 경우에는 송신자와 수신자는 물리적으로 전달하거나 최근에 같이 사용한 키를 사용해서 상대방에게 전달해야 한다.
이러한 방법은 번거롭거나 안전하지 못하기 때문에 현재는 공개키 암호를 이용한 키 분배 방식을 취하고 있다.
공개키 암호의 키 분배에서는 사용자의 신원과 키의 연결 관계가 올바르다는 것을 확신할 수 있는 것이 중요하다.
그렇지 않다면 의도한 바와 다른 사람이 암호문을 볼 수 있기 때문이다.
이러한 문제점들은 다음절에 설명되는 공개키 기반구조를 통해 해결할 수 있다.
(2) 키의 보호
앞서 말한 바와 같이 키는 암호 시스템에서 매우 중요하기 때문에 적절한 키의 보호가 필요하다.
일반적으로 키는 노출이나 변조 또는 파괴 위협으로부터 보호되어야 한다.
키를 보호하는 방법은 암호화 기법을 이용한 보호, 비 암호화 기술을 이용한 키 보호, 물리적인 보호 등이 있다.
일반적으로 키의 노출이나 변조 등을 막기 위해서는 암호화 기법을 사용하며, 키의 유효기간 등을 명시하기 위해
타임 스템프(time-stamp) 등의 비 암호화 기술을 사용한다.
또한 IC 카드 등과 같은 물리적인 보안 매체를 사용하여 키를 안전하게 보관 할 수 있다.
(3) 키의 생명주기(life cycle)
모든 키는 생성, 사용 및 폐기 등 다음과 같은 일련의 주기(life cycle)를 갖는다.
1) 활성 이전 단계(pending active)
: 아직 일반적인 암호화 복호화 동작이 수행되지 않는 단계로서 키는 암호화나 복호화 같은
일반적인 응용을 위해 사용될 수 있다.
2) 활성 단계(active)
: 키가 정보를 암호학적으로 처리하는 데 사용되어진다.
3) 활성 이후 단계(post active)
: 이 상태에서 키는 오직 복호화 또는 검증만을 위해 사용된다.
(4)공개키 기반구조(Public Key Infrastructure)
관용 암호 방식은 비밀키가 공유되었다는 전제를 바탕으로 인증 및 보안 서비스를 제공한다.
하지만 인터넷과 같은 공개 네트워크 상에서는 사전에 키를 안전하게 분배하는 것이 매우
어렵기 때문에 공개키 암호방식이 고안되었다.
공개키 암호 방식은 키 분배 문제를 해결 할 수 있으며 동시에 디지털 서명 기능을 제공한다.
공개키 암호의 가장 중요한 점은 공개키를 공개한다는 것이다.
다른 사람들과 암호 통신을 하기를 원하는 사용자는 자신의 공개키를 상대방에게 전송할
수 도 있고, 특정한 장소에 공개할 수 있을 것이다.
하지만 이러한 방식에서는 다른 사람이 이러한 공개 발표를 쉽게 위장할 수 있다는 단점이 있다.
이러한 단점은 전자 상거래와 같이 오프라인 상에서 이루어지는 거래 등에서 매우 치명적으로 작용할 수 있다.
불법적인 인터넷 쇼핑몰을 개설해 놓고 사용자의 물품 대금만을 가로채고 상품을 배달하지 않는다든지,
유명 쇼핑몰을 위장해서 사용자에게 돈을 받아낼 수 있는 가능성이 많다.
이러한 경우 실제 키의 사용자가 알 수 있는 방법이 없기 때문에 이러한 전자 거래 등은 불가능하게 될 것이다.
이러한 위장을 막기 위해서는 사용자의 신원과 키를 확실하게 연결할 수 있는 방안이 마련되어야 한다.
공개키 기반 구조란 이러한 문제점을 해결하기 위해 사용자들의 공개키를 인증하고,
안전하게 교환할 수 있도록 하기 위한 하부 구조를 의미한다.
(가) 공개키 인증서(Public Key Certificate)
공개키 인증서란 어떤 사람의 공개키에 신뢰성 있는 제3자가 서명한 것을 말한다.
이러한 인증서 안에는 키와 함께 키 소유자의 이름, 소속, 전자우편 주소 등이 포함되며 신뢰 기관은
이러한 내용을 확인한 후에 자신의 서명을 덧붙임으로써 내용이 올바르다는 것을 보증해 준다.
인증서를 획득한 사용자는 신뢰 기관의 서명을 확인함으로써 자신이 획득한 키가 위/변조되지 않았음을 확신할 수 있다.
따라서 인증서는 인증된 공개키의 역할과 더불어 신원을 보증해주는 일종의 신분증 역할을 하기도 한다.
(나) 인증 기관(Certificate Authority)
인증서에 서명을 하는 신뢰기관이라고 한다.
인증기관은 인증서의 발급과 취소, 공표, 보관 등을 담당하며, 전자적인 공증, 키 복구, 등의 부가 서비스를 실행한다.
사용자는 공개키/개인키 쌍을 생성한 후 인증기관에게 공개키와 신원 정보를 포함한 인증요구(Certificate Request)를
전송함으로써 인증서 신청이 이루어진다.
인증서 신청을 받은 인증기관은 적절한 확인 절차를 거쳐서 사용자의 공개키에 서명하고, 인증서를 발급한다.
발급된 인증서는 일정한 유효기간을 갖게 되며 그 한도 내에서는 모두에게 유효함을 확인 받을 수 있다.
키의 분실이나 훼손, 도난 등의 이유로 인증서의 취소가 필요한 경우에는 인증기관에게 취소 요청을 하고,
인증기관은 취소목록(Certificate Revocation List)에 해당 인증서를 추가해서
모든 사람들에게 인증서가 취소된 것임을 알린다.
인증기관은 이러한 인증서 관리 서비스 이외에도 전자 서명을 이용하여 전자적인 문제에 대한 공증 서비스라든지,
키를 잃어 버려서 메시지의 복원이 불가능한 경우에 대비한 키 복구 서비스 등을 제공한다.
(다) 디렉토리(directory)
디렉토리 사용자의 인증서를 저장하는 저장소의 역할을 하는 일종의 데이터 베이스라고 할 수 있다.
인증기관은 발급한 인증서를 발급과 동시에 디렉토리에 저장하며, 사용자들은 자신이 원하는 상대방의
인증서를 이 곳에서 검색할 수 있다.
또한 사용자의 정보는 이곳에서 포괄적으로 관리되며 디렉토리는 상황에 따라 적절한 접근 제한을 제공한다.
현재 디렉토리 표준 형식으로는 ITU-T에서 정의한 X.500 표준 형식과 이것을 간략화 시킨
LDAP(Lightweight Directory Access Protocol) 등이 있다.
(라) X.509
이 방식은 ITU-T에서 정의한 X.500 디렉토리 서비스에서 서로 간의 인증을 위해 개발된 것으로
인증기관(CA)에서 발행하는 인증서(certificate)를 기반으로 하고 있다.
1988년에 ITU-T(International Telecommunication Union Telecommunication Section)가
X,509 초기 버전을 공표하고 1993년에 버전 2를 공표했으며 1995년 이후로는
ISO(International Standardization Organization)의 문서와 동일시되어 공동 개발되었다.
현재에는 X.509버전 3까지 공표되었고 인증서의 확장(extensions)영역에 대한 개정이 진행되고 있다.
X.509 인증서의 특징은 사용자의 신원과 키 정보를 서로 결합한다는 것이다.
현재 사용되는 대부분의 인증서는 이러한 X.509 형식의 인증서 형태를 따르고 있다.
이 이외에도 인터넷의 표준화 단체를 중심으로 SPKI(Simple Public Key Infrastructure)
등의 인증서 형태가 연구중이다.
이러한 인증서들은 키 정보와 특정한 권한 등과 결합함으로써 접근 제어 등에 이용될 수 있다.
(마) 인증경로
모든 인증서는 인증서를 확인하기 위한 경로를 갖는다.
인증기관이 독립적으로 존재하는 경우에는 인증기관의 공개키만으로 인증서의 유효성 확인이 가능하다.
하지만 규모가 큰 공개키 기반구조에서 하나의 인증기관이 모든 사용자의 인증서를 발급하는 것은 매우 비효율적이다.
이러한 문제점을 해결하기 위해 다음과 같은 계층적 인증 구조가 제안되었다.
인증기관 X는 인증기관 Y와 Z의 공개키에 서명하여 인증서를 발급한다.
인증기관 Y는 X로부터 발급받은 인증서를 이용하여 사용자 A의 공개키에 서명하여 인증서를 발급한다.
인증기관 Z는 X로부터 발급받은 인증서를 이용하여 사용자 B의 공개키에. 서명하여 인증서를 발급한다.
이와 같은 구조에서 사용자 A와 B는 하나의 인증기관 X만 서로 신뢰한다면 상대방의 인증서를 신뢰할 수 있다.
A는 B의 인증서가 올바른지Y의 공개키를 이용해서 확인한다.
위의 과정이 올바른지 Y의 인증서가 올바른지 X의 공개키를 이용해서 확인한다.
위의 과정이 올바르면 A는 X를 신뢰하므로 B의 인증서를 신뢰할 수 있다.
'Program > 전자상거래관리사' 카테고리의 다른 글
Web Log 분석 (0) | 2012.06.24 |
---|---|
웹 트래픽 분석 (0) | 2012.06.24 |
사이버 쇼핑몰의 형태 (0) | 2012.06.24 |
배너광고의 단가선정방식 (0) | 2012.06.24 |
물리적 상품/ 디지털 상품 (0) | 2012.06.24 |