こんにちは。エンジニアの中村成陽と申します。Yahoo!メールを担当しております。
今回の記事ではなりすましメールについての説明と、その対策としてYahoo!メールに導入した送信ドメイン認証技術のひとつである「DMARC」についてご紹介します。そしてこれらを踏まえ、なりすましメール対策のために何ができるのかをご紹介しますので、参考になれば幸いです。
なりすましメールとは?
なりすましメールとは、送信者自身のものではない、うそのメールアドレスを詐称、つまり別のメールアドレスからのものであると偽って送られたメールのことです。 送信元メールアドレスには、手紙でいえば封筒に記載する差出人となる EnvelopeFrom アドレスと、中身の便箋に記載する HeaderFrom アドレスの二つがあり、これらそれぞれ別のアドレスを設定することが可能です。Yahoo!メールの Web 版やアプリを含め、メールソフトで表示される送信元メールアドレスは通常は HeaderFrom アドレスの方なので、ここに詐称したいメールアドレスを設定することでなりすましメールを送信することが可能となってしまいます。
そもそも電子メールという仕組みが考案されたのは今から50年以上も前の話で、メールをやりとりするための共通プロトコルである SMTP (Simple Mail Transport Protocol) が RFC で標準化されたのも30年ほど前のことです。つまり、セキュリティを考慮する必要がない時代に生まれたものであることから、このようななりすましが容易にできてしまう仕組みとなってしまっています。
この仕組みを悪用されてしまっているのが、いわゆるフィッシングメールと呼ばれるものです。大手のECサービス等を騙ってメールを送り、メールから遷移したリンク先でIDやパスワードを盗むといった手口が横行してしまっています。
「送信ドメイン認証技術」でなりすまし対策
このなりすましメールに対して指を咥えて見ている訳にはいきませんので、対応策として生まれたのが「送信ドメイン認証」と呼ばれる技術です。SMTP の仕様としては詐称できてしまう送信元のメールアドレスですが、たしかにこのFromアドレスのドメインから送られたメールであること(第三者から送られたメールではないこと)を保証するための技術が送信ドメイン認証です。ドメインの所有者のみがDNSレコードを編集可能である、という点が送信元の証明になります。その認証アプローチの違いによりいくつか種類がありますので、ここでそれぞれ紹介します。
SPF
SPF (Sender Policy Framework) はメールの送信元IPアドレスから、本物かなりすましかを判断する技術です。メール送信を行うドメイン(EnvelopeFrom アドレスに設定するもの)において、DNSのTXTレコードに対し、決められた書式でそのドメインからのメールが送信されるIPアドレスを記載しておきます。これを「SPFレコード」と言いますが、受信側はこのレコードを参照し、メールの送信元IPアドレスと照らし合わせることでなりすましメールであるかどうかを判断します。書式さえ守れば、IPアドレスを記載するだけで完了しますので比較的手軽に導入できる反面、その性質上転送されたメールでは正しく認証ができない場合があります。
Yahoo! JAPAN の各サービスからのお知らせメールなどが配信される mail.yahoo.co.jp というドメインでは以下のようにSPFレコードが宣言されています。(2021/06/21現在)
$ host -t txt mail.yahoo.co.jp | grep "v=spf1"
mail.yahoo.co.jp descriptive text "v=spf1 include:bulk-spf.yahoo.co.jp include:gisa-spf.yahoo.co.jp include:relay-spf.yahoo.co.jp include:sf-spf.yahoo.co.jp include:rncx-spf.yahoo.co.jp include:_spf.salesforce.com ~all"
しれっと grep していますが、 v=spf1
から始まる TXT レコードが SPF レコードであり、受信側はこの部分を参照して SPF による認証を行います。 include:
とあるのはここに設定されているドメインで指定されているSPFレコードも再帰的に確認を行い、送信元のIPアドレスがこの include 先に含まれている場合でも SPF の認証は成功となります。
DKIM
DKIM (DomainKeys Identified Mail) は送信者がメールヘッダ(DKIM-Signature
ヘッダ)に電子署名を付与し、受信側でそれを検証することで認証を行う技術です。送信側では秘密鍵で署名してメールを送り、その検証に必要な公開鍵はSPFの送信元IPアドレスと同様、送信元ドメインのTXTレコードで公開しておき、受信側はそれを参照して認証を行います。仕組み上メールの改ざんについても検知をすることが可能です。
DKIM には”セレクタ”と呼ばれる公開鍵の識別ができる仕組みがあり、これにより一つのドメインに対して複数の公開鍵で運用することが可能となります。通常、鍵交換を行う際は、別のセレクタに宣言を行いそこに切り替えるという方法がとられます。送信者が電子署名を付与するDKIM-Signature
ヘッダではこのセレクタの指定も必要となり、受信はドメインだけでなくこのセレクタも含めて適切な公開鍵を参照し、認証を行います。(具体的には、公開鍵は <セレクタ>._domainkey.<ドメイン>
のTXTレコードに宣言します)
署名方法には、 HeaderFrom アドレスのドメインで署名を行う「作成者署名」というものと、別のドメインで署名を行う「第三者署名」と呼ばれる方式の2種類があります。多くのメール配信サービスでデフォルトで付いているDKIM署名は送信者自身が設定する必要のない第三者署名であることが多いですが、メール送信者が保有するドメインでの電子署名をメールに付与する作成者署名の方がより堅牢な署名方式であると言えます。(後述するブランドアイコンというYahoo!メールでの取り組みでは、この作成者署名が導入の条件の一つとなっております)
なお、SPF や DKIM についてはYahoo!メールでも従来より導入されており、国内外問わずほとんどのメールサービスで取り入れられていることから、最低限いずれか一方でも正しく設定した状態でメールを送信することが非常に重要です。これらが設定されていない、あるいは認証に失敗しているメールについては、一般的に受信側でのレピュテーションは著しく低下してしまいます。みなさんの正規のメールを確実に届けるためにも、ぜひこれらは設定をするようにお願いします。
DMARC
SPF や DKIM を利用することで、それぞれの観点でメールのなりすましを判断できるようになりました。しかし、なりすまされたメールをどのように扱うかは受信側に委ねられており、せっかく正規の送信者が送信ドメイン認証に対応したとしても、受信者の判断によっては不正なメールがそのまま受信されてしまうケースもありました。
そこで生まれたのが DMARC (Domain-based Message Authentication, Reporting, and Conformance) と呼ばれる認証方式です。この DMARC では、正規の送信者があらかじめ「自身になりすまされたメールへの振る舞い」を宣言しておきます。そして受信側はその宣言を参照し、SPF や DKIM の判定でなりすまされていると判断した場合は、この正規の送信者の宣言内容にのっとってメールを扱います。この宣言も SPF や DKIM と同様DNSのTXTレコードで公開され、これを「DMARCレコード」と呼びます。
この「なりすまされたメールへの振る舞い」のことを「DMARCポリシー」といい、none(何もしない) / quarantine(隔離する) / reject(拒否する)の3種類から宣言できます。ちなみに、Yahoo! JAPAN の各サービスからのお知らせメールなどが配信される mail.yahoo.co.jp というドメインでは以下のようにDMARCレコードが宣言されています。(2021/06/21現在)
$ host -t txt _dmarc.mail.yahoo.co.jp
_dmarc.mail.yahoo.co.jp descriptive text "v=DMARC1; p=quarantine; rua=mailto:mail_dmarc_report@yahoo.co.jp"
_dmarc.[ドメイン]
のTXTレコードに対して宣言を行います。p
タグに指定されているのがDMARCポリシーで、つまり mail.yahoo.co.jp では quarantine(隔離する)となっています。
もう一つ、rua
タグにメールアドレスが指定されています。
実は DMARC には「DMARCレポート」という機能があり、他の受信サーバから統計情報をこのメールアドレス宛に送ってもらうことができます。このドメインがFromアドレスとなっていたメールの認証の成功・失敗の状況や送信元IPアドレス、さらにはその件数といった情報です。(なお、個人情報保護の観点から解決すべき課題も多く、現在Yahoo!メールではこのDMARCレポートの送信には対応しておりません。将来的には開発予定となっております)
先述の通り DMARC は SPF もしくは DKIM の認証成功を前提としたドメイン認証技術です。さらに、少々細かい話ですが、DMARC では利用者の方が普段目にする ヘッダ From アドレスのドメインと、SPF もしくは DKIM で認証に成功したドメインが基本的には一致しなければ、認証成功とはみなさないという仕様となっています。このようなルールにすることで、利用者をなりすましメールからより強固に守ることができるというのも DMARC の特徴の一つです。
Yahoo!メールでのDMARC導入
導入の経緯
お陰様でYahoo!メールは大変多くの方にご利用いただいているフリーメールサービスですが、その規模の大きさからどうしてもなりすましメールを送る標的になってしまうことも多い状況です。特に本物のメールと見間違うようなフィッシングメールの質は年々向上してしまっており、その対策についてはわれわれも手を焼いておりました。
そこで、従来より導入していた SPF / DKIM に加えてこの DMARC を導入することで、なりすましメールへの対策をより強化しようと導入を決めました。
開発時に工夫した点や苦労話
国内における DMARC の導入に際しては、総務省が提示している法的な留意点を厳守する必要があります。
送信ドメイン認証技術等の導入に関する法的解釈について(外部サイト)
総務省の見解としては、DMARC の導入に当たっては利用者の方との同意を事前に取得する必要がある、と定めています。その同意を得たと言える状況を作るための条件はいくつかあるのですが、導入対応時には弊社の法務担当とも密に連携をとり、例えば利用者の方全員に DMARC 導入に関するメールをお送りしたり、アプリ上にお知らせを表示するなどして丁寧な説明を行うことで、これらをクリアできるように対応しました。
また、DMARC の詳細な仕様は RFC 7489 で標準化されていますが、ここに準拠した開発を行うという部分は苦労したポイントです。DMARC レコードには先述したポリシーの設定やレポートの送信先アドレスの他にも、例えばポリシーを適用する割合を指定するもの(pct
タグ)やサブドメインに適用するポリシーの設定(sp
タグ)などさまざまな項目があり、これらに対応するために開発・テストは厳密に行いました。例えばDNSの参照エラーによってSPFやDKIMの認証が判定できなかった場合の処置は受信者の裁量に任されているなど、導入サービスごとに仕様を決めなければならない点もいくつかあり、こちらも開発者で議論を重ねて検討しました。
さらに、DMARC の導入によって利用者の方が普段から受信しているメールが受け取れなくなるといったことも影響として懸念されていました。転送されたメールや、メーリングリストなどでメールの件名等に手が入る仕様の場合は、SPF や DKIM の認証がうまくいかず、なりすましと判定される可能性があるためです。そのため弊社のカスタマーサービス部門と連携をとり、事前に想定される問い合わせなどをすり合わせた上で導入を開始しました。
DMARC導入の効果
結論から申し上げますと、効果としては非常に大きかったです。具体的な件数は申し上げられませんが、DMARCポリシーに応じて多くのなりすましメールの受信をブロックできております。これらの多くが大手のECや金融サービスを騙ったフィッシングメールであり、利用者の方々が被害に遭われてしまうのを未然に防ぐことができております。
さらに、懸念された問い合わせの増加もほとんどなく、このことからも利用者の方々にとって不要なメールを効率的にブロックできていると言えると思います。
その他、Yahoo!メールでのなりすましメール対策のご紹介
ブランドアイコン・ブランドカラー
Yahoo!メールではこの記事の主題である DMARC に限らず、日々さまざまな迷惑メール対策を実施しております。その多くが迷惑メールの受信を止めるための対策ですが、残念ながらいたちごっこな面もあり、あらゆる迷惑メールに対して有効な完璧な防衛手段というのは簡単に思いつくものではありません。
そこで、送信ドメイン認証に成功した正規のメールのみ、UI上に印をつけることで、正しいメールであることを視覚的に判別しやすくするという取り組みを行っております。
そのうちの一つが「ブランドアイコン」という機能です。これは導入いただいた企業や団体からの認証に成功したメールに対し、そのサービスのアイコンをYahoo!メールのWeb版やアプリ等のUIに表示するというものです。これまでECサービスや金融、保険会社様など、多くのサービスに導入いただいております。
さらに、ブランドアイコン導入企業以外のメールでもわれわれが選定したサービスからの認証成功メールのアイコン部分に色を付ける「ブランドカラー」という取り組みも開始しました。
対象サービスからの送信ドメイン認証に成功したメールであることが一目でわかるため、フィッシングメール対策として有効です。
この「ブランドアイコン」の取り組みは随時企業の皆様からの申し込みを受け付けております。SPFやDKIMの認証にも条件がございますので、詳しくはこちらのページをご覧ください。
送信ドメイン認証結果表示
Yahoo!メールの iOS / Android アプリにおいて、受信したメールの送信ドメイン認証の結果を確認できるようになりました。詳細画面から「このメールの認証情報」という部分をタップすることで、 SPF / DKIM / DMARC の認証情報を確認できます。受信したメールが怪しいと感じたときなど、認証の状況を簡単に確認できます。
自衛のために、みなさんができること
ここまでで述べた通り、 DMARC は多くのサーバー管理者が宣言をすればするほど効果を発揮する技術です。しかし残念ながら、諸外国と比較して日本での導入率は非常に低いというデータもございます。
プルーフポイントの調査により日経225企業の75%および日本政府が「なりすましメール詐欺」に有効な対策ができていないことが判明(外部サイト)
受信側の DMARC 導入については、Yahoo!メールでは日本のメールサービスとしてはあまり前例のない状況での対応となりましたが、Gmail や iCloud メールといった国内でも広く利用されている海外のメールサービスでも以前から DMARC に対応しています。このようにたくさんの利用者がいるメールサービスで対応されているため、メールを送信されるみなさんが DMARC に対応、宣言することで多くのなりすましメールから利用者の方を守ることができます。
DMARC そのものは TXT レコードへの宣言のみで完了しますし、SPF や DKIM の対応についても、メール配信サービスを利用されている場合でも大きなコストをかけることなく導入が可能となっているものが多いです。なりすましメールによる被害を少しでも減らせるよう、ぜひ DMARC を宣言いただきたいと思います。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました