SPF、DKIM與DMARC如何防止電郵偽冒?
電郵協定本身並不驗證發件人身份,任何伺服器都可以聲稱代表某個網域發信,這是商業電郵詐騙得以成立的技術根源。SPF、DKIM 與 DMARC 三項機制分別由發送授權、內容完整性與處理政策三個角度補上這個缺口。本頁講解三者的分工、正確的部署次序,以及部署過程中最常出錯的位置。
問題根源:電郵協定不驗證發件人
電郵傳送協定在設計之初以互通為首要目標,並未包含發件人身份驗證。結果是任何一台伺服器都可以在信封與郵件標頭上填寫任意網域,聲稱代表某間公司發信,而收件伺服器沒有內建方法判斷真偽。收件人在郵件軟件上通常只看到顯示名稱與地址,兩者都可以任意填寫。
三項驗證機制正是為補上這個缺口而先後出現,並且各自針對不同層面:SPF 處理「哪些伺服器可以代表這個網域發信」,DKIM 處理「郵件在傳送途中有否被改動、是否由持有該網域密鑰者簽發」,DMARC 則處理「驗證失敗時收件方應該怎麼做,以及如何把結果回報給網域擁有人」。三者互為補充,缺一都會留下可被利用的空隙。
SPF:核對發送伺服器是否獲授權
SPF 由 RFC 7208 定義。網域擁有人在網域名稱系統中發布一段記錄,列出獲授權代表該網域發送郵件的伺服器位址或服務。收件伺服器在接收郵件時,取得信封發件網域,查詢該網域的 SPF 記錄,再與實際連線過來的伺服器位址比對,得出通過、失敗或其他中間結果。
SPF 的優點是實作簡單、只需發布一段記錄。局限亦相當明確:它驗證的是信封層的發件網域,與收件人在郵件軟件上看到的地址並非同一個欄位,攻擊者可以令兩者不一致;同時郵件經郵寄清單或自動轉寄後,最終連線的伺服器並非原本獲授權的伺服器,驗證便會失敗。此外,SPF 記錄對查詢次數有上限,把過多服務層層引用會令記錄失效,這是實務上常見的故障原因。
DKIM:以數位簽名保證未被改動
DKIM 由 RFC 6376 定義,採用公開密鑰簽名。發送方以私鑰對郵件內容及選定的標頭欄位計算簽名,並把簽名寫入郵件標頭;公鑰則發布在網域名稱系統中。收件方取得公鑰驗證簽名,若通過即可確認兩件事:郵件確實由持有該網域私鑰的一方簽發,而且被簽署的部分在傳送途中沒有被修改。
與 SPF 相比,DKIM 的簽名附在郵件本身,因此經轉寄後通常仍然有效,這是它的主要優勢。不過 DKIM 本身只證明「有人以某個網域簽了名」,並不要求該網域與收件人看到的發件地址一致,因此攻擊者可以用自己控制的網域正確簽名,同時把顯示名稱偽裝成目標公司。這個對齊問題正是 DMARC 要解決的部分。
DMARC:對齊、政策與報告
DMARC 由 RFC 7489 定義,建立在 SPF 與 DKIM 之上,加入三項關鍵能力。第一是對齊要求:驗證通過的網域必須與收件人所見的發件網域相符,僅此一項便封住了前述兩種繞過方式。第二是政策宣告:網域擁有人可指示收件方在驗證失敗時如何處理,由僅作監察、隔離到直接拒收。第三是報告機制:收件方會把驗證結果匯總回報,令網域擁有人首次得以掌握有誰在以自己的網域名義發信。
| 機制 | 規範文件 | 驗證對象 | 經轉寄後 | 主要局限 |
| SPF | RFC 7208 | 發送伺服器位址是否獲授權 | 通常失效 | 不涵蓋收件人所見地址,查詢次數有上限 |
| DKIM | RFC 6376 | 簽名有效性與內容完整性 | 通常仍有效 | 不要求簽名網域與顯示地址一致 |
| DMARC | RFC 7489 | 對齊、失敗處理政策 | 依賴前兩者其中之一通過 | 對相似網域與帳戶被盜無作用 |
香港場景:貿易與物流業的付款指示詐騙
香港以貿易、物流與專業服務為主,日常業務高度依賴電郵確認訂單、報價與付款資料,這正是商業電郵詐騙最常見的目標場景。典型手法是攻擊者長期監看往來郵件,待付款階段介入,以極相似的網域或被盜帳戶發出更改收款戶口的指示;由於內容、稱謂與往來脈絡都完全吻合,單憑肉眼極難分辨。若使用被盜的真實帳戶發信,SPF、DKIM 與 DMARC 全部會顯示通過,技術驗證在這種情況下並不能提供保護。
因此實務建議是技術與流程並行。技術方面,先完成三項機制的部署並持續檢視報告,同時為所有郵箱啟用多重認證,減少帳戶被盜的機會;流程方面,訂立任何付款戶口變更必須以電話向既有聯絡人覆核的規則,並禁止僅憑郵件內附的聯絡電話進行核對。中小企亦應留意,香港企業經常同時使用本地郵件服務與雲端平台,兩邊的發送來源都必須納入同一份 SPF 與 DKIM 清單,這是本地環境下最常出現的遺漏。
帳戶層面的配套措施可一併參考企業密碼管理器的推行方式,以及員工入職離職的 IT 帳戶流程,兩者同樣影響電郵帳戶被盜用的風險。