なりすまし・改ざん防止技術

2022/08/22に公開

メールは常になりすましと戦っていると言えます。メール自体の仕組み上、Fromには任意のメールアドレスを設定可能です。それだけに悪意を持ったユーザーは容易に任意の誰かになりすませるということです。メールは相手のメールボックスに直接届くので、一旦送信されてしまうと後から回収は難しく、かつそれが信頼されている人からのものに偽装していると、ついメールを開いてしまうでしょう。そこに添付されているファイルも、気にすることなく開いてしまい、マルウェアに感染してしまいます。

また、メールはその通信経路や経由サーバーにて内容を改ざんできる可能性があります。URLを書き換えてフィッシングサイトへ誘導したり、マルウェアを添付する可能性もあるでしょう。

そうした事態を防ぐ目的として、なりすまし・改ざん防止技術が開発されています。なりすまし防止するというのは、送信元ドメインが偽装されていないことを保証する技術になります。メール改ざん防止は、メールのヘッダーや本文が第三者によって書き換えられていないのを保証する技術になります。

SPF

SPFはSender Policy Frameworkの略になります。メール送信元ドメインの管理者は、ドメインのDNSにSPFレコードを設定します。たとえばblastengineを使っている場合は、以下がSPFレコードになります。

txt @ v=spf1 include:spf.besender.jp ~all

そして、メールを受信したサーバーはそのドメインのDNSを確認します。そのSPFレコードが正しく設定されていれば、問題のないメールだと判断します。もし違っていれば、なりすましであると判断されます。

DKIM

DKIMはDomainKeys Identified Mailの略になります。先に挙げたSPFレコードは送信元のIPアドレスを利用した検証になります。対してDKIMは公開鍵認証を利用するのが特徴です。電子署名の公開鍵はDNSレコードに登録し、公開されます。メールのヘッダーや本文に対して署名を行い、改ざんを防止できます。

そしてメールサーバー(またはメール送信者)が持つ秘密鍵を使って署名を作成し、メールのヘッダー情報として追加します。この時の署名はヘッダー情報と、メール本文の2つに分かれます。メールを受け取ったサーバーでは、公開鍵を使って DKIM-Signature ヘッダーにある署名を検証します。これにより、メール送信中における内容の改ざんを防止します。

DKIMのDNSレコードは、次のような形式になります。 EXAMPLE はセレクタと呼ばれます。このセレクタは自由に指定できるので、1つのドメインに対して複数の公開鍵を指定できるようになります。メール送信時には、どのセレクタを利用しているか指定する必要があります。

txt EXAMPLE._domainkey.mail v=DKIM1; p=MI...AB

DKIMはメールのヘッダーや本文を署名化します。メールはサーバーを経由するごとにReturn-Pathなどが追加されるので、このヘッダーを追加すると署名を正しく検証できません。また、ヘッダーは並び替えが発生する可能性もあります。DKIMではFrom以外のヘッダーについて、どれを署名化対象とするか指定できます。また、ヘッダーの並び替えアルゴリズムも指定します。

DMARC

DMARCはDomain-based Message Authentication Reporting and Conformanceの略になります。なりすまし技術としては先に挙げたSPFとDKIMを利用します。DMARCで特徴的なのは、なりすましメールを受信した時に、その取り扱いを宣言する点にあります。取り扱いとしては、そのまま送信する、削除する、隔離するなどがあります。これは p タグに設定します。

  • none
    何もしない
  • quarantine
    迷惑メールフォルダに配信
  • reject
    サーバー側で削除する

none で設定した場合、それを日次レポートに記録されます。そして rua タグで設定されたメールアドレスに対して、レポートが配信されます。これによってなりすましメールがどの程度送られてきているかを確認できます。

なりすましについてはSPFまたはDKIMを利用しますが、厳格モードと緩和モードの2つが用意されています( aspf タグにて指定します)。例えば緩和モードの場合、DNSで設定されたドメインに完全一致だけではなく、サブドメインも含められます。

DNSレコードは _dmarc サブドメインに対して設定します。例えば次のようになります。

v=DMARC1; p=none; rua=mailto:reports@example.com; pct=100; adkim=s; aspf=s

DMARCはなりすましの状況をレポーティングで受け取ったり、その取り扱いやどこまで厳密にチェックするのかを指定できます。企業の運用ルールに合わせて設定できますが、最初は緩く、状況を見ながら徐々に厳しくするのが良いようです。

BIMI

BIMIはBrand Indicators for Message Identificationの略になります。Gmailなどでテスト的に導入がはじまっている、メールに企業ロゴを表示する仕組みになります。利用に際してはSPF、DKIM、DMARCの設定をすべて完了している必要があります。

DMARCについては p タグが quarantine または reject になっている必要があります。noneでは駄目なので注意してください。

次に、メールに表示するロゴのVMC(認証証明書)を取得します。これはロゴの所有権を確認するためで、VMCが認める知的財産権機関にて商標登録を行います。その結果、WIPO(世界知的所有権機関)にてロゴが検索結果に出てくることを確認します。ロゴが商標登録されたら、 DigiCertかEntrustにてVMCを申請します。

VMCの承認が得られるとPEMファイルが送られてきます。このファイルは公開されているWebサーバーに配置し、DNSレコードにてそのURLを設定します。同様にロゴはSVGファイルにし、同じく公開されているWebサーバーに配置します。なお、このWebサーバーはSSL/TLSになっている必要があります。

DNSレコードは default._bimi サブドメインに対して設定します。例えば次のようになります。

v=BIMI1;l=https://example.com/brand.svg;a=https://example.com/brand.pem

なりすましと改ざん

BIMIはロゴが表示されることで、より信頼性の高いメールであることを保証する仕組みと言えます。なりすましやメール改ざんについてはSPFとDKIMが担っているので、基本的なメール保護の仕組みについては十分でしょう。その上でなりすましメールがあった場合の対処法をDMARCにて設定します。

SPFとDKIMはメールを保護する基本的な仕組みと言えますので、どちらも忘れずに設定しておきましょう。

Discussion