DKIMセレクタ
この記事では、特にDKIMセレクタについて取り上げ以下の点を解説します。
- DKIMセレクタとは
- 独自のDKIMセレクターはどこで確認できますか
- サードパーティプロバイダーとDKIM署名
DKIMはどのように機能するのでしょうか?
DKIM(DomainKeys Identified Mail)は、特定のドメインから送信されたと主張する電子メールについて、受信者が、そのメールが実際にそのドメインの所有者によって承認されたものであり、送信中に内容が無断で改ざんされることなく受信されたものであることを確認できる電子メール認証方式です。これは、秘密鍵と公開鍵からなる暗号鍵ペアを用いた暗号認証によって実現されます。
DKIMの仕組み
- デジタル署名の作成:電子メールが送信されると、送信元のメールサーバーはそのメッセージに対して一意のデジタル署名を生成します。この署名は、ヘッダーや本文を含むメール本文の内容に基づいており、送信中にメールが改ざんされた場合にそれを検出できるようにします。この署名は、送信元のドメインのみが知る秘密鍵を使用して作成されます。
- 署名の追加:その後、デジタル署名が「DKIM-Signature」ヘッダーとしてメールに追加されます。このヘッダーには、DKIMのバージョン、メールの送信元を主張するドメイン(d=タグ)、実際の署名(b=タグ)など、検証プロセスに不可欠な情報がいくつか含まれています。
- 電子メールの送受信:電子メールが送信されると、インターネットを経由して受信者のメールサーバーに到達します。その過程で、中継サーバーを経由する場合があり、各サーバーは設定に応じてDKIM署名を検証する可能性があります。電子メールが複数のサーバーを経由して中継されることは一般的です。 例えば、ある組織がMicrosoft 365アカウントからメールを送信した場合、そのメールはサードパーティのセキュリティゲートウェイを経由して中継され、その後、本来の受信者に配信されます。自動転送されるメールも同様に中継されます。例えば、大学のメールアドレスを持つユーザーが、受信したすべてのメールを個人のGmailアカウントに転送するようにメールボックスを設定した場合などがこれに該当します。
- 検証プロセス:メールを受信すると、受信側のサーバーはDKIM-Signatureヘッダーを抽出し、その情報を使用してDNSクエリを実行します。このクエリにより、送信者のDNSレコード内の特定のDKIMセレクタの下に公開されている公開鍵が検索されます。その後、その公開鍵を使用して、メールに追加されたデジタル署名が検証されます。
- 認証チェック:署名がメールの内容と一致する場合、メールの真正性が確認されるだけでなく、送信中の完全性も保証されます。しかし、DKIM署名が送信者の正当性を立証する上で完全に有効となるためには、DKIM-Signatureヘッダー(d=タグ)で指定された署名ドメインが、メールの「From」ヘッダーに記載されたドメインと一致している必要があります。この整合性は極めて重要です。なぜなら、DKIMを通じてメールの責任を主張するエンティティが、「From」アドレスに示されているエンティティと同一であることを保証するからです。この一致がなければ、誰でも自分のドメインでメールに署名しながら「From」ヘッダーを偽装することが可能となり、DKIMが意図する信頼メカニズムが損なわれてしまうからです。
DKIMセレクタとは何ですか?
DKIMセレクタを使用することで、受信側のメールサーバーは送信者の公開鍵を特定し、その有効性を確認することができます。DKIMセレクタとは、基本的に、単一のドメインのDNSレコードに公開されている複数の鍵を区別するために用いられる手法です。これは、複数のサーバーやサービスからメールを送信する組織にとって特に有用であり、各サーバーやサービスに固有のDKIM署名を設定することを可能にします。
DKIMセレクターはどこで確認できますか?
DKIMセレクターを確認するのは、ご自身のドメインから送信されたメールのヘッダーを調べるだけの簡単な作業です。ここでは、GmailとOutlookという2つの主要なメールクライアントで、これらのヘッダーを表示する方法をご紹介します。なお、これらの手順はメールクライアントのバージョンによって異なる場合があり、またプロバイダーによっても異なる点にご注意ください。
GmailでDKIMセレクターを確認する方法
- 問題のメールを開いてください。
- メール画面の右上にある3つの点をクリックして、メニューを開いてください。
- ドロップダウンメニューから「オリジナルを表示」を選択してください。
- 新しいタブまたはウィンドウが開き、ヘッダーの全文と元のメッセージが表示されます。スクロールするか、検索機能(Ctrl+F または Cmd+F)を使用して、「DKIM-Signature」セクションを探してください。
OutlookでDKIMセレクターを確認する方法
- メールをダブルクリックすると、新しいウィンドウで開きます。
- 「ファイル」メニューを開き、「プロパティ」を選択します。
- [プロパティ] ウィンドウの「インターネットヘッダー」セクションに、メールのヘッダーが表示されます。「DKIM-Signature」という行が見つかるまでスクロールしてください。
DKIM署名ヘッダーの例
example.com からメールを送信し、そのメールのヘッダーを確認しているとします。次のような DKIM-Signature ヘッダーが見つかるかもしれません:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=dkim1; c=relaxed/relaxed; …
この架空の例では、「d=example.com」の部分がメールの送信元となるドメインを指定しており、「s=dkim1」がセレクタです。セレクタ「dkim1」は、example.comの DNS レコード内のどこに公開鍵があるかを示しており、具体的にはdkim1._domainkey.example.com というレコードにあります。
セレクタの特定方法DKIM-Signatureヘッダーにおいて、s=タグはドメイン(d=タグ)の直後に位置し、他のパラメータの前にあります。このタグに関連付けられた値が、DKIMセレクタとなります。この例では、dkim1が探しているセレクタです。
次の手順
DKIMセレクタを特定したら、それを使用してDKIMレコードの検証を行うことができます。また、DMARCデータ内でそのセレクタを確認することで、使用状況を把握し、期待どおりに機能しているかを確認できます。DKIM InspectorやDKIM Validatorなどのツールを使用すると、公開鍵がDNSに正しく公開されており、メール検証の目的でアクセス可能かどうかを確認したり、DNSに公開しようとしている公開鍵レコードの構文が正しいかどうかを検証したりするのに役立ちます。
サードパーティプロバイダーとDKIM署名:TXTレコードとCNAMEレコード
Microsoft Exchange Online や Salesforce.com といったサードパーティのメールサービスプロバイダーを通じて DKIM 署名を統合する場合、プロバイダーから自社ドメインの DNS 設定に TXT レコードまたは CNAME レコードの追加を求められることがあります。この設定は、プロバイダーの DKIM 署名を利用して、そのドメインの代理として送信されるメールの正当性を検証するために必要となります。
各レコードの種類がどのような場面で用いられるか、その概要と具体的な例を以下に示します:
DKIM用のTXTレコード
理由:TXTレコードは、ドメインのDNSにDKIM公開鍵を直接保存するために使用されます。これにより、メッセージを受信するメールサーバーは、この公開鍵を特定して使用し、そのドメインから送信されたメールのDKIM署名を検証できるようになります。
例:サードパーティのプロバイダーからDKIM用のTXTレコードが提供された場合、次のような形式になることがあります:
dkim1._domainkey.example.com. IN TXT “v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD…
ここで、dkim1は DKIM セレクタであり、p=の後の部分が公開鍵です。
DKIM用のCNAMEレコード
理由:一部のプロバイダーは、自社のインフラ上でホストされているDKIM公開鍵を参照するためにCNAMEレコードを使用しています。この方法により、プロバイダーはクライアント側のDNS設定を変更することなく、DKIM鍵をローテーションさせることができます。これにより、DKIM鍵の検索が事実上、プロバイダーのドメインに委譲されることになります。
例:プロバイダーがCNAMEレコードの使用を推奨している場合、次のような形になります:
dkim1._domainkey.example.com. IN CNAME dkim1.exampleprovider.com.
この場合、DNSでdkim1._domainkey.example.comをクエリすると、DKIM公開鍵が実際にホストされているdkim1.exampleprovider.comを指すCNAMEレコードが返されます。
TXTレコードとCNAMEレコードの選択
DKIMにおいてTXTレコードとCNAMEレコードのどちらを選択するかは、プロバイダーのインフラストラクチャおよびDKIMキーの管理方針によって異なります。特に、クライアントに代わってキーのローテーションを処理するプロバイダーの場合、CNAMEレコードの方がキー管理において柔軟性が高くなります。一方、TXTレコードを使用すれば、ドメイン所有者はDNS上のDKIMキーを直接管理することができます。
プロバイダーのDKIMレコードの設定
DNSにDKIMレコードを追加する際は、プロバイダーの指示に厳密に従ってください。レコードの形式が正しく、適切に公開されていることを確認し、DNS検索ツールを使用してその反映状況を確認してください。多くの場合、サービスプロバイダーは独自のツールを提供しているほか、鍵の使用を有効化する前に、自社アプリケーション内またはサポートチームによるレコードの検証を義務付けていることもあります。
プロバイダーの指示に従って、これらのレコードを更新するようにしてください。特に、プロバイダーがDKIMにTXTレコードを使用しており、定期的に鍵を更新している場合は注意が必要です。
私たちがサポートします
メールセキュリティのエキスパート集団であるdmarcianは、「ドメインセキュリティを通じて、メールとインターネットをより信頼できるものにする」というミッションを掲げ、お客様の組織のドメイン状況を評価し、長期にわたってDMARCの実装と管理をサポートいたします。
この件について議論を続けたいですか?ぜひdmarcianのフォーラムへお越しください。