電子郵件是現代社會中不可或缺的溝通工具,但也容易遭到駭客攻擊,造成垃圾郵件、釣魚郵件等問題。為了防止電子郵件被冒用,SPF、DKIM 以及 DMARC 這三種電子郵件認證技術應運而生。
SPF
Sender Policy Framework
SPF 是一種電子郵件認證技術,用來驗證電子郵件發件人是否合法。SPF 工作原理是,在 DNS 設定 SPF 記錄,列出允許發送電子郵件到該域名的 IP 位址或伺服器名稱。當接收方伺服器收到電子郵件時,會根據 SPF 記錄來驗證發件人是否合法。
注意的是,每個網域只能有一個 SPF 紀錄
DKIM
DomainKeys Identified Mail
DKIM 是一種電子郵件認證技術,用來驗證電子郵件內容是否未被竄改。DKIM 工作原理是,在發件人伺服器上設定 DKIM 金鑰,並將金鑰用於加密電子郵件內容。當接收方伺服器收到電子郵件時,會根據 DKIM 金鑰來驗證電子郵件內容是否未被竄改。
DMARC
Domain-based Message Authentication Reporting and Conformance
DMARC 是一種電子郵件認證技術,用來整合 SPF 和 DKIM 的功能,並提供更強大的防護。DMARC 工作原理是,在 DNS 上設定 DMARC 記錄,指定如何處理未通過 SPF 或 DKIM 驗證的電子郵件。
實際範例
以 kangjw.me 為例,以下是 SPF、DKIM 以及 DMARC 的設定範例:
SPF 記錄
1 | v=spf1 mx a ip4:192.168.0.1 include:examplesender.net -all |
mx a
:同意 kangjw.me 的 MX 和 A 記錄對應的 IP 發信ip4:192.168.0.1
:同意 192.168.0.1 這個 IPv4 發信include:examplesender.net
:如果是examplesender.net
這個網域,也可以用我的 domain 發信
all 的補充說明
-all
:SPF 記錄中未列出的位址沒有被授權發送電子郵件應該拒絕傳送~all
:就算沒在 SPF 許可範圍內,依舊可以傳送,但會被丟到垃圾郵件+all
:管你怎樣,都可以用我的 domain 去發信
DKIM 紀錄
1 | v=DKIM1; k=rsa; p=[DKIM 公鑰]; |
通常 DKIM 不會使用 @ 作為名稱,而是 [selector]._domainkey.[domain]
,selector 依照不同電子郵件業者而會有所改變,假設今天我用的是 KJW Mail 來發信,那我的名稱可能就會是 kjwmail._domainkey.kangjw.me
當收件人收到來自 kangjw.me 的電子郵件時,會在電子郵件標頭中找到 DKIM 標頭。DKIM 標頭包含了 DKIM 金鑰的 digest,以及 selector 和 domain。
收件人的電子郵件伺服器會根據 selector 和 domain 在 DNS 中查詢 DKIM 記錄。DKIM 記錄包含了 DKIM 金鑰的公開部分,收件人的電子郵件伺服器可以使用該公開部分來解密 DKIM 標頭中的摘要。
如果解密成功,則表示該電子郵件來自發件人所聲稱的網域,並且在傳輸過程中沒有被篡改。否則,則表示該電子郵件可能是偽造的,或在傳輸過程中被篡改。
DMARC 記錄
1 | v=DMARC1; p=reject; rua=mailto:dmarc@kangjw.me; ruf=mailto:dmarc@kangjw.me |
對於不符合 SPF 和 DKIM 規則的郵件,應該被拒絕,並將報告發送到 dmarc@kangjw.me。
DMARC 處理策略(p)
- none:不對未通過驗證的電子郵件採取任何措施。
- quarantine:將未通過驗證的電子郵件標記為垃圾郵件,並傳送到收件者的垃圾郵件資料夾。
- reject:拒絕未通過驗證的電子郵件,不傳送給收件者。
rua / ruf 差別
- 報告內容:rua 報告包含了所有未通過 DMARC 驗證的電子郵件的統計資料,而 ruf 報告包含了未通過 DMARC 驗證的每封電子郵件的詳細資訊。
- 報告頻率:rua 報告通常每天只發送一次,而 ruf 報告通常只在發生 DMARC 驗證錯誤時發送。
- 報告目的:rua 報告主要用於監控 DMARC 的有效性,而 ruf 報告主要用於調查 DMARC 驗證錯誤的原因。
相關攻擊手段
- Spoofing (偽冒):攻擊者嘗試偽冒合法的電子郵件地址發送郵件。使用 SPF 可以防止這種攻擊。
- 中間人攻擊:攻擊者試圖在發送過程中攔截和修改電子郵件。DKIM 可以確保電子郵件的完整性和真實性。
- Phishing (網路釣魚):攻擊者偽裝成可信任的組織或人員發送欺詐電子郵件。通過設定 DMARC 可以確保只有合法的郵件被傳遞,並減少釣魚郵件的風險。