情報処理安全確保支援士の試験に出てくるSPF(Sender Policy Framework)について、分かりやすく、実務的にも過不足ない程度に説明してみようと思います。
SPFとは
電子メール送信元の情報は自由に設定できてしまうため「なりすまし」が可能です。それを検出する技術の1つがSPF(Sender Policy Framework)です。
送信元詐称はどのように行われるか
電子メールの送信元アドレスは実は2種類あります。
- Envelope From
- Header From
まず、下のHeader Fromはクライアントのメーラー(OutlookとかmacOSのMailとか)の差出人欄に表示されるアドレスを意味します。では、Envelope Fromは何に使用するかと言うと、メールサーバー同士での送受信に使用されるもので、誤送信された際の返信先に使用されます。これは、ユーザーが通常は意識することはありません。
ただ、実際の送信元を意味するEnvelope Fromは偽装が可能で、メールを受け取った人のメールソフトの表示では差出人が「Aさん」と表示されながらも、実際に送信したのは「Xさん」で送信元が偽装されていたという「なりすまし」が可能です。
SPFは、この「なりすまし」を検出します。
SPFの仕組み
Envelope Fromに記載されたドメインを管理するDNSサーバー(要はメール送信元であるはずの組織が管理するDNSサーバー)に、送信元メールサーバーのIPアドレスが登録されているかどうかを問合せ、それにより、なりすましを検知します。
簡単に図示すると、以下の通り。
これは問題なく送信された場合。
受取先メールサーバー(右の緑色の枠内の方)は、受信したメールにあるEnvelope FromのドメインのDNSサーバーに問合せ、送信元メールサーバーのIPアドレスが真正かを確認します。真正であれば、正常に宛先に届きます。
![](/archive2019/wp-content/uploads/2020/04/spf1-1024x408.png)
以下の図は、「なりすまし」が行われた場合。
「MAIL FROM」はSMTPのコマンドで、これで指定したアドレスがEnvelope Fromになります(ちなみに、Header Fromは「DATA」コマンドで指定します。これはメール本文を指定するもの)。
受取先メールサーバーは、送信元であるはずのドメインのDNSサーバーに問い合わせますが、実際には存在しませんので、存在しない旨の結果を受け取ります。これで「なりすまし」が検知できる、というものです。
![](/archive2019/wp-content/uploads/2020/04/spf2.png)
ただ、SPFを使うには実装が必要です。
送信元メールサーバーで必要となる実装作業
送信元はDNSサーバーにSPFレコードを追加し、そのレコードに送信元メールサーバーのIPアドレスを入れる必要があります。
SPFレコードは、具体的には、DNSのTXTレコード(様々な目的に使用するためのレコード)として定義します。実例は、以下。
example.co.jp. IN TXT “v=spf1 ip4:x1.y2.w3.1 -all”
レコードは「ドメイン名△IN△タイプ△リソースデータ」という書式で定義します。
v=spf1はバージョンを表します。
ip4:…はドメイン名のIPアドレスですね。
-allは、設定されたアドレス以外は該当ドメインとして認めない、という意味です。
受信先メールサーバーで必要となる作業
Envelope Fromの送信元が真正であるか、記載されたアドレスのドメインのDNSサーバーに問い合わせる、という動作を受信側メールサーバーが実施する必要があります。
要するに、受信側・送信側のメールサーバーがSPFに対応していないといけません。
SPFが利用できないケース
もうほとんど説明していますが
- 送信元ドメインのDNSサーバーにSPFレコードが定義されていない場合
- 受信先メールサーバーがSPF検証の動作をしていない場合
です。
受信先・送信元、この両方がSPFの実装を行っている必要があります。
SPFでは防げないケース
やや重箱の隅をつつくようですが、SPFが防げないケースもあります。
差出元ドメインのPCが乗っ取られてメール送信された場合
SPFの仕組み自体の問題ではありませんが、まぁ実際あり得ますので、脅威と言えば脅威です。
情報処理安全確保支援士の令和元年度秋期試験の午後1にも出てきました。
また、アカウントだけを詐称した場合(@の左側だけ)も不正とはみなされません(メールサーバーのIPアドレスしか検証しないので)。
そもそも差出人のドメインを詐称していないメール
送信元を詐称していない迷惑メールなどがこれにあたると思います。
例えば、メールクライアントに明らかにAppleのアドレスではないものが表示されているのにApppleを名乗っているメール、などです。
そりゃそうですね。SPFは送信元メールサーバーの「なりすまし」を検出できるのみです。
迷惑メール送信元がDNSのサーバーも立てていれば自分でSPFレコードを追加できるのですから、真正な送信元になります。
SPF以外の送信元詐称を検証する技術
送信元詐称を検証する技術としては、他にも電子署名を使用するDKIM(Domain Keys Identified Mail)があります。
また、関連する技術しててDMARC(Domain-based Message Authenticastion, Reporting and Conformance)があります。
これらは、また別記事で説明するとしましょう。
参考サイト
SPF関連
- Google「G Suite 管理者ヘルプ:SPF レコードでメールのなりすましを防止する」2020閲覧
- IETF「RFC7208」2014 (※SPFを定義した文書)
- JPNIC「SPFとは」2011
- 一般財団法人インターネット協会「SPF(Sender Policy Framework)」2010
他
- Google「G Suite 管理者ヘルプ:DKIM を使用してメールを認証する」2020閲覧
- Google「G Suite 管理者ヘルプ:DMARC について」 2020閲覧