メインコンテンツへスキップ
DKIMキーの自動更新の重要性

DKIMキーの自動更新の重要性

セキュリティに関する洞察技術ガイダンス

SendGridは先日、顧客データ、特に顧客のプライベートDKIMキーが漏洩する可能性があることについて、顧客に連絡しました。顧客データを保護するための対応の一環として、同社は可能な限り顧客に代わってDKIMキーを積極的に更新し、その他の顧客に対しても自主的に同様の措置を講じるよう推奨しました。

これを機に、DKIMキーのローテーションについて、その実施方法やプロセスを自動化するメリットについてお話ししたいと思います。

DKIMキーのローテーションの重要性

DKIMキーは、サーバー間を転送される過程でメールが改ざんされていないことを保証するデジタル署名です。DKIMが果たす役割の詳細については、当社のDKIM概要をご覧ください。

DKIMキーは公開されているため、攻撃の標的となる可能性があります。他のあらゆる暗号化手法と同様に、十分な時間と計算能力があれば、悪意のある攻撃者によって破られる可能性があります。 古い鍵を新しい鍵に定期的に置き換えること(「鍵のローテーション」と呼ばれる)は、攻撃者が秘密鍵を盗み出す可能性のある期間や、盗まれた鍵が有効である期間を最小限に抑えるため、これに対抗する効果的な手段となります。

DKIMキーのローテーション頻度は、キー自体の長さに関係しています。例えば、1024ビット長のキーは、2048ビット長のキーよりも頻繁にローテーションする必要があります。これは、1024ビット長のキーの方が、破られるのに必要な総計算リソースが少ないためです。 (現在、2048ビットの鍵は実用上最も強固な鍵長と見なされています)。Messaging, Malware and Mobile Anti-Abuse Working Group(M3AAWG)は、「DKIM Key Rotation Best Common Practices」においてガイダンスを発表し、鍵は6ヶ月ごとにローテーションすべきであると推奨しています。

DKIMキーのローテーションの仕組み

DKIMキーをローテーションするには、特定の一連の手順を実行する必要があります:

  1. 新しいDKIMキーを作成する必要があります。これにより、「DKIMキー」と呼ばれる秘密鍵と公開鍵のペアが生成されます。
  2. DKIMキーの秘密鍵部分は、DKIM署名を作成するソフトウェア(通常はメールを送信するメールサーバー)に設定する必要があります。
  3. DKIMキーの公開部分は、署名が作成されるドメインのDNSに公開する必要があります。
  4. 公開鍵が公開されると、メールを送信するメールサーバーは、インストール済みの秘密鍵を使用して、新しいDKIM鍵によるDKIM署名の作成を開始できます。

上記の操作には、いくつかの方法があります。 例えば、インターネットドメインに代わってメール送信を行うために委託したベンダーがDKIMキーを作成した場合、そのベンダーは、DKIMキーの公開鍵をドメインのDNSに設定するよう依頼してくるはずです。逆に、ご自身でDKIMキーを作成した場合は、ベンダーがメールソフトを設定してDKIM署名を作成できるよう、DKIMキーの秘密鍵をベンダーに提供する必要があります。

DKIMキーの作成やローテーションの際に生じうるやり取りを最小限に抑えるため、いくつかの手法が考案されています。これらの手法は、DNSの機能を活用することで、DKIMキーのローテーションに伴う技術的な負担を、DKIM署名を担当する技術担当者に近い位置に配置しています。

DKIMキーのローテーション方法

サブドメインの委任
サブドメインの委任は
、多くのドメイン所有者にとって最も簡単な鍵のローテーション方法です。ドメイン所有者は、DKIMインフラを管理する代わりに、自身に代わってメール送信を行うベンダーに専用のサブドメインを割り当て(または管理権限を委任)します。これにより、ドメイン所有者は鍵のローテーションを含むDKIM管理のすべての作業をベンダーに任せることができます。 ベンダーがドメイン所有者に代わってメールを送信することを許可されなくなった場合、ドメイン所有者はいつでも委任されたサブドメインを取り戻すことができます。

CNAME
CNAME ベースの委任とは、ドメイン所有者が CNAME を使用して、ベンダーが管理する DKIM データを指し示す仕組みです。これにより、ドメイン所有者はベンダーに対して DKIM 署名の作成を許可することができ、DKIM 署名の具体的な処理はベンダーが担当します。ドメイン所有者が許可を取り消す必要がある場合は、CNAME を削除することで、ベンダーとドメイン所有者との間の接続を事実上切断することができます。

CNAMEを使用するデメリットは、ベンダーがキーをローテーションさせるには、事前に複数のCNAMEベースのDKIMキーを設定しておく必要がある点です。ただし、一度設定が完了すれば、ベンダーはドメイン所有者に連絡したり、同期を取ったりすることなく、キーのローテーションを行うことができます。

手動での
のDKIMキーの更新は、新しいDKIMキーを手動で作成し、メールサーバーにそのDKIMキーの秘密鍵を設定した後、ドメイン所有者のDNSに公開鍵を登録することで行えます。メールサーバー、DKIMキー、およびDNSエントリ間の同期には、チームやシステム間の綿密な調整が必要となるため、手動設定はあくまで最終手段となります。

DKIMキーの自動ローテーションのメリット

DKIMキーを手動でローテーションするには、ツールを使用して新しいキーを生成し、その長い文字列をドメイン管理ソフトウェアにコピー&ペーストする必要がありますが、この作業にはミスが発生するリスクが伴います。特にセキュリティインシデントによりDKIMキーを緊急にローテーションする必要がある場合、調整が困難になりがちであるため、このDKIMキーのローテーション方法は理想的とは言えません。

メールプロバイダーによる自動的な鍵のローテーションにより、こうしたエラーの原因究明、トラブルシューティング、および修正の調整に費やす余分な時間を削減できます。SendGridの事例が示すように、SendGridの顧客は事前にDKIM鍵の管理をSendGridに委任していたため、SendGridは直ちにDKIM鍵をローテーションすることで、潜在的なセキュリティ侵害に迅速に対処することができました。顧客側で変更を行う必要はありませんでした。 もしSendGridがこの機能に投資していなかったならば、SendGridとその顧客は、セキュリティ上極めて重要な状況下で、おそらく営業時間外や休日中に変更作業を行わなければならなかったでしょう。キーの手動ローテーションが特定の役割にのみ委ねられている場合、対応時間がさらに長引く可能性があり、その役職に異動があった場合には再検討が必要になる恐れがあります。

私たちは、皆様がDMARCを理解し、導入できるようサポートいたします。DKIMキーのローテーションについてご質問がございましたら、お気軽にお問い合わせください

この件について議論を続けたいですか?ぜひdmarcianのフォーラムへお越しください。