Intro
DomainKeys Identified Mail - Wikipedia
DKIM 搭配寄件者原則架構 (SPF) 和基於網域的郵件驗證、報告和一致性 (DMARC),讓攻擊者更難以透過這種方式冒充網域。未通過 DKIM 和 SPF 的電子郵件被標記為「垃圾郵件」或不會被電子郵件伺服器傳送。
原理
DKIM 主要有兩個層面:
- DKIM 記錄(儲存在網域的 Domain Name System (DNS) 記錄中)
- DKIM 標頭(附加至來自網域的所有電子郵件)。
DKIM 使用以公用金鑰加密法為基礎的數位簽章配置來驗證電子郵件的來源。寄件者簽署訊息使用私密金鑰,收件者用公用金鑰驗證簽章。
電子郵件提供者產生公用金鑰和私密金鑰。將公用金鑰提供給網域擁有者以儲存在 DNS 記錄(DKIM 記錄)中。寄件時使用私密金鑰簽署數位簽章於標頭。收件的電子郵件伺服器可以檢查 DKIM DNS 記錄、取得公用金鑰,以及使用公用金鑰驗證數位簽章。
DKIM 標頭範例
# Sender's header
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=example.com; s=your-selector; t=1697443282; bh=lBFPQM+Co+tNLmBxzfXGr+cYkpDQjnYPaHJUazOv7VU=; h=Subject:To:Date:From:From; b=AX....==
# Receiver's authentication result
dkim=pass header.i=@example.com header.s=your-selector header.b=FfOLSax0;
DNS Record
DKIM Verification - DNS record format - Wikipedia
Type | Host | Value |
---|---|---|
TXT | [selector]._domainkey.[domain] | v=DKIM1; p=[public-key] |
TXT | default._domainkey.example.com | v=DKIM1; p=76E629F05F709EF665853333EEC3F5ADE69A2362BECE40658267AB2FC3CB6CBE |
Selector
selector 是由該網域電子郵件服務提供者發佈的專用值,會包含在 DKIM 標頭中讓對象電子郵件伺服器做 DKIM DNS 查詢。._domainkey.
為 DKIM 記錄 pattern。
Sender specifies DKIM selector -> Receiver uses that selector to quiery DKIM DNS record