1. 암호의 기본 개념

암호화는 적절한 지식(키정보)을 가지고는 해독되지만 그렇지 않으면 읽을 수 없는 형태로 데이터를 변환시키는 과정이다. 암호화의 목적은 전달하고자 하는 사람이외에는 암호화된 데이터를 획득한 사람에게 조차도 해당 정보를 감춤으로써 프라이버시를 보장하자는 것이다. 복호화(Decryption)는 암호화의 역처리로서 암호화된 데이터를 다시 해독 가능한 형태로 되돌리는 변환 과정이다.

암호화와 복호화는 일반적으로 키라 불리는 몇가지 비밀 정보의 사용을 요구한다. 어떤 암호 매커니즘에서는 동일한 키를 암호화와 복호화 모두에 사용하지만 또 다른 메커니즘에서는 그들 처리과정에 사용하는 키를 서로 다르게 한다. 여기서 전자의 경우를 대칭키 혹은 비밀키 암호 메커니즘이라 하며 후자를 비대칭키 혹은 공개키 암호 매커니즘이라고 한다.

최근 들어 암호 분야는 또 다른 이용 영역을 포함하기도 한다. 아주 간단한 암호학적 도구를 이용하여 전자 현금을 이용한 지불 수단으로 이용하도록 하는 정교한 방식과 프로토콜을 구현할 수 있도록 할 수 있다. 이와 같은 것은 원래의 정보자체는 공개하지 않으면서도 관련 정보를 알고 있음을 증명하거나 혹은 비밀의 일부를 이용하여 특정 비밀을 재 구축할 수 있는 방법으로 어떤 비밀을 공유하는 방법을 통하여 할 수 있다.

2. 암호시스템의 분류

키관리 측면에서 암호시스템은 비밀키(대칭키) 또는 관용 암호시스템(conventional crypto-system)과 공개키(비대칭키) 암호시스템(Public key cryptosystem)으로 분류한다.

비밀키 암호시스템은 송 · 수신자가 동일한 키에 의하여 암호화 및 복호화 과정을 수행하므로 키를 안전하게 전송하고 보관함에 있어 어려움이 야기되기 때문에 키 관리가 필연적으로 요구된다. 이러한 키 관리의 어려움을 해결하기 위하여 제시된 개념이 공개키 암호시스템 이다.

공개키 암호시스템은 암호화와 복호화 과정에서 서로 다른 키를 사용하고, 암호화 키를 공개하여 키의 전송 및 비밀 보관 등을 필요없게 만든 시스템이다. 1976년 W. Diffie와 M. E. Hellman은 논문 New Directions in Cryptography에서 공개키 암호시스템이란 개념을 최초로 제시하였다. 그 후 공개키 개념을 실현하기 위하여 여러 알고리즘이 발표되었지만 현재 안전성을 인정받고 있는 공개키 알고리즘은 RSA와 Merkle-Hellman 알고리즘 등이 있다.

3. 비밀키(대칭키) 암호시스템

비밀키 암호기법은 정보를 암호화 할 때와 복호화 할 때 같은 키를 사용하는 알고리즘을 이용하는 방식을 말한다. 고전적인 모든 암호기법이 비밀키 암호기법에 속하며, 공개키 암호 방식이 나오기 전까지의 모든 암호시스템은 비밀키 암호기법을 이용해 왔다. 비밀키 암호화는 공개키 알고리즘에 비해 알고리즘이 매우 간단하므로 속도가 월등히 빠르고, 소프트웨어로 구성시 화일의 크기가 작으며, 하드웨어로 구현하는 경우 회로가 간단해지는 경제적인 이유로 널리 이용되고 있다. 비밀 키 암호방식을 위한 알고리즘의 종류에는 데이타를 취급하는 단위의 크기에 따라 데이타를 큰 블록으로 나누어 암호화하는 블록 사이퍼(block cipher)와 비트나 단위로 암호화하는 스트림 사이퍼(stream cipher)로 크게 나눈다. 현재 대표적인 비밀키 알고리즘은 1977년 공표된 DES (Data Encryption Standard)이다. DES는UNIX운영체제의 패스워드를 암호화하는 "crypt"에 이용되며 특히 미국과 유럽의 은행에 의해 EFT(Electronic Fund Transfer)시스템에 이용되는 등 널리 사용되고 있다.

비밀키 암호시스템에는 크게 블록 암호시스템과 스트림 암호시스템이 있으며 그 개념은 다음의 (그림 2)와 같다.

가. 블록 암호시스템

블록 암호는 고정된 길이의 블록 평문(Plaintext: 암호처리가 안된 문장) 데이터를 같은 길이의 암호문(ciphertext: 암호처리된 문장) 데이터로 변환시키는 비밀키 암호 알고리즘의 한 형태이다. 복호화는 암호화에 사용된 것과 같은 비밀키(secrete key)를 이용하여 암호문 블록에 역변환을 적용하여 처리된다.

? 블록 암호시스템의 종류

현재 많이 쓰이고 있는 블록 암호 알고리즘들은 DES, IDEA, FEAL, LOKI, GOST, SAFER, MISTY등의 블록암호 알고리즘들이 있으며 이들의 특징은 다음의 <표 1>과 같다.

? 블록 암호시스템의 운용모드

임의의 길이 메시지를 암호화시키기 위하여 블록 암호를 이용할 때 블록 암호를 위한 운용모드를 이용하는데, 운용모드를 유용하게 이용하기 위해서는 사용된 암호자체 만큼 안전하고 효율적으로 처리해야 한다는 것이다. 또한 이러한 모드는 기본적인 암호의 고유 속성이외의 속성을 가질 수도 있다. 어떤 블록 크기의 블록 암호에도 적용할 수 있는 일반화된 네 가지의 운용모드가 국제 표준인 ISO/IEC 10116으로 표준화되어 있으며, 이러한 모드에는 ECB(Electronic Code Block), CBC(Cipher Block Chaining), CFB(Cipher Feedback), 그리고 OFB(Output Feedback)가 있다.

나. 스트림 암호시스템

스트림 암호는 대칭 암호 알고리즘의 한 형태이며, 이는 블록 암호보다도 훨씬 빠르게 설계될 수 있다. 블록 암호가 큰 블록의 데이터에 대하여 동작을 하는 반면에 스트림 암호는 비트 단위로 동작한다. 하나의 블록암호에 의한 어떤 특정 평문의 암호화는 같은 키를 사용하는 경우 같은 크기의 암호문을 생성한다. 스트림 암호의 경우, 이러한 조그만 평문 단위의 변환은 암호화 과정동안 만나게 되는 상황에 따라 달라질 것이다.

스트림 암호는 키 스트림을 생성하고 암호화는 키 스트림과 해당 평문을 비트 단위로 배타적 논리합 연산에 의해 처리한다. 키 스트림의 생성은 평문과 암호문과는 서로 독립적으로 처리하거나 혹은 해당 데이터와 그의 암호문에 종속적으로 처리할 수도 있다. 스트림 암호시스템에는 동기 및 자기동기 스트림 암호시스템이 있는데 대부분의 스트림 암호의 설계는 동기 스트림 암호이며 특성은 <표 3>과 같다.

또한, 일회용 패드(one-time pad)방식이 있는데, 최근 스트림 암호의 관심은 일회용 패드의 이론적인 성질에 모아지고 있다. Vernam암호라고 하는 일회용 패드는 거의 랜덤하게 생성되는 비트열을 이용한다. 이러한 키 스트림은 평문 메시지와 같은 크기이며, 앞서 생성된 임의 비트열은 암호문을 생성하기 위하여 평문과 비트 단위로 배타적 논리합을 취한다. 전체 키 스트림은 랜덤하므로 무한한 계산 능력을 갖는 공격자일지라도 그가 암호문을 아는 경우에만 평문을 유추해 낼 수 있다. 이러한 암호를 완전암호(perfect secrecy)라고 하며 일회용 패드의 분석이 현대 암호의 중요한 이슈의 하나이다.

4. 공개키(비대칭키) 암호시스템

중요한 정보를 안전하게 보호하고자 고대로부터 사용되어 온 암호의 최대 난제는 암호화 과정에 사용되는 키를 안전하게 분배시키는 일이다. 이의 해결방안은 1976년 Diffie와 Hellman에 의해 제안된 공개키 암호기법의 개념을 이용하는 것으로 이 암호기법은 키에 관한 정보를 공개함으로써 키관리의 어려움을 해결하고자 하는 방식이다.

공개키 암호시스템은 암호화 할 때 사용하는 키(공개키: Public Key)와 복호화 할 때 사용하는 키(비공개키: Private key)를 다르게 생성하여 공개키는 공개하고 비공개키만 안전하게 유지하는 방식이다. 따라서, 비밀키 암호시스템에서 전제로 하였던 키의 안전한 분배는 필요없다.

공개키 암호 기법의 주요 장점은 안전성은 물론 편의성이 대폭 개선되었다는 것이며, 또 다른 장점으로는 메시지 내용 또는 발신원에 대한 부인을 방지할 수 있는 전자서명(digital signature) 기능을 제공한다는 것이다.

그리고 공개키 암호기법의 단점은 암호화의 처리속도가 비밀키 기법에 비하여 비교적 느리다는 것이다. 현재 이용 가능한 공개키 암호화 방법에 비하여 훨씬 빠른 비밀키 암호화 방법이 많이 있다. 그럼에도 불구하고 공개키 암호기법은 이 두 기법들의 장점들을 이용하기 위하여 비밀키 암호기법과 함께 이용할 수 있다. 즉, 암호화를 위하여 가장 좋은 해결 방안은 공개키 시스템의 안전성에 대한 장점과 비밀키 시스템에서의 속도에 대한 장점을 모두 얻기 위하여 이 두 기법을 상호 보완적으로 혼용한다는 것이다.

공개키 암호시스템의 경우, 아직까지 표준화된 알고리즘은 없으나, 1978년 개발된 소인수 분해의 난해성(Factoring Problem)을 기반으로한 RSA(The Rivest-Shamir-Adleman) 알고리즘이 사실상 표준으로 범세계적으로 수용되고 있으며, NIST가 NSA(National Security Agency)와 공동으로 이산대수의 문제(Discrete Logarithm Problem)를 기반으로 개발한 DSA(Digital Signature Algorithm)가 디지털 서명 표준의 일부로 공표되어 있다. 그외에도 1985년에 개발된 이산대수 문제에 기반을 둔 ElGamal과 타원곡선 이산대수 문제에 기반을 둔 Ellipse Curve, 그리고 1997년 근접 벡터를 찾는 문제를 기반으로 한 Lattice 알고리즘 등이 있다. ♣ <H.D>

[출처] http://kidbs.itfind.or.kr/WZIN/jugidong/939/93903.html

+ Recent posts