이메일 보안(S/MIME)에 대한 이해

2008. 11. 25. 14:23IT Manage

㈜안랩코코넛 선임컨설턴트 이용수
yslee@coconut.co.kr

원문 : http://www.coconut.co.kr/board/view.php?id=lecture&no=937&pg_no=1&searchtype=&searchdata=&view_no=40

1. 메일시스템 동작 방식
    메일시스템의 구성과 동작 방식은 다음과 같다.

                         <A-B 사용자간 메일 송,수신>

메일은 MTA, MUA, DMA, POP3, IMAP4등으로 구성된다.
⊙MTA(Mail Transfer Agent) : 자신에 등록되어 있는 메일서버에 SMTP를 사용하여 메일을 전달한다.
⊙MUA(Mail User Agent) : Eudora, Outlook Express등과 같이 메일을 작성하고 읽는 사용자 인터페이스이다.
⊙MDA(Mail Delivery Agent) : 메일서버에서 수신된 메일을 분류하여 해당 수신자의 메일박스에 메일을 전달한다.
⊙POP3/IMAP4 : 사용자가 메일을 읽어올 때 사용하는 프로토콜이며, 각각 110번 포트와 143포트를 사용한다.

2. 메일표준 포멧(RFC822)
전자우편(메일)의 메일 형식은 FRC822등에서 규정하고 있으며 그 표준포멧은 다음과 같다.
                  <RFC822 메일 메시지 형식>

Envelope : 송신측과 수
신측의 메일 주소를 나타낸다.
Message : Header와 Body로 구성된다.
-Header : From, To, Cc, Date, subject등의 필드로 시작되며, <CR><LF>로 마감된다.
-Body : 최대 1000문자의 7비트 ASCII문자로만 구성되며 각 라인은 <CR><LF>로 마감된다.

 
From: "B" <B@beta.co.kr>
To: <A@alpa.co.kr>
Subject: =?ks_c_5601-1987?B?waa48Q==?=
Date: Sun, 27 Aug 2006 20:39:18 +0900
MIME-Version: 1.0
Content-Type: text/plain;
charset="ks_c_5601-1987"
Content-Transfer-Encoding: quoted-printable
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962

3. MIME(Multipurpose Internet Mail Extensions)
SMTP는 ASCII 문자로된 RFC822 형식의 메시지만 전송 가능하다. 한국어와 같이 2바이트로 구성되는 다중언어, 실행파일, 그림파일과 같은 이진파일도 SMTP로 전송될 수 있도록 ASCII 코드로 변환하는 코드변환방식을 Multipurpose Internet Mail Extensions(MIME)이라고 한다.
MIME에서는 이진 데이터들을 6비트씩 분할한 후 이를 ASCII 문자로 변환하는 Base64(또는 Radix64)라고 하는 코드변환방식을 사용하여 메일을 송신하고, 수신측에서는 이를 복원한다. 또한 MIME 형식으로 변환된 메시지에 대하여, 메일의 헤더에 MIME으로 변환된 것임을 알리기 위해 MIME 헤더가 추가된다.

MIME 메시지 형식은 다음과 같다.
            <MIME1.1을 사용한 jpeg 파일의 메일 메시지 형식>

4.SMIME(Secure Multipurpose Internet Mail Extenseions)
S/MIME(Secure/Multipurpose Internet Mail Extensions)은 MIME 데이터를 안전하게 송수신하는 방법을 제공한다. 인터넷의 MIME 표준에 의거하여 S/MIME은 전자 메시지에 있어서 인증, 메시지 무결성, 송신처의 부인방지(전자서명 이용), 프라이버시와 데이터 보안(암호 이용)과 같은 암호학적 보안 서비스를 제공한다. S/MIME은 기존의 우편 서비스의 사용자 에이전트 (MUA, Mail User Agent)에 송신하는 메시지에 암호 서비스를 부가시키고 수신 받은 메시지의 암호 서비스를 해석하는 데 이용된다. 그러나, S/MIME은 전자우편에만 한정되어 있지는 않다. HTTP와 같은 MIME 데이터를 전달하는 전송 메커니즘에도 사용된다. 따라서, S/MIME은 MIME의 객체 기반적인 특징을 이용하며 여러 가지 전송 시스템내의 메시지의 교환을 제공한다.
더욱이, S/MIME은 소프트웨어적으로 생성한 문서의 서명과 인터넷상에서 전송된 팩시밀리 메시지의 암호화와 같이 사람이 불필요한 암호학적 보안 서비스를 사용하는 자동화된 메시지 전달 에이전트에 사용될 수 있다.

S/MIME에서 사용하는 암호, 서명, 암호 및 서명시 사용되는 알고리즘은 다음과 같다.
기능 알고리즘
서명용 메시지 다이제스트 방식 SHA-1, MD5
암호화된 서명 방식 DSS, RSA
세션키 분배방식 Diffie-Helman, RSA공개키방식
세션키를 이용한 켄텐츠 암호방식 3DES, RC2/40bit

S/MIME에서는 용도에 따라 다음과 같은 3가지의 MIME 형식이 사용된다.
서명된 메시지
-Multipart/signed 형식 : 평문 메시지와 서명이 각각 분리된 multipart로 구성된다.
-Application/pkcs7-mime/signed-data 형식 : 평문 메시지와 서명을 하나의 Signed-data CMS(Cryptographic Message Syntex)형식에 수납한다.
암호화된 메시지
-Application/pkcs7-mime/enveloped-data 형식 : 평문 메시지를 암호화 하여 enveloped-data CMS형식에 수납한다.

4.1 Multipart/signed 형식
메시지 자체는 평문으로 전송되지만, 메시지에 대한 무결성을 위한 서명을 부착할 때 사용된다. 이의 경우 본문의 내용이 평문이기 때문에 S/MIME의 기능과 상관없이 본문의 내용을 확인할 수 있다.


                 <multipart/signed형식의 서명된 S/MIME 메시지>

⊙Content-Type: Multipart/Signed : 이 메시지는 평문 메시지와 서명부분으로 분리되어 구성됨을 표시한다.
⊙Protocol: "application/pkcs7-signature" : 디지털 서명부분은 signed-data PKCS#7형식임을 표시한다.
⊙miclag=sha-1 : 서명용 메시지 다이제스트방식이 SHA-1 알고리즘을 사용함을 표시한다.
⊙boundary="---boundary" : 메시지가 구분되어 있음을 확인한다. 하나는 일반평문, 다른하나는 디지털서명(PKCS#7) 형식의 base64 MIME 코드로 구성됨을 확인할 수 있다.
⊙Content-Type: application/pkcs7-singature;name=smime.p7s : MUA가 메일을 처리할 때 이 서명 부분을 첨부물로 간주하여 처리하도록 지시한다. 이것은 signed-data CMS형식에는 송신측의 인증서도 함께 수납되어 있기 때문에 이것을 저장할 수 있도록 한다.

다음은 아웃룩 익스프레스에서 설정방법이다.
도구> 보안> 옵션> 고급>

<multipart/signed 형식의 S/MIME 메일전송 방법>

4.2 Application/pkcs7-mime/signed-data 형식

이의 경우 본문의 내용이 encapsulated contents info영역에 있어 S/MIME의 서명에 대한 인증이 없이는 본문의 내용을 확인할 수 없다.
<application/pkcs7-mime/enveloped-data형식의 서명된 S/MIME 메시지>

위의 세가지 형식을 조합하여 서명과 암호화를 하여 보안메일을 전송할 수 있다. 즉, signed방식의 전자서명과 enveloped-data에 의한 데이터 암호화를 하여 메일의 안전성을 확보할 수 있다.

5. 사용자 메일 보안 설정
사용자 메일클라이언트(아웃룩 익스프레스)에서는 다음과 같이 위의 내용을 적용하여 자신의 전자서명과 본문에 대한 암호화를 할 수 있다.
               <아웃룩익스프레스에서의 서명 및 암호화 설정>

⊙디지털 ID의 기능
디지털 ID는 "공개 키," "개인 키" 및 "디지털 서명"으로 구성된다. 메시지에 디지털 서명을 할 때에는 디지털 서명과 공개 키를 메시지에 추가한다.

⊙디지털 서명
보안 메일을 사용하기 위해서는 디지털 ID가 필요하다. 디지털 ID는 보증 기관(verisign, Thawte, SignKorea등)중 무료로 메일 보안인증서를 교부해 주는 인증기관으로 부터 발급받을 수 있다. 받는 사람은 디지털 ID를 사용하여 보낸 사람의 신분을 확인할 수 있다.

⊙개인 키
개인 키는 다른 사람들이 보낸 메시지의 암호를 풀 수 있게 한다. 암호화된 메일을 읽기 위해서는 개인키를 가지고 있어야 한다.

⊙공개 키
사용자가 메일에 디지털 서명을 추가하면 공개 키도 포함하게 된다. 공개키는 다른 사람들이 여러분에게 보낼 메시지를 암호화할 수 있는 일종의 암호화 공식이라고 생각하면 된다. 메시지가 사용자의 공개 키를 이용해서 암호화되면 자신의 고유한 개인 키를 가지고 있지 않은 사람은 메시지를 읽을 수 없기 때문에 여러분의 공개 키를 가능하면 많은 사람들이 사용할 수 있도록 해야 한다. 디지털 서명이 첨부된 메시지를 받게 되면 공개 키도 함께 받게 되는데, 이 키를 사용하여 여러분에게 암호화된 메일을 보낼 수 있다.

지금까지 우리가 주로 사용하는 인터넷 메일에 대한 기본적인 이론과 메일에 대한 보안을 강화하기 위한 S/MIME에 대해 알아 보았다. S/MIME은 전자 메시지에 있어서 인증, 메시지 무결성, 송신처의 부인방지(전자서명 이용), 프라이버시와 데이터 보안(암호 이용)과 같은 암호학적 보안 서비스를 제공할 수 있는 보안기술로 지속적으로 발전하고 있으며 이번 호에서 S/MIME에 대한 기본적인 개념을 이해하는 기회가 되었길 바란다.

상단에 출처 밝혔다시피 퍼온글입니다.