DNS DKIM 레코드란?

DKIM 레코드는 특별한 DNS TXT 레코드로, 이메일의 신뢰성을 확인하는 데 사용하는 공개 키를 저장합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • DKIM이 이메일 스팸을 차단하는 방법 설명
  • DKIM 레코드 예제 보기
  • DKIM 헤더의 작동 방식 설명

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

DKIM이란?

도메인키 식별 메일(DKIM)은 스팸 발송자 및 기타 악의적인 당사자가 합법적인 도메인을 가장하는 것을 방지하는 데 도움이 되는 이메일 인증 방법입니다.

모든 이메일 주소에는 도메인(주소에서 "@" 기호 뒤의 일부)이 있습니다. 스팸 발송자와 공격자는 피싱 공격 또는 기타 사기를 수행하려고 이메일을 보낼 때 도메인을 가장하려고 할 수 있습니다.

Chuck가 example.com에서 근무하는 Alice를 속여서 자신에게 기밀 회사 정보를 보내게 만들려고 한다고 가정해 보겠습니다. 그는 그녀에게 "bob@example.com"에서 온 것처럼 보이는 이메일을 보내 자신이 example.com에서 근무한다고 생각하도록 속일 수 있습니다.

DKIM은 발신자 정책 프레임워크(SPF)도메인 기반 메시지 인증, 보고 및 적합성(DMARC)와 함께 공격자가 이러한 방식으로 도메인을 가장하는 것을 훨씬 더 어렵게 만듭니다. DKIM 및 SPF를 통과하지 못한 이메일은 '스팸'으로 표시되거나 이메일 서버에서 전송되지 않습니다. example.com 도메인에서 DKIM, SPF, DMARC를 설정한 경우, Alice는 Chuck의 악의적 이메일이 스팸 폴더로 이동하거나 이메일 서버에서 완전히 거부되기 때문에 Chuck의 악의적 이메일을 볼 수 없습니다.

보고서
2023년 GigaOm Radar DNS 보안 부문
보고서
DNS 인프라를 보호하세요

DKIM은 어떻게 작동할까요?

DKIM에는 도메인의 도메인 네임 시스템(DNS) 레코드에 저장되는 DKIM 레코드와 도메인의 모든 이메일에 첨부되는 DKIM 헤더의 두 가지 주요 측면이 있습니다.

DKIM은 공개 키 암호화를 기반으로 하는 디지털 서명 체계를 사용하여 이메일의 출처와 실제로 해당 도메인에서 이메일을 보내는 서버에서 온 위치를 인증합니다. 한 쌍의 암호화 키가 사용됩니다. 보낸 사람이 메시지에 서명하기 위한 개인 키와 받는 사람이 서명을 확인하기 위한 공개 키입니다. 받은 사람은 공개 키를 사용하여 메시지에 서명할 수 없으며 그 반대의 경우도 마찬가지입니다.

이메일 공급자는 공개 키와 개인 키를 생성합니다. 이메일 공급자는 도메인 소유자에게 공개 키를 제공하고, 도메인 소유자는 공개적으로 사용 가능한 DNS 레코드인 DKIM 레코드에 공개 키를 저장합니다.

해당 도메인에서 보낸 모든 이메일에는 개인 키로 서명된 데이터 섹션이 포함된 DKIM 헤더가 포함되어 있으며, 이를 "디지털 서명"이라고 합니다. 이메일 서버에서는 DKIM DNS 레코드를 확인하고, 공개 키를 가져오며, 공개 키를 사용하여 디지털 서명을 확인할 수 있습니다.

또한 이 프로세스에서는 이메일이 전송 중에 변경되지 않았는지 확인됩니다. 이메일 헤더 또는 이메일 본문이 변경된 경우(의약품 용기의 변조 방지 봉인처럼) 디지털 서명이 확인되지 않습니다.

가입
모든 Cloudflare 요금제에 포함된 무료 DNS

DKIM 레코드란?

DKIM 레코드는 DKIM 공개 키(개인 키로 서명된 모든 항목을 확인하는 데 사용되는 무작위 문자열)를 저장합니다. 이메일 서버는 도메인의 DNS 레코드를 쿼리하여 DKIM 레코드를 확인하고 공개 키를 봅니다.

DKIM 레코드는 실제로 DNS TXT("텍스트") 레코드입니다. TXT 레코드는 도메인 관리자가 도메인과 연결하려는 텍스트를 저장하는 데 사용할 수 있습니다. DKIM은 이러한 유형의 DNS 레코드의 많은 용도 중 하나입니다. (경우에 따라 도메인은 DKIM 레코드를 키를 가리키는 CNAME 레코드로 저장했지만, 공식 RFC에서는 이러한 레코드가 TXT여야 합니다.)

다음은 DKIM DNS TXT 레코드의 예입니다.

이름 유형 목차 TTL
big-email._domainkey.example.com TXT v=DKIM1; p=76E629F05F70
9EF665853333
EEC3F5ADE69A
2362BECE4065
8267AB2FC3CB
6CBE
6000

이름

대부분의 DNS TXT 레코드와 달리 DKIM 레코드는 도메인 이름일 뿐만 아니라 특수 이름으로 저장됩니다. DKIM 레코드 이름은 다음 형식을 따릅니다.

[selector]._domainkey.[domain]

도메인 selector는 도메인에서 사용하는 이메일 서비스 공급자가 발급한 특수 값입니다.selector는 DKIM 헤더에 포함되어 이메일 서버가 DNS에서 필요한 DKIM 조회를 수행할 수 있도록 합니다.domain은 이메일 도메인 이름입니다.._domainkey.는 모든 DKIM 레코드 이름에 포함됩니다.

DKIM 레코드를 조회하기 위해 이메일 서버는 도메인 이름뿐만 아니라 이메일 서비스 공급자가 제공하는 DKIM 선택기도 사용합니다. example.com에서 이메일 서비스 공급자로 Big Email을 사용하고 Big Email이 DKIM 선택기 big-email을 사용한다고 가정해보겠습니다. 대부분의 example.com의 DNS 레코드는 example.com이라고 명명되겠지만, 그 DKIM DNS 레코드는 big-email._domainkey.example.com으로 명명될 것이며, 이는 위의 예에 나열되어 있습니다.

목차

이것은 공개 키를 나열하는 DKIM DNS 레코드의 일부입니다. 위의 예에서 v=DKIM1은 이 TXT 레코드가 DKIM으로 해석되어야 함을 나타내며 공개 키는 p= 뒤의 모든 것입니다.

레코드 유형 및 TTL

이들은 DNS 레코드의 표준 필드입니다.TXT는 이것이 DNS TXT 레코드임을 나타냅니다."TTL"은 time to live(초 단위로 측정)를 나타내며, 새로 고침 하기 전에 이 레코드가 유효한 것으로 간주되어야 하는 기간을 나타냅니다.DKIM 레코드의 TTL은 일반적으로 몇 분입니다.

DKIM 헤더란? DKIM 서명은 어떻게 작동할까요?

보내는 이메일 서버는 이메일 헤더, 이메일 본문(실제로는 이메일 본문의 해시 — 아래에서 자세히 읽어보세요), 개인 키를 사용하여 디지털 서명을 만듭니다. 이 디지털 서명은 DKIM 헤더의 일부로써 이메일에 첨부됩니다.

DKIM 헤더는 이메일에 첨부된 여러 헤더 중 하나입니다. 대부분의 이메일 애플리케이션에서 사용자가 특정 옵션을 선택하지 않는 한 이메일을 표시할 때 헤더가 표시되지 않습니다. 예를 들어 Gmail에서 사용자는 이메일 오른쪽 상단에 있는 세 개의 수직 점을 클릭한 다음 '원본 표시'를 클릭하여 이메일 헤더를 볼 수 있습니다.

다음은 DKIM 헤더의 예입니다.

v=1; a=rsa-sha256; 
        d=example.com; s=big-email;
        h=from:to:subject;
      bh=uMixy0BsCqhbru4fqPZQdeZY5Pq865sNAnOAxNgUS0s=;
  b=LiIvJeRyqMo0gngiCygwpiKphJjYezb5kXBKCNj8DqRVcCk7obK6OUg4o+EufEbB
tRYQfQhgIkx5m70IqA6dP+DBZUcsJyS9C+vm2xRK7qyHi2hUFpYS5pkeiNVoQk/Wk4w
ZG4tu/g+OA49mS7VX+64FXr79MPwOMRRmJ3lNwJU=
  • v=은 사용되는 DKIM을 표시합니다.
  • d=은 보낸 사람의 도메인 이름입니다.
  • s=은 받는 서버가 DNS 레코드를 조회하는 데 사용해야 하는 선택기입니다.
  • h=은 디지털 서명을 만드는 데 사용되는 헤더 필드 또는 b를 나열합니다.이 경우 from, to, 제목 헤더가 사용됩니다.Bob이 example.com 도메인을 사용하여 Alice에게 이메일을 보냈고 제목 줄이 "Recipe for cheesecake"인 경우 여기에 사용된 콘텐츠는 "bob@example.com"이 됩니다.+ "alice@example.com" + "Recipe for cheesecake".(이 콘텐츠는 표준화되어 표준화된 형식으로 제공됩니다.)
  • bh=는 이메일 본문의 해시입니다.해시는 해시 함수라고 하는 특수 수학 함수의 결과입니다.이는 이메일 본문의 길이가 임의의 길이일 수 있고 경우에 따라 로드하는 데 시간이 오래 걸릴 수 있으므로 전체 이메일 본문이 로드되기 전에 수신 이메일 서버에서 서명을 계산할 수 있도록 포함됩니다.
  • a=는 디지털 서명 또는 b를 계산하는 데 사용되는 알고리즘이며, 또한 이메일 본문 또는 bh의 해시를 생성하는 데 사용되는 알고리즘입니다.이 예에서는 RSA-SHA-256을 사용하고 있습니다(디지털 서명의 해시 함수로 SHA-256을 사용하는 RSA, 본문 해시의 해시 함수로 SHA-256을 사용하는 RSA).
  • b=hbh에서 생성되고 개인 키로 서명된 디지털 서명입니다.

디지털 서명(b=)을 통해 수신 서버는 1. 보내는 서버를 인증하고 2. 이메일이 변조되지 않았다는 무결성을 보장합니다.

수신 서버는 h=에 나열된 것과 동일한 콘텐츠 및 본문 해시 (bh=)를 가져오고 DKIM 레코드의 공개 키를 사용하여 디지털 서명이 유효한지 확인하여 이를 수행합니다.올바른 개인 키가 사용되었고 콘텐츠(헤더 및 본문)가 변경되지 않은 경우 이메일은 DKIM 검사를 통과합니다.

DKIM은 DMARC와 어떤 관련이 있을까요?

DMARC는 DKIM 및 SPF를 기반으로 구축된 이메일 인증 방법입니다. DMARC는 SPF 및 DKIM에 실패한 이메일에 대하여 수행할 작업을 설명합니다. SPF, DKIM, DMARC는 함께 이메일 스팸 및 이메일 스푸핑을 방지하는 데 도움이 됩니다. DKIM 레코드와 마찬가지로 DMARC 정책은 DNS TXT 레코드로 저장됩니다.

Cloudflare에서 DKIM 레코드를 설정하는 방법

Cloudflare에서 이 레코드를 빠르게 설정하려면 이메일 보안 DNS 마법사를 사용하세요.

이메일용 DNS 레코드에 대해 자세히 알아보기.

DKIM에 대한 자세한 내용은 RFC 6376을 참조하세요.