7 장. 전자메일보안 7.2 S/MIME 1
개요 S/MIME(Secure/Multipurpose Internet Mail Extension) RSA 데이터보안기술을이용해 MIME 인터넷전자메일형식표준을보안적으로강화시킨것 우선 MIME 에대한이해가필요 2
RFC 5322 전통적인전자메일 (1) 일반적으로사용되는전통적인전자메일형식표준 메시지구성 봉투 (envelope) 내용 (content) 수신자에게배달될객체 (object) 3
전통적인전자메일 (2) 메시지구성 ( 계속 ) 헤더 (header) 키워드 콜론 송신자 (From), 수신자 (To), 제목 (Subject), 데이터 (Data) 키워드내용 본문 (body) 헤더와본문사이는한줄을뗀다 메시지는 ASCII 문서 첫번째빈줄위의줄은모두헤더로서이줄은메일시스템의사용자에이전트 (user agent) 가사용 4
전통적인전자메일 (3) 메시지의예 Date: October 8, 2009 2 : 15 : 49 PM EDT From: "William Stallings" <ws@shore.net> Subject: The Syntax in RFC 5322 To: Smith@Other-host.com Cc: Jones@Yet-Another-Host.com 헤더 (header) Hello. This section begins the actual message body, which is delimited from the message heading by a blank line. 본문 (body) 5
MIME (1) MIME(Multipurpose Internet Mail Extensions) SMTP(Simple Mail Transfer Protocol) 혹은다른메일전송프로토콜과전자메일용 RFC 821 을사용하는데나타난문제점과제약을중점적으로다룬 RFC 5322 구조를확장한것 6
MIME (2) SMTP 의한계 SMTP 는실행파일이나 2 진데이터를전송하지못함 SMTP 는국제언어문자를포함하는문서데이터를전송하지못함 SMTP 서버는특정크기이상되는메일메시지를처리하지못하고거부 ASCII 와문자코드 EBCDIC 를전환해주는 SMTP 게이트웨이는전환시문제발생 X.400 전자메일네트워크로연결되는 SMTP 게이트웨이는 X.400 메시지에포함되는비문서데이터 (nontextual data) 를다루지못함 어떤 SMTP 구현은 RFC 821 에정의된 SMTP 표준에완벽하게작동하지못함 7
MIME 개요 MIME (3) 5 개의새로운메시지헤더필드정의 RFC 5322 헤더에포함 메시지본문에대한정보제공 여러내용형식이정의 멀티미디어전자메일을지원하는표현을표준화 전송부호화를정의 임의의내용형식을메일시스템이수정하지못하는형태로전환가능 8
5 가지헤더필드 MIME (4) MIME-버전 (MIME-Version): 내용-유형 (Content-Type): 내용-전송-부호화 (Content-Transfer-Encoding): 내용-ID(Content-ID): 내용-설명 (Content-Description): 9
MIME (5) MIME 내용유형 멀티미디어환경에서아주다양한정보표현을다루는표준필요 (7 가지유형 ) 10
MIME (6) MIME 내용유형 ( 계속 ) 11
MIME (7) 간단한멀티파트메시지의예 From: Nathaniel Borenstein <nsb@bellcore.com> To: Ned Freed <ned@innosoft.com> Subject: Sample message MIME-Version: 1.0 Content-type: multipart/mixed; boundary="simple boundary This is the preamble. It is to be ignored, though it is a handy place for mail composers to include an explanatory note to non- MIME conformant readers. --simple boundary This is implicitly typed plain ASCII text. It does NOT end with a linebreak. --simple boundary Content-type: text/plain; charset=us-ascii This is explicitly typed plain ASCII text. It DOES end with a linebreak. --simple boundary-- This is the epilogue. It is also to be ignored. 12
MIME (8) 멀티파트 4 가지서브유형 멀티파트 / 혼합서브유형 (multipart/mixed subtype) 멀티파트 / 병렬서브유형 (multipart/parallel subtype) 멀티파트 / 대체서브유형 (multipart/alternative subtype) 멀티파트 / 다이제스트서브유형 (multipart/digest subtype) 13
MIME (9) 멀티파트 / 대체서브유형예 From: Nathaniel Borenstein <nsb@bellcore.com> To: Ned Freed <ned@innosoft.com> Subject: Formatted text mail MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=boundary42 --boundary42 Content-Type: text/plain; charset=us-ascii 동일한정보를다른방법으로표현한것... plain text version of message goes here... --boundary42 Content-Type: text/enriched... RFC 1896 text/enriched version of same message goes here... --boundary42-- 14
MIME (10) 메시지유형 (message type) 메시지 / 부분서브유형 (message/partial subtype) 메시지 / 외부 - 본문서브유형 (message/externalbody subtype) 응용유형 (application type) 15
MIME 전송부호화 MIME (11) 메시지본문에대한전송부호화를정의 전송부호화의목적 광범위한네트워크환경에서신뢰성있는전달 두가지데이터부호방법 인용-인쇄 (quoted printable) 기수64(base64) 16
MIME (12) 내용 - 전송 - 부호화필드값 17
MIME (13) 인용 - 인쇄 (quoted-printable) 전송부호화 대부분의데이터가인쇄할수있는 ASCII 문자에대응되는옥텟으로구성된경우적합 안전하지않은문자를그문자에해당되는부호의 16 진법표기로나타낸다 메시지행을 76 개의문자로제한하기위해되돌릴수있는 (reversible) 행나눔 (line break) 기능을제공 18
base64 전송부호화 기수 -64 부호화 MIME (14) 일반적으로임의의 2 진데이터를부호화하는데사용하는방법 이방법으로부호화를하면메일전송프로그램이부호화처리를할때발생할수있는데이터변경에매우강함 PGP 에서도사용 19
멀티파트의예 MIME (15) 직렬로된다섯개의파트로구성 시작평문파트 시작평문파트 하나의내장된멀티파트메시지 하나의리치문 (richtext) 파트 하나의비 -ASCII 문서집합으로된종료캡슐화문서메시지 20
MIME (16) 멀티파트의예 ( 계속 ) MIME-Version: 1.0 From: Nathaniel Borenstein <nsb@bellcore.com> To: Ned Freed <ned@innosoft.com> Subject: A multipart example Content-Type: multipart/mixed; boundary=unique-boundary-1 This is the preamble area of a multipart message. Mail readers that understand multipart format should ignore this preamble. If you are reading this text, you might want to consider changing to a mail reader that understands how to properly display multipart messages. --unique-boundary-1...some text appears here... [Note that the preceding blank line means no header fields were given and this is text, with US ASCII. It could have been done been done with explicit typing as in the next part.] --unique-boundary-1 21
MIME (17) 멀티파트의예 ( 계속 ) Content-type: text/plain; charset=us-ascii This could have been part of the previous part, but illustrates explicit versus implicit typing of body parts. --unique-boundary-2 Content-Type: audio/basic Content-Transfer-Encoding: base64...base64-encoded 8000 Hz single-channel mu-law-format audio data goes here... --unique-boundary-2 Content-Type: image/jpeg Content-Transfer-Encoding: base64...base64-encoded images data goes here... 22
MIME (18) 멀티파트의예 ( 계속 ) --unique-boundary-2-- --unique-boundary-1 Content-Type: text/enriched This is <bold><italic>richtext.</italic></bold><smaller>as defined in RFC 1896</smaller> Isn't it <bigger><bigger>cool?</bigger></bigger> --unique-boundary-1 Content-Type: message/rfc822 From: (mailbox in US-ASCII) To: (adderss in US-ASCII) Subject: (subject in US-ASCII) Content-Type: Text/plain; charset=iso-8859-1 Content-Transfer-Encoding: Quoted-printable...Additional text in ISO-8859-1 goes here... --unique-boundary-1 23
정규형식 MIME (19) 정규형식 (Canonical form) 시스템사이에사용하기위해표준화된형식으로서내용유형에적합 기본형식 (native form) 과대조적 24
MIME (20) 기본형식과정규형식 25
S/MIME (1) S/MIME 은 PGP 와매우유사 두가지다메시지를서명하고암호화하는기능을제공 기능 봉함된데이터 (Enveloped data): 서명된데이터 (Signed data): 명문 - 서명데이터 (Clear-signed data): 서명되고봉함된데이터 (Signed and enveloped data): 26
S/MIME (2) S/MIME 에서사용하는암호알고리즘 (Cryptographic Algorithm) MUST: 필수 SHOULD: 권장 27
S/MIME 메시지 S/MIME (3) S/MIME 은표 7.7 에나타난여러가지새로운 MIME 내용유형을이용 모든새로운응용유형은 RSA 연구소에서제시 S/MIME 용으로만든공개키암호명세 (PKCS: public-key cryptography specifications) 라고하는지정된 PKCS 를사용 28
MIME 개체보호 S/MIME (4) S/MIME 은서명, 암호혹은두가지를모두이용해서 MIME 개체 (MIME entity) 를안전하게한다 MIME 개체는다음을의미 메시지전체 메시지의한개혹은여러서브파트 (subpart) MIME 내용유형이멀티파트인경우 29
S/MIME (5) MIME 개체보호절차 MIME 개체준비 MIME 개체와보안에관계된데이터 ( 알고리즘식별자와서명 ) 를합하고 S/MIME 으로처리하여 PKCS 객체라고알려진것을만들어낸다 PKCS 객체는메시지내용으로간주되고 MIME 에의해포장 적절한 MIME 헤더붙이기 전송될메시지는정규형식으로변환 전송부호화실행 일반적으로 base64 로 30
S/MIME 내용유형 봉함데이터 서명데이터 명문서명 등록요청 인증서용메시지 S/MIME (6) 31
S/MIME (7) 봉함데이터 봉함데이터 (envelopeddata) MIME 개체준비 1. 특정대칭암호알고리즘 (RC2/40 이나 3DES) 에서사용할의사랜덤 (pseudorandom) 세션키를생성 2. 각수신자를위해수신자의 RSA 공개키로세션키를암호화 3. 각수신자를위해수신자정보 (RecipientInfo) 라고 알려진블록을준비 수신자의공개키인증서식별자세션키암호에사용된알고리즘식별자암호화된세션키 4. 세션키로메시지내용을암호화 32
S/MIME (8) 봉함데이터 ( 계속 ) 5. 암호화된내용을수신자정보뒤에첨부 6. 수신자정보는 base64로부호화 메시지예 : Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7m rfvbnj756tbbghyhhhuujhjhjh77n8hhgt9hg4vqpfyf467ghigfhfyt6 7n8HHGghyHhHUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H f8hhgtrfvhjhjh776tbb9hg4vqbnj7567ghigfhfyt6ghyhhhuujpfyf4 0GhIGfHfQbnj756YT64V 33
봉함데이터복호화 S/MIME (9) 수신자는우선 base64 부호화처리 수신자의개인키로세션키를회수 세션키를이용해서메시지내용을복구 34
서명데이터 S/MIME (10) 서명데이터 (signeddata) MIME 개체준비 1. 메시지다이제스트알고리즘을선택 (SHA 혹은 MD5). 2. 서명될내용의메시지다이제스트나해시함수값을계산 3. 서명자의개인키를이용해서메시지다이제스트를암호화 4. 서명자정보 (SignerInfo) 라고알려진블록을준비 서명자의공개키인증서 메시지다이제스트알고리즘식별자 메시지다이제스트암호화에사용한알고리즘식별자 암호화된메시지다이제스트 35
S/MIME (11) 서명데이터예 Content-Type: application/pkcs7-mime; smime-type=signed-data; name=smime.p7m Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7m 567GhIGfHfYT6ghyHhHUujpfyF4f8HHGTrfvhJhjH776tbB9HG4VQ bnj7 77n8HHGT9HG4VQpfyF467GhIGfHfyT6rfvbnj756tbBghyHhHUujh JhjH HUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H7n8HHGgh yhh 6YT64V0GhIGfHfQbnj75 36
S/MIME (12) 서명된메시지복호화와서명확인 수신자는우선 base64 부호화를처리 서명자의공개키를이용해메시지다이제스트를복호화 서명확인을위해독립적으로메시지다이제스트를계산하고그것을복호화한메시지다이제스트와비교 37
명문서명 S/MIME (13) 명문서명 (clear signing) 은서명된서브유형을갖는멀티파트내용유형을사용하여얻을수있다 서명될메시지를변환하지않는다 MIME 기능은있지만 S/MIME 기능이없는수신자도수신메시지를읽어볼수있다 38
S/MIME (14) 멀티파트 / 서명메시지구성 첫째파트 모든 MIME 유형가능 송신자로부터전송되는도중에변경되지않아야함 7 비트유형이아니면 base64 나인용인쇄로부호화 서명데이터처리와동일하게처리 메시지내용필드가비어있는서명데이터형식의개체생성 이객체는별도서명 Base64 로부호화 두번째파트 MIME 내용유형의응용과서브유형 pkcs7-signature 39
S/MIME (15) 멀티파트 / 서명메시지구성 ( 계속 ) Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary=boundary42 두파트명문서명을나타냄 --boundary42 Content-Type: text/plain This is a clear-signed message. 사용된메시지다이제스트유형을나타냄 --boundary42 Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7s ghyhhhuujhjhjh77n8hhgtrfvbnj756tbb9hg4vqpfyf467ghigfhfyt6 4VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tbB9HGTrvvbnj n8hhgtrfvhjhjh776tbb9hg4vqbnj7567ghigfhfyt6ghyhhhuujpfyf4 7GhIGfHfYT64VQbnj756 --boundary42-- 40
서명확인방법 S/MIME (16) 수신자는첫번째파트의메시지다이제스트를택해그것을두번째파트의서명으로부터회수한메시지다이제스트와비교하여서명을확인한다 41
등록요청 S/MIME (17) 응용프로그램이나사용자가공개키인증서를인증기관에요청 application/pkcs10 S/MIME 개체를이용해서인증서요청을전송 인증서요청에포함되는사항 인증서요청정보 (certificationrequestinfo) 블록 인증서주체 ( 인증될공개키의소유자 ) 의이름 사용자의공개키비트열 공개키암호알고리즘식별자 송신자의개인키로서명된인증서요청정보블록의서명 42
인증서용메시지 등록요청의응답 S/MIME (18) 오직인증서만포함된메시지 오직인증서취소목록 (CRL: certificate revocation list) 만을가지고있는메시지 응답메시지는초기상태 (degenerate) 의 smimetype 매개변수를가진 application/pkcs7-mime type/subtype 이다 이단계에서서명데이터메시지를만드는것과동일한방법으로처리 43
S/MIME 인증서처리 S/MIME (19) S/MIME 은 X.509 버전 3 규정을준수하여공개키인증서활용 키관리시스템 X.509 원래의인증서계층구조와 PGP 의웹형태신뢰구조를혼합한형태 S/MIME 관리자와사용자는각클라이언트에게신뢰할수있는키목록과인증서취소목록을제공하여클라이언트를구성 44
S/MIME (20) 사용자에이전트역할 S/MIME 사용자가수행할키관리기능 키생성 (Key generation): 등록 (Registration): 인증서저장과검색 (Certificate storage and retrieval): 베리사인인증서 베리사인은 S/MIME 와다양한다른응용프로그램과호환되도록하는 CA 서비스를제공 베리사인은제품이름베리사인 Digital ID 와함께 X.509 인증서를발행 45
S/MIME (21) 디지털 ID 에포함되는내용 소유자의공개키 소유자의이름혹은별칭 (alias) 디지털 ID 의만료일자 디지털 ID 의순서번호 디지털 ID 를발행한인증기관의이름 디지털 ID 를발행한인증기관의디지털서명 추가로사용자가제공하는정보 주소 전자메일주소 기본적등록정보 ( 국가, 우편번호, 나이그리고성별 ) 46
S/MIME (22) 베리사인공개키인증서보안레벨 클래스 1 과클래스 2 는온라인으로처리 처리절차 클래스 1 PIN 과디지털 ID 를찾는정보를신청자가보낸전자메일주소로보내사용자의전자메일주소를확인 클래스 2 클래스 1 디지털 ID 와연관된것을검사 고객데이터베이스와자동화된비교를통해신청서의정보를확인 최종적으로사용자에게디지털 ID 가사용자의이름으로발행되었다는사실을알려주는확인정보를신청자가보내온우편주소로보낸다 47
S/MIME (23) 베리사인공개키인증서보안레벨 ( 계속 ) 처리절차 ( 계속 ) 클래스 3 엄격한수준의신원확인을요구 개인은자신의신분을공증한신용장을제공하여신청하거나본인이직접찾아가서신청해야만한다. 48
S/MIME (24) VeriSign 공개키인증서클래스 49
S/MIME (25) VeriSign 공개키인증서클래스 ( 계속 ) 50
강화된보안서비스 S/MIME (26) 서명된수령증 (Signed receipts): 보안레이블 (Security labels): 안전한우편목록 (Secure mailing lists): 51