なりすましメールはなぜ自社名を名乗れるのか──郵便にたとえるSPF・DKIM・DMARC
SPFは差出人の郵便局リスト、DKIMは封蝋、DMARCは違反時の扱い指示。3つが答えている質問はそれぞれ違います。SPFだけではなりすましを防げない理由を郵便のたとえで整理します。
この記事のポイント
- SPF・DKIM・DMARCは答えている質問が違う3つの検査
- 攻撃者も自分のドメインならSPFをPASSさせられる
- 「メール認証(SPF/DKIM/DMARC)を整える」で判定の流れを体験できる
- Q.
- SPFがPASSならなりすましは防げる?
- A.
- SPFがPASSしても、なりすましは防げません。SPFが確認するのは配送情報の欄が正しい郵便局から出ているかだけで、画面に見える名乗りとは別の話だからです。名乗りとの一致は、DMARCのアライメント判定で照合されます。
「差出人:社長」と書かれた不審なメールが、なぜか自社のドメインから届いているように見える。差出人欄の名前は自由に書き換えられるはずなのに、なぜ受信箱に届いたり、逆に迷惑メールに振り分けられたりするのか、仕組みまで説明できる人は意外と少ないのではないでしょうか。
結論を先に書きます。
**SPF・DKIM・DMARCは、それぞれ答えている質問がまったく違う3つの検査です。**SPFは「差出人はこの郵便局から出していい人か」、DKIMは「中身は届く途中で書き換えられていないか」、DMARCは「その2つの結果は、画面に見えている名乗りと一致しているか。一致していなければどう扱うか」を見ています。この3つを郵便にたとえて整理します。
SPF=「差出人の郵便局リスト」
SPFは、メールの配送情報(エンベロープFrom)に書かれたドメインが、実際にどの郵便局(送信サーバー)から出されたかを確認する仕組みです。ドメインの管理者はDNSに「うちのメールはこの郵便局からしか出しません」というリストを公開しておき、受信側はメールが届いた郵便局がそのリストに載っているかを照合します。
ここに大事な盲点があります。攻撃者が自分自身のドメインを使う分には、そのドメインのSPFを正しく設定してSPF自体をPASSさせることができてしまうのです。SPFが確認しているのは「配送情報の欄が正しい郵便局から出ているか」だけで、受信者の画面に見える名乗りとは別の話だからです。
DKIM=「封蝋(ふうろう)」
DKIMは、メールの本文に電子署名という封蝋を押す仕組みです。送信側は秘密鍵で署名し、受信側は公開されている鍵で「届いた中身が、封をしたときのまま書き換えられていないか」を検証します。
封蝋と同じで、DKIMが確認しているのは中身の完全性であって、誰が名乗っているかではありません。署名に使われたドメイン(d=の値)は、画面上の名乗りと別のドメインでもよく、署名さえ正しく検証できればDKIMはPASSします。
DMARC=「名乗りとの照合と、違反時の扱い指示」
SPFとDKIMだけでは、実は肝心なところが抜けています。それは「受信者が画面で実際に見る名乗り(ヘッダFrom)」との整合性です。SPFが見ているエンベロープFromも、DKIMの署名ドメインも、受信者の目に映る名乗りとは別の欄になり得ます。
DMARCは、SPFとDKIMの結果を束ねたうえで「その合格は、画面の名乗りと一致しているか(アライメント)」を照合し、一致していなければ**どう扱うか(配送する/迷惑メール行きにする/受信拒否する)**まで受信サーバーに指示します。攻撃者が自分のドメインでSPFをPASSさせても、名乗りが別ドメインならDMARCのアライメント判定で不一致となり、弾かれる可能性が出てくるわけです。
| 役割 | 見ているもの | 弱点 |
|---|---|---|
| SPF | 配送情報の送信元サーバー | 攻撃者も自分のドメインならPASSできる |
| DKIM | 本文が改ざんされていないか | 署名が無いメールは判定できない |
| DMARC | 名乗りとの一致、不一致時の処分方針 | SPF・DKIM単体では守れない部分を束ねる要 |
覚え方としては「SPF=差出局の確認/DKIM=封蝋(改ざん検知)/DMARC=名乗りの照合と処分の指示」という順で押さえておくと、3つの役割が混ざりにくくなります。
自分の目で判定を追ってみる
文章で追うより、実際に条件を変えながら判定が変わる様子を見たほうが理解が早い部分です。メール認証(SPF/DKIM/DMARC)を整える では、正規メール・単純ななりすまし・攻撃者が自分のドメインでSPFを固めてくるケースなど複数のシナリオを切り替えながら、SPF→DKIM→DMARCの判定が順番に決まっていく様子を受信サーバー側の視点で体験できます。「SPFがPASSでもなりすましは防げない」という一文だけを読むより、自分で条件を動かして納得できるはずです。