중요 알림: Google과 Yahoo는 2024년 4월부터 DMARC를 요구할 예정입니다.
PowerDMARC

DKIM 서명: 정의, 필요한 이유 및 작동 방식에 대한 입문서?

DKIM 서명

DKIM 서명

읽기 시간: 6

도메인 키 식별 메일 (DKIM) 은 조직이 전송한 메시지에 대해 책임을 지는 이메일 인증 방법입니다. 공개 키 암호화를 사용하여 이메일에 디지털 '서명'을 함으로써 수신자에게 해당 메시지가 도메인 소유자가 보낸 것임을 증명합니다. 수신자는 서명을 도메인의 공개된 공개 키와 대조하여 서명을 확인할 수 있습니다.

이 도움말에서는 DKIM을 자세히 살펴보고 이 이메일 인증 방법이 어떻게 작동하는지에 대해 간략하게 설명합니다.

DKIM 시그니처란 무엇인가요?

DKIM은 DomainKeys 식별 메일의 약자입니다. 암호화 서명을 사용하여 무결성과 부인 방지 기능을 제공하는 이메일 인증 시스템입니다. 이는 다음과 함께 DMARC 과 함께 이메일에 대한 강력한 스푸핑 보호 인프라를 구축하는 데 도움이 됩니다.

DKIM 프로토콜은 수신자에게 보내는 각 메시지에 대한 암호화 서명과 메시지 헤더에 추가되는 도메인 서명을 생성합니다.

이 서명은 수신자가 메시지가 실제로 다른 사람이 아닌 도메인 소유자가 보낸 것인지 확인하는 데 사용됩니다. 또한 발신자에서 수신자로 이동하는 동안 메시지가 변조되지 않았는지 확인합니다.

일치하지 않으면 둘 중 하나도 마찬가지입니다:

  1. 메시지가 전송 중에 변경되었거나
  2. 보내는 서버의 개인 키에 액세스할 수 있는 다른 사람을 대신하여 메시지를 전송하고 있습니다.

서명이 일치하지 않는 경우 DKIM은 해당 이메일이 브랜드에서 보낸 합법적인 메시지인지 확인할 수 없으므로 해당 이메일이 의도한 수신자에게 전달되지 않도록 차단합니다.

DKIM 서명은 어떻게 작동하나요?

DKIM 서명은 이메일 헤더에 디지털 서명을 삽입하는 방식으로 작동합니다. 이 서명은 수신 서버에서 확인하여 이메일이 전송 중에 변조되었는지 여부를 확인하는 데 사용할 수 있습니다.

DKIM은 공개 키 암호화를 사용하는데, 공개 키는 개인 키와 공개 키 한 쌍에 의존합니다. 공개 키는 원하는 모든 사람에게 배포되며, 개인 키는 일반적으로 소유자가 비밀로 유지합니다.

DKIM을 사용하여 이메일에 서명하면 개인 키를 사용하여 메시지 콘텐츠의 해시를 생성한 다음 수신자의 공개 키로 해당 해시를 암호화합니다. 이렇게 암호화된 해시는 메시지 헤더에 삽입되어 수신자가 유효성을 검사할 수 있습니다.

DKIM 시그니처의 핵심

DKIM 서명은 공개 키와 비공개 키, 두 개의 암호화 키를 사용하여 생성됩니다. 공개 키는 DNS에 게시되고 비공개 키는 비밀로 유지됩니다.

이메일에 서명하면 개인 키가 메시지의 해시를 생성하는 데 사용됩니다. 그런 다음 이 해시는 공개 키로 암호화되어 메시지 자체와 함께 전송됩니다.

수신자가 이 정보를 받으면 개인 키를 사용하여 해시를 해독하고 메시지의 원본 콘텐츠와 일치하는지 확인합니다.

DKIM 시그니처의 구성 요소

DKIM 서명은 헤더와 본문의 두 부분으로 구성됩니다. 헤더에는 발신자의 이메일 주소와 공개키 등 발신자의 신원에 대한 정보가 포함되어 있습니다. 본문에는 실제 전송된 메시지가 포함됩니다.

  1. DKIM 서명을 계산하려면 먼저 공개 키인 도메인 이름(예: "example.com")의 MD5 해시를 가져옵니다.
  2. 그런 다음 도메인 이름을 SHA1 해시(예: "sha1(example.com)")로 연결하여 전송한 원본 메시지에 추가합니다.
  3. 그런 다음 이 결합된 문자열의 또 다른 MD5 해시(예: "md5(sha1(example.com)")를 가져와 메시지 시작 부분에 헤더로 첨부한 후 전송합니다.

DKIM 서명과 관련된 단계

DKIM 시작하기:

  1. 첫 번째 단계는 메시지에 서명하는 데 사용되는 개인 키를 만드는 것입니다.
  2. 두 번째 단계는 서명을 확인할 때 사용되는 공개 키를 만드는 것입니다.
  3. 세 번째 단계는 공개 키용 레코드와 선택자 이름용 레코드 두 개를 생성하는 것입니다.
  4. 네 번째 단계는 이러한 레코드를 DNS 영역 파일에 게시하는 것입니다.

DKIM 서명과 관련된 단계:

1. 발신자는 암호화 해시 함수(일반적으로 SHA-256)라는 고유 식별자를 사용하여 메시지를 생성합니다. 이 고유 식별자를 DKIM-서명 헤더 필드라고 하며 누가 언제 서명했는지에 대한 정보를 포함합니다.

2. 발신자가 메시지에 다음 정보가 포함된 헤더 필드를 추가합니다:

3. 마지막으로 이러한 서명을 확인하려는 수신자는 DNS 레코드 또는 SenderID 또는 Mailgun과 같은 중간 서비스에서 발신자의 공개 키 사본을 사용한 다음 이를 사용하여 DKIM 헤더가 첨부된 메시지의 유효성을 검사합니다.

DKIM 서명에 사용되는 태그 이해하기

다음은 DKIM 서명 레코드가 어떻게 보이는지 보여주는 예시입니다:

DKIM-서명: v=1;

A=RSA-SHA256;

s=jun2005.eng;

c=완화된/완화된;

d=example.com;

s=dkim;

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=받는 사람:보낸 사람:제목:날짜:메시지-ID:MIME-버전:콘텐츠 유형:콘텐츠 전송 인코딩;

b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= 이 태그는 DKIM의 버전을 알려줍니다.

a= 서명자가 공개키를 생성하는 데 사용하는 알고리즘을 지정합니다. RSA1_5, RSA-SHA1 또는 RSASSA-PSS 중 하나 일 수 있습니다. 이 태그가 누락되면 RSA-SHA1이 사용됩니다.

c= [BCP14]에서 요구하는 대로 헤더 필드에서 해시를 생성하는 데 사용되는 정규화 알고리즘을 지정합니다. 그 뒤에는 쉼표로 구분된 하나 이상의 정규화 알고리즘 목록이 이어집니다(예: "c=relaxed"). 이 태그가 생략된 경우 완화된 정규화가 사용됩니다.

d= 이 서버(또는 다른 수신자)에서 보낸 메시지에 대한 서명을 생성할 때 사용할 도메인 이름을 지정합니다.

s= "s" 태그는 수신 서버에서 서명을 확인하기 위해 어떤 공개 키를 사용해야 하는지 결정하는 데 사용하는 선택기 문자열입니다.

t= 타임스탬프 태그는 서명이 생성된 시점을 기록하는 데 사용되며 일반적으로 유닉스 타임스탬프(1970년 1월 1일 이후 초수)로 표시됩니다.

bh= 이 태그는 메시지 내용(헤더 포함)의 암호화된 버전인 본문 해시를 나타냅니다. 이렇게 하면 DKIM이 서명한 후 의도한 수신자에게 도달하기 전에 메시지가 변조되는 것을 방지할 수 있습니다.

h= 헤더 해시 값에는 제외 목록에 포함시켜 명시적으로 제외된 헤더를 제외한 모든 헤더(발신자 정책 프레임워크 또는 DomainKeys 식별 메일로 서명된 헤더 포함)가 포함됩니다. 이 값은 SHA-1 또는 MD5를 사용하여 계산해야 합니다.

b= "b" 태그는 메시지의 표준화된 본문(즉, MIME 인코딩이 제거된 후)에 있는 암호화 해시 함수의 base64 인코딩된 표현입니다.

DKIM 서명 생성

  1. 공개 키와 개인 키를 생성합니다.
  2. DKIM 머리글과 바닥글을 생성합니다.
  3. 선택한 알고리즘(예: RSA-SHA256 또는 RSA-SHA512)을 사용하여 개인 키로 이메일 콘텐츠에 서명합니다.
  4. 선택한 알고리즘(예: 수축 또는 없음)을 사용하여 메시지를 압축합니다.
  5. 메시지 시작 부분에 DKIM 헤더를 MIME 헤더 앞에 삽입합니다.
  6. MIME 바닥글 뒤에 DKIM 바닥글을 삽입합니다.

DKIM 서명의 유효성 확인

DKIM 서명이 유효한지 확인하기 위해 몇 가지 단계를 수행할 수 있습니다:

  1. 기존 DKIM 서명 알고리즘을 사용할지 아니면 최적화된 알고리즘을 사용할지 결정합니다.
  2. 메시지의 헤더와 본문에 대한 해시값을 계산합니다(일반적으로 SHA-256).
  3. 적절한 서명 알고리즘(예: RSA 또는 ECDSA)을 선택합니다.
  4. 공개 키가 1단계에서 지정한 선택기와 일치하는지 확인합니다(DNS를 사용하여 이 작업을 수행합니다).
  5. 개인 키를 사용하여 메시지에 서명하고 이메일 메시지 헤더에 Base64 형식의 ASCII 문자열로 저장합니다(DNS에 저장하는 것 외에도).

DKIM 서명 확인

DKIM 서명 인증은 복잡합니다. 설정 및 유지 관리에 많은 전문 지식이 필요하며, SPF와 같은 다른 시스템과 함께 사용되는 경우가 많으며, 이 역시 복잡합니다.

따라서 대부분의 이메일 마케팅 담당자는 다음과 같은 DKIM 서명 확인 도구를 사용합니다. DKIM 레코드 검사기 와 같은 DKIM 서명 확인 도구를 사용합니다. 이 도구는 이메일에 추가된 DKIM 키를 확인하고 공개 데이터베이스와 대조하여 확인합니다. 키가 유효하고 신뢰할 수 있는 키라면 해당 이메일은 합법적인 것으로 간주할 수 있습니다.

이는 여러 가지 이유로 중요합니다. 첫째, 이메일이 ISP 또는 ISP의 고객으로부터 스팸으로 신고되지 않도록 하고, 둘째, 다른 도메인에 의해 도메인이 블랙리스트에 오르는 것을 방지하며(이를 도메인 포이즈닝이라고 합니다), 마지막으로 이메일이 중간자 공격에 걸리지 않도록 하는 데 도움이 됩니다.

결론

DKIM은 조직이 이메일, 특히 외부 발신자가 보낸 이메일의 적법성을 검증할 수 있는 유망한 솔루션입니다. 메시징 환경 전체에 일관되게 적용하면 수신자는 발신자 도메인의 권한 있는 담당자가 이메일을 보냈다는 높은 수준의 신뢰를 얻을 수 있습니다. 그러나 DKIM은 확인 메커니즘을 제공하지만 스푸핑 및 피싱과 같은 이메일 사기 공격으로부터 보호하기에 충분하지 않다는 점에 유의해야 합니다. 이를 위해 DMARC 정책 을 거부로 설정해야 합니다.

도움이 필요하세요?

이메일 인증은 모든 비즈니스의 디지털 마케팅 전략에서 필수적인 부분입니다. 매일 수많은 이메일이 주고받기 때문에 브랜드가 그 사이에서 길을 잃기 쉽습니다. 하지만 PowerDMARC의 이메일 인증 서비스를 사용하면 이메일이 올바른 사람에게 전달되도록 할 수 있습니다. 

이메일 인증 솔루션이 도움이 될 것입니다:

모바일 버전 종료