定義

DKIM (DomainKeys Identified Mail) は、電子メールプロバイダが認証できる方法で組織が署名することにより、組織がメッセージ送信に責任を持つことを可能にするプロトコルです。DKIMレコードの認証は、暗号化認証によって可能になります。

DKIMのような送信ドメイン認証技術を導入することは、標的型攻撃メールから従業員や顧客を守る最良の方法の一つです。本記事では、メール認証プロトコルであるDKIM(DomainKeys Identified Mail)について説明します。他の送信ドメイン認証であるSPF(Sender Policy Framework)とは何か、なぜそれが重要なのかを説明した記事もあわせてご覧ください。

DKIMの仕組み

DKIM署名のプロセスには、主に3つのステップがあります。まず、送信者はDKIMレコードの署名にどのフィールドを含めたいかを特定します。これらのフィールドには、「from」アドレス、本文、件名、その他多くのものが含まれます。これらのフィールドは転送中も変更されないようにしなければならず、そうでない場合はDKIM認証に失敗します。

次に、送信者の電子メールプラットフォームは、DKIM署名に含まれるテキストフィールドのハッシュを作成します。

差出人: Jane Doe <jane.doe@proofpoint.com>
件名: Update

例えば、上記ようなテキストフィールドは、以下のハッシュ値にマッピングされます。

3303baf8986f910720abcfa607d81f53

ハッシュ値が生成されると、送信者だけがアクセスできる秘密鍵で暗号化されます。

最後に、電子メールが送信された後、電子メールゲートウェイまたは電子メールプロバイダは、秘密鍵と完全に一致する公開鍵を見つけることによって、DKIM署名を認証します。これにより、DKIM署名は復号化され、元のハッシュ値に戻されます。

次に、受信者はDKIM署名に含まれるフィールドのハッシュを独自に生成し、復号化されたばかりのハッシュ値と比較します。もしこれらが一致すれば、2つのことが分かります。1つは、DKIM署名のフィールドが転送中に変更されていないこと、もう1つは、電子メールの署名者が本当にその電子メールを所有していることです。

DKIM署名とは?

DKIM署名とは、認証の主要な機能で、メッセージ内の様々な構成要素によって作成されるハッシュのことです。送信者はメッセージのドメイン、本文、その他の部分を用いて署名を作成することができます。これらの構成要素はメッセージの送信時に決定されるため、後で変更することはできません。

署名を作成するために、送信者はドメインの秘密鍵を使用してメッセージを暗号化し、ハッシュを作成します。次に受信者のメールサーバーは、送信者の公開鍵を使用して、メッセージから同じ構成要素を暗号化します。受信者は暗号化された結果であるハッシュ値を受け取り、復号化された送信者のハッシュと比較します。もし両方の文字列が同じであれば、DKIM認証にパスします。メッセージ内の文字が1つでも変わっていれば、公開鍵で暗号化して返されるハッシュは、送信者のメールサーバーから送信されたものと同一にはなりません。

DKIM署名の認証プロセスの失敗は、攻撃者がメッセージを改ざんした可能性があることを示しています。DKIM署名と暗号化プロセスは、受信者が傍受されたメッセージからフィッシングやマルウェア攻撃の犠牲にならないように、メッセージの完全性を保証します。

DKIMセレクタとは?

ドメインのDNSサーバーは、DKIM TXTエントリをホストしますが、受信者のメールサーバーは、他のTXTエントリの中からそれを見つけることができなければなりません。 DKIMセレクタは、受信者の電子メールサーバーがドメインの公開鍵を見つけることができる場所を示します。公開鍵はハッシュを作成し、秘密鍵で作成された同じハッシュと照合するために使用されるため、DKIM認証において必要なコンポーネントです。

DKIMの設定で送信されるすべての電子メールメッセージには、他の情報とともにセレクタが含まれたDKIM-Signatureヘッダが含まれます。以下は、DKIM署名の例です。

DKIM-Signature: v=1; a=rsa; c=relaxed/relaxed; d=mydomain.com; s=s837fhs;

「s」タグにある値は、DKIMセレクタです。このセレクタは、秘密鍵/公開鍵のペアを作成するときに生成されます。メールサーバーでDKIMを設定し、自分宛にメッセージを送信すると、自分のDKIMセレクタを見つけることができます。電子メールメッセージのヘッダを表示し、ヘッダのDKIM署名セクションを見つけます。ヘッダの「s」タグの中の値が、あなた自身のDKIMセレクタです。

DKIMとSPFの違い

DKIMとSPFは、電子メールの安全性、盗聴阻止、データ改ざんの防止を実現するために連携しています。どちらもDMARC(Domain-based Message Authentication Reporting and Conformance)の一部ですが、それぞれ異なる目的を果たします。DKIMは、第三者が電子メール内のデータを改ざんしていないことを確認するために使用されます。一方、SPFは、送信者のドメインを利用したなりすましメッセージを阻止するものです。

SPFレコードでは、ドメインの所有者は、DKIMレコードが鍵情報をホストするのと同じ方法で、DNSサーバーにTXTレコードを登録します。TXT情報には、ドメインの代わりに電子メールを送信することを承認されたすべての電子メールサーバーの一覧が表示されます。攻撃者が偽装したヘッダを使用した場合、SPFレコードによって受信者のメールサーバーは不正なメッセージを検出し、意図した被害者の受信トレイに届かないようにブロックすることができます。

SPFレコードは、なりすましの電子メールメッセージが受信者に送られないことを保証するだけで、攻撃者がメッセージを改ざんしていないことを保証するものではありません。DKIMがなければ、攻撃者はメッセージを乗っ取り、改ざんしたメッセージを受信者に送ることができます。DKIMはSPFと連携することで、送信者が正当であり、メッセージが送信中に改ざんされていないことを保証します。

DKIMとSPFの組み合わせは、インターネット上の主要なコミュニケーションツールである電子メールシステムにセキュリティを追加するものです。電子メールは、ほとんどのユーザーがなりすましのメッセージを検出できないため、攻撃者がIDやユーザー認証情報を盗むための手段となっていました。この2つの戦略は、DMARCのルールに適用されます。DMARCは、認証に失敗した場合にメッセージがどうなるかを決定します。

大企業の場合、DMARCルールは、管理者によるレビューのためにメッセージを隔離することができます。隔離されたメッセージは、管理者が受信トレイに転送しない限り、意図した受信者には届きません。誤検出されたメッセージは、意図した受信者に転送されるため、重要なメッセージが誤って削除されることはありません。セキュリティが十分に認証された後、DKIMとSPFの認証に失敗したメッセージを自動的に削除するようにDMARCを設定することができます。

DKIMとDMARCの違い

DKIM、SPF、DMARCは同じ意味で使われることが多いですが、これらは電子メールメッセージを保護するために連携して働く3つの異なる戦略です。DMARCは、DKIMとSPFが認証をパスしなかった場合にメッセージをどうするかを決定するセキュリティルールだと考えてください。

DMARCは、失敗したDKIM認証に対して、「隔離」「拒否」「なし」の3つの設定を提供します。DMARCのセキュリティプロセスでは、これらの3つの段階のうち、どの段階がメッセージに適用されるかが決定されます。メールサーバーの管理者がDMARCの設定を行うため、認証に失敗したメッセージがどうなるかは管理者の設定に依存します。

「なし」 設定は、何もしないことを意味し、メッセージは受信者の受信トレイにそのまま流れます。この設定は、なりすましや悪意のあるコンテンツを含むメッセージを受信する必要がある受信者のためのものです。受信者は、不審なメッセージを調査する必要のあるセキュリティ管理者または従業員であることが多いです。

「隔離」ステータスは、多くの管理者が設定しているもので、認証に失敗したメッセージを確認するために使用します。メールシステムは、これらのメッセージを、ユーザーはアクセスできないが、管理者が後で確認できる安全な場所に置きます。管理者は、隔離されたメッセージを確認することで、いつ組織がフィッシングキャンペーンのターゲットになるかを判断することができます。また、隔離されたメッセージは、SPFやDKIMの設定に誤りがあるかどうかを確認するために使用することもできます。メールセキュリティシステムの中には、人工知能(AI)を搭載しているものもあり、管理者は誤検出を指摘することで、システムをよりよく「訓練」することができます。

メッセージがDKIM認証に失敗し、DMARCがメッセージを拒否するように設定されている場合、メールサーバーはそのメッセージを完全に拒否し、どこにも送信しません。この設定は、Gmailのような公開メールサーバーでよく見られます。Googleは、顧客がフィッシング、ハッキング、その他の個人情報盗難の被害に遭わないように、DKIMとSPFの認証に失敗した何百万ものメッセージを無条件で拒否しています。

DKIMレコードの必要性

DKIMレコードは、悪意のあるコンテンツやスパムを含む可能性のある電子メールを通知することで、受信者にもメリットがあります。また、DKIM署名に含まれるデータが送信中に変更されていないことを認証します。しかし、DKIMの実装はより困難であるため、これを採用する送信者は少なくなっています。さらに、DKIMは、サイバー犯罪者が電子メールの「from」フィールドの目に見える部分(電子メールアドレス、ディスプレイネーム、ドメインなど)を詐称するなりすましメールを防ぐことはできません。したがって、SPFと同様、DKIMはそれ自体では高度なフィッシング攻撃から組織を守るには十分ではありません。

SPFとDKIMの長所を組み合わせたDMARC(Domain-based Message Authentication Reporting and Conformance)認証規格が、企業のヘッダ「from」ドメインを使ったメッセージが正当であることを認証できる唯一の技術です。