암호화

암호화는 메시지를 변조(암호화) 및 복조(복호화)하도록 하는 기술을 말한다.

암호화 기술은 합법적 참여자들간에 메시지 변/복조 규칙에 대한 약속을 정하고, 이 규칙에 따라 송신하려는 메시지를 변조(암호화)시켜 전달 혹은 보관하며, 메시지 수신시 또는 접근 권한이 있는 사람이 필요에 따라 이를 복조(복호화)하도록 하는 기술을 말한다.
암호 기술은 정보보호 서비스 제공의 핵심 요소기술로, 크게 데이터보호를 위한 기밀성 관련 기술과 신원 확인, 내용인증, 부인 방지를 위한 인증 기술 등 두 분야로 양분된다.
이 중에서 기밀성이란 공격자가 전송되고 있는 메시지에 대한 정보를 얻을 수 없다는 것을 보장해주는 것으로 현재까지 제시된 기법은 크게 다음 두 가지로 구분할 수 있다.

암호화(Encryption) • 암호키와 수학적인 함수를 이용하여 평문을 알아보기 힘든 암호문의 형태로 변환시키는 것으로, 안전하게 구현된 암호시스템에서는 키를 알지 못하는 사람은 암호화된 데이터를 복호할 수 없는 기능
• 예를 들어, 암호화 키와 복호화 키가 같은 대칭키 암호로는 DES, SEED, AES 등을 들 수 있으며 암호화 키와 복호화 키가 다른 공개키 암호로는 RSA, ElGamal 등
스테가노그라피(Steganography) • 비밀 메시지의 내용뿐만 아니라 존재까지도 공격자가 알 수 없게 비밀 메시지를 커버정보 안에 숨기는 기법
• 예를 들어 숨기고자 하는 메시지를 이미지(커버정보)의 최하위 비트로 바꾸어 줌으로써 원본 이미지와 비밀메시지가 삽입된 이미지를 공격자가 구분할 수 없게 만드는 기법
• 암호화 기술에서는 암호화 알고리즘이 그 핵심 기술이라고 할 수 있으며, 이 알고리즘을 전송 데이터에 이용한 암호화 프로토콜 및 암호화된 데이터의 기밀성을 유지하는데 꼭 필요한 키 관리 메커니즘이 암호화에 있어서 고려해야 할 기술들

암호화 알고리즘

특별한 보안 목적을 달성하고자 하는 수학적 함수로서, 대칭키 알고리즘, 비대칭키 알고리즘 및 해쉬 알고리즘 등으로 나눌 수 있다.

대칭키 알고리즘

대칭키 암호 기술은 비밀키 암호 기술 혹은 단일키 암호 기술이라고 하며, 송/수신자가 동일한 키에 의하여 암호화 및 복호화 과정을 의미한다.

대칭키 암호화 알고리즘(이미지)

변환하는 방법에 따라 블록 암호알고리즘과 스트림 암호알고리즘으로 구분되며, 많은 정보기술과 상호 운용이 쉽고 데이터 처리량도 강력한 장점을 갖는다.
또한 알고리즘의 내부 구조가 간단한 치환과 순열의 조합으로 되어 있어서 시스템 환경에 맞는 적절 한 암호알고리즘을 쉽게 개발할 수 있다.
그러나 정보교환 당사자 간에 동일한 키를 공유해야 함으로 여러 사람과의 정보 교환 시 많은 키를 유지 관리하여야 하는 어려움이 존재한다. 대표적인 대칭키 암호알고리즘의 비교는 다음과 같다.

대칭키 알고리즘 비교(이미지)

구분 설명
DES
(Data Encryption Standard)
• 64비트 평문을 64비트 암호문으로 만드는 블록암호 시스템으로 64비트 키를 사용
IDEA
(International Data Encryption Algorithm)
• 블록알고리즘으로 64비트 평문에 대해 동작하며, e-mail을 위한 보안도구로 널리 이용되고 있는 PGP(Pretty Good Privacy)에 사용
AES
(Advanced Encryption Standard)
• DES의 안전성 문제로 인해 이를 대신할 차세대 블록 암호알고리즘으로 FIPS 197로 제정됨으로써 공식적인 표준으로 인정
SEED • 한국정보보호진흥원과 국내 암호전문가들이 함께 개발한 블록 암호알고리즘으로 국내에서 사용되는 사설 보안 시스템에 적용하도록 한 국가 표준
ARIA • 현재 국가 표준 암호알고리즘인 SEED와 함께 국가 암호알고리즘으로 사용될 차세대 암호알고리즘으로 미국•유럽 등의 새로운 표준 제정 시 고려된, 안전성 및 효율성 기준에 부합되도록 AES의 규격

공개키 알고리즘

공개키 암호알고리즘은 비대칭 암호알고리즘 또는 이중키 암호알고리즘이라고 부른다. 비밀키(Secret key)와 공개키(Pubic key)라는 상이한 두 개의 키를 사용하는데, 이 키들은 키 생성 알고리즘을 통해 생성되어 하나는 타인들에게 공개되고, 나머지 하나는 사용자 자신만이 비밀리에 사용한다. 송신자가 수신자에게 어떤 메시지를 보낼 때, 수신자의 공개키를 이용하여 암호화해서 송신하면, 수신자는 자신에게 도착한 암호문을 자신의 비밀키를 사용하여 복호화하고 평문을 획득할 수 있다.

공개키 알고리즘(이미지)

사용자 입장에서 볼 때, 오직 자신의 비밀키 한 개만 잘 보관하면 되므로 대칭키 암호알고리즘보다 훨씬 적은 수의 키를 유지하면 된다. 그러나 암호화 및 복호화 속도가 느리며, 키의 길이가 대칭키 암호알고리즘보다는 크기 때문에 계산 효율성이 저하되는 단점이 존재한다.

대표적인 공개키 암호알고리즘은 다음과 같다.

구분 설명
RSA • 1978년에 MIT 공과 대학의 Rivest, Shamir, Adelman 등 3인이 공동 개발한 RSA법(RSA scheme)을 사용한 공개키 암호 방식이므로 큰 수의 소인수 분해에는 많은 시간이 소요되지만 소인수 분해의 결과를 알면 원래의 수는 곱셈에 의해 간단히 구해지는 사실에 이론적 바탕
ECC
(Elliptic Curve Cryptography)
• 타원곡선 암호인 ECC는 비트당 안전도가 타 공개키 시스템보다 효율적이라는 것이 알려져, 최근 높은 속도의 구현이 가능하게 됐으며, 특히 타원곡선방법은 최근 RSA 암호시스템의 근간이 되는 인수분해 문제와 소수성 테스트를 위한 효율적 알고리즘을 제공
양자 암호 기술 • 도청이 불가능한 꿈의 암호로 불리며, 20세기에 출현한 양자역학의 핵심적인 원리를 이용

대칭키와 비대칭키 암호 알고리즘의 비교

대칭키와 비대칭키 간의 차이점은 아래와 같으며 각 비교 항목을 참조하여 적절한 선정 기준을 세울 수 있다.

항목 대칭키 알고리즘 비대칭키 알고리즘
키의 상호관계 암호화키 = 복호화 키 암호화키 ≠ 복호화키
암호화 키 비밀 공개
복호화 키 비밀 비밀
암호 알고리즘 비밀/ 공개 비밀
대표적인 예 DES, SEED RSA
비밀키 전송 필요 불필요
키 개수 N(n-1)/2 비밀보관 (통신 상대자 수) 2n 비밀보관 (자신의 비밀키)
안전한 인증 곤란 용이
암호화 속도 고속 저속
경제성 높음 낮음
전자서명 복잡 간단

해쉬 알고리즘

해쉬 함수는 일방향 함수(one-way function)로 다양한 길이의 입력을 고정된 짧은 길이의 출력으로 변환하는 함수이다.

  • Y=h (x)

여기서 x는 가변 길이의 메시지이고, y는 해쉬함수 h를 통하여 생성되는 고정 길이의 해쉬값(hash code)이다. 해쉬함수를 거쳐 나온 값 Y를 메시지 다이제스트(Message Digest)라고 정의한다.

일반적으로 해쉬함수는 다음과 같은 특징을 갖는다.

  • 다양한 가변 길이의 입력에 적용
  • 고정된 길이의 출력 생성
  • 주어진 입력값을 해쉬하는 것이 용이
  • 해쉬 결과값으로 입력값을 계산하는 것은 불가능
  • 동일한 해쉬값을 가지는 서로 다른 메시지 쌍의 부존재
구분 설명
HAS-160 • HAS-160은 SHA-1과 마찬가지로 임의의 길이를 가지는 입력 메시지를 512비트 블록 단위로 처리하여 160비트의 출력을 생성하는 해쉬 알고리즘으로 SHA-1과 유사
MD5 • MD5는 MD4의 개선된 버전으로, 임의의 메시지를 입력으로 받아 128비트의 고정된 출력을 생성하는 해쉬 알고리즘
SHA-1 • SHA-1은 MD4알고리즘에 기반한 해쉬 알고리즘으로 임의의 길이를 가지는 입력 메시지를 512비트 블록으로 처리하고, 출력은 160비트를 생성
• 출력값인 메시지 다이제스트는 메시지보다 훨씬 작기 때문에 메시지에 서명하는 것보다 처리의 효율성 증대

암호화 프로토콜

프로토콜은 네트워크 시스템에서 통신을 위한 잘 정의된 메시지의 형식이다. 이러한 프로토콜 중에 보안을 강조한 프로토콜로는 SSL(Secure Socket Layer), SSH(Secure Shell), IPSEC(Internet Protocol Security Extension), PGP(Pretty Good Privacy) 등이 있다.

전송 보안 SSL, SSH, IPSec

전송보안 기술에는 SSL, SSH, IPSec, VPN, PGP기술이 있으며……

E-mail 보안 PGP

PGP는 인터넷 전자우편을 암호화하고 복호화하는데 사용되는 프로그램이며, 이것은 또 송신자의 신원을 확인함으로써 그 메시지가 전달 도중에 변경되지 않았음을 확신할 수 있도록 해주는 암호화된 전자서명을 보내는 데에도 사용될 수 있다.
PGP는 프리웨어나, 저가의 상용 버전으로 모두 나와있으며, 개인들과 많은 기업들에 의해 가장 광범위하게 사용되는 비밀보장 프로그램이다.
이 프로그램은 1991년에 Philip R. Zimmermann에 의해 개발되었으며, 전자우편 보안에 있어 사실상의 표준이 되었고, PGP는 다른 사용자들이나 침입자들이 읽지 못하도록, 파일들을 암호화해 저장하려는 경우에도 역시 사용될 수 있다.

구분 설명
동작원리 • PGP는 전체 메시지를 암호화하는데 사용되었던 짧은 키를 암호화하기 위해 공개키를 사용하며, 암호화된 메시지와 짧은 키는 모두 수신자에게 보내어지며, 그 수신자는 짧은 키를 해독하기 위해 먼저 자신의 개인키를 사용한 다음, 전체 메시지를 해독하기 위해 짧은 키를 사용
• PGP는 RSA와 Diffie-Hellman 등 두 가지 공개키 버전
- RSA 버전은 전체 메시지를 암호화하는데 사용되는 짧은 키의 생성을 위해 IDEA 알고리즘을 사용하며, 짧은 키를 암호화하기 위해 RSA를 사용
- Diffie-Hellman 버전은 전체 메시지를 암호화하기 위한 짧은 키를 위해 CAST 알고리즘을 사용하며, 짧은 키를 암호화하기 위해 Diffie-Hellman 알고리즘을 사용
• 전자서명을 보내기 위해, PGP는 사용자의 이름과 기타 서명 정보로부터 해시코드를 생성
PGP의 사용 제한 • 현재 PGP기술은 공개되어 있지만, PGP프리웨어를 상업적인 목적으로 사용하는 것은 불법

시스템 구성요소 및 구성도

암호화 기술은 다음과 같은 네 가지 요소 즉, 자료(Plain text), 암호화하는 키, 암호화된 자료(Cypher Text), 복호화하는 키 등으로 구성된다.

암호화 구성도(이미지)