DKIM = 메일을 식별하기 위한 도메인키.
DKIM은 스팸과 피싱메일을 구분하기 위해 존재 합니다.
DKIM의 핵심 매커니즘은 서명과 입증입니다.
DKIM은 public과 private keys를 사용합니다.
설명:
DKIM이 public key와 private key를 사용하는 목적은 이 주인이 바로 내가 맞다를 입증하는데 사용 됩니다..
설명 전 먼저 비대칭키 방식에 대해서 간단히 알아보겠습니다.
비대칭키는 public 키와 private 2개의 키가 필요합니다.
public 키로 암호화 한것은 오직 private 키로만 풀 수 있으며, private키로 암호화한 것은 오직 public로 풀 수 있는 구조로 되어 있습니다.
이 부분이 이해하기 어려운데요. 실 세계에서는 주로 접하는게 잠그는키가 따로 있고 푸는 키가 따로 있지 않아요. 이 열쇠로 잠궜으면 이 열쇠로 풀수 있는 형태가 많은데 비대칭키는 집에 현관문을 번호키로 잠그는데 잠글 때 비밀번호랑 문 열 때 비밀번호가 따로 있는 거라고 생각하시면 되어요. 잠그는 용 따로 푸는 용 따로 예요.
또한 특징이 그 반대도 가능한 데요 무슨 말이냐면요.
public 키로 암호화 한 것은 오직 private 키로만 풀 수 있습니다.
반대로 private키로 암호화한 것은 public키로만 풀 수 있습니다.
현관문 잠글 때, 비밀번호 종류가 2개가 있고 이게 잠그는 용 푸는 용 딱 정해진게 아니라 A 비밀번호로 잠그면 B로만 풀 수 있고 B로비밀번호로 잠그면 A 비밀번호로만 풀 수 있다고 생각하면 되여요. 비 대칭 키는 잠그는 용 푸는 용 이런식으로 용도가 딱 정해져 있지 않은 키예요.
그리고 비대칭키에는 public키가 있고 private 키가 있다고 앞서 말씀드렸는데요. public키는 공개를 하고 private는 절대 공개 하지 않습니다.
그래서 이 2개의 키 이름이 public이고 private 키인 거예요.
도메인 소유자는 public키와 private 키 2개를 만듭니다. 그리고 자신이 해당 도메인을 소유하고 있기 때문에 도메인 서버에 공개키를 등록 합니다.
그리고 private키는 꽁꽁 숨겨 놓습니다.
이제 준비는 완료 되었습니다.
이 도메인 소유자는 메일을 보냅니다.
구글에서 해당 메일을 받습니다.
구글이 의심합니다. 이 메일 정말 도메인 소유자가 보낸거 맞아? 라구요.
그럼 DKIM이 어떻게 동작하는지 알아 보도록 하겠습니다.
--
작성 중.
--
DKIM을 참조하는 곳은 최소 GMAIL과 live.com 그리고 yahoo.com은 참조한다고 명시되어 있다.
https://support.google.com/mail/bin/answer.py?hl=en&answer=81126#authentication
http://mail.live.com/mail/policies.aspx
https://help.yahoo.com/kb/mail-for-desktop/SLN3435.html?impressions=true
특히 메일을 이용한 마케팅의 경우 대량의 메일이 발송되어야 하며, 만약 이것들이 설정되어 있지 않은 경우, 스팸또는 아예수신이 안 될 수 도 있다.
DKIM(DomainKeys Identified Mail)은 메일을 발송하는 이메일 서비스 제공자(Email Service Provider: ESPs)가 누구인지 식별하는 기능을 갖는다.
SMTP프로토콜은 다음 순이다.
1. HELO (인사를 한다.)
2. MAIL FROM: sender@domain.com (누구로 부터 온 메일인지 메일 계정을 알려준다.)
3. RCPT TO: reciever@domain.net (누구에게 보낼 메일인지 알려준다.)
4. DATA: (아래 부터 내용이라고 알려주기 위한 기호이다. 즉, 'DATA:'가 나오면 아래부터 실제 메일 내용이야 라고 알려준다.)
(내용과 SMTP헤더를 구분하기 위해 개행을 하나 넣어준다.)
contents (여기에 아무거나 적으면 된다.)
.(마지막은 .으로 마무리를 지어준다.)
5. quti(종료)
여기서 MAIL FROM의 @ 뒤에 오는 도메인을 추출해서 해당 도메인에 대한 TXT레코드를 조회합니다.
해당 TXT는 메일을 보낸 쪽의 공개키가 있습니다.
기술 주요 포인트
- body와 선택된 헤더 부분에 서명을 합니다.
- DKIM-Signature 내에서 시그니처가 전송됩니다.(header)
- DNS에 공개키(public key)를 저장합니다.
-- _domainkey 서브도메인 내에
-- TXT RR을 사용합니다.
-셀렉터를 사용해 네임스페이스를 나눕니다.
-- aging, delegation 등을 위해 멀티 키를 허용 합니다.
DKIM에서 식별자를 SDID(Signing Domain IDentifier)라고 부르며, SDID에는 DKIM-Signature 헤더 필드인 "d=" 태그가 포함 된다.
DKIM을 사용하는 도메인은 나쁜 메일을 보내지 않겠다고 선서 한 거와 마찬가지 입니다. 따라서 private키가 유출되어 생기는 책임으 을 져야 합니다.