DomainKeysとDKIMの違いとは?
著者: Ahona Rudra
翻訳: 東條 百々朱
この記事はPowerDMARCのブログ記事 DomainKeys vs. DKIM: What’s the Difference? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
主なポイント
- Yahooは2004年にDomainKeysを導入し、送信元ドメインの正当性を検証することで、なりすましメールの削減を目指しました。
- DKIM(DomainKeys Identified Mail)は、YahooのDomainKeysとCiscoのIdentified Internet Mailを統合したオープン標準として、IETFによりRFC 4871(2007年)で標準化されました。
- DKIMでは、選択したヘッダと、正規化(Canonicalization)したメール本文のハッシュ値へ署名するため、空白文字の変更など重要でない修正が加えられても、メールの内容が改竄されていないことを確認できます。
- DKIMのセレクタ(Selector)により、鍵のローテーションを容易に行えるほか、異なるメール送信サービスごとに複数の鍵を使い分けることも可能です。
- DKIMは、署名に含まれるドメインからメールが送信されたことと、配送中に内容が改竄されていないことを検証します。
- また、DMARCのアライメントチェックにも利用され、ドメイン所有者によるなりすまし対策の実施を支援します。
DomainKeysとDKIMは、どちらもスプーフィングやフィッシング、スパムへの対策として開発されたメール認証技術ですが、仕組みには大きな違いがあります。
2004年にYahooが開発したDomainKeysは、暗号署名によって送信元の正当性を確認する先駆的な技術でした。
しかし、柔軟性や運用面に課題があり、広く普及するには至りませんでした。
その後、DomainKeysとCiscoのIdentified Internet Mailを基にDKIMが開発され、IETFによって標準化されたことで、現在では広く利用されるメール認証技術となっています。
現在では、DKIMは安全なメール通信を支える代表的なメール認証技術として利用されており、メールの真正性と配送中の改竄防止を実現するとともに、DMARCによるポリシー適用も支えています。
DomainKeys(DK)とは?
DomainKeysは、2004年にYahooが開発・公開した初期のメール認証プロトコルです。
目的は非常に明確で、送信元ドメインの正当性を検証し、増加するスパムやフィッシング、なりすましメールを減らすことでした。
DomainKeysでは、メール全体へ暗号署名を付与する比較的シンプルな仕組みを採用していました。
当時としては画期的な技術でしたが、署名対象となるヘッダを柔軟に選択できず、メール転送やメーリングリストによるわずかな変更でも署名が無効になりやすいという課題がありました。
こうした制限を解消するためにDKIMが開発され、現在ではDomainKeysは廃止されています。
DomainKeysの欠点
DomainKeysがDKIMへ置き換えられた主な理由は、以下のとおりです。
- 独自仕様だったこと
- Yahoo独自の仕様であり、IETFによる標準化が行われなかったため、広く普及しませんでした。
- セレクタ機能がなかったこと
- セレクタ機能が存在しなかったため、1つのドメインで利用できる公開鍵は1つだけでした。
そのため、鍵のローテーションや複数のメール送信サービスでの運用が困難でした。 - 署名が無効になりやすかったこと
- 署名方式が非常に厳格だったため、メール転送やメーリングリストによる軽微な変更でも署名が無効になることが多くありました。
- 柔軟性が不足していたこと
- 署名アルゴリズムやCanonicalization(署名前の正規化処理)の選択肢が限られていました。
DKIM(DomainKeys Identified Mail)の概要
DKIM(DomainKeys Identified Mail)は、メール配送中に内容が改竄されていないことを確認するためのメール認証プロトコルです。
YahooとCiscoによって共同開発され、2007年にIETF標準(RFC 4871)として公開されました。
DKIMでは、メール送信時にDKIM-Signatureヘッダを追加し、デジタル署名を付与します。
受信側メールサーバは、DKIM署名付きメールを受信すると、その署名を検証します。
署名の検証に成功すれば、そのメールは配送中に改竄されておらず、署名したドメインによって送信されたことを確認できます。
以下は、DKIM-Signatureヘッダの例です。
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1; h=from:subject:date; bh=abc123…; b=xyz456…
DKIMの仕組み
DKIMでは、秘密鍵と公開鍵からなる鍵ペアを使用します。
これらの鍵は、メールの真正性と完全性を確認するために利用されます。
メール送信時、送信側メールサーバは秘密鍵を使ってデジタル署名を生成します。
この署名は、署名したドメイン、使用したアルゴリズム、署名対象となるヘッダなどの情報とともに、DKIM-Signatureヘッダへ追加されます。
メールを受信すると、受信側メールサーバは送信元ドメインのDNSから公開鍵を取得します。
取得した公開鍵を使用してDKIM-Signatureヘッダを検証し、署名とメール内容が一致するか確認します。
一致した場合、そのメールは配送中に改竄されておらず、署名したドメインによって送信されたことを確認できます。
つまり、DKIM-Signatureヘッダには署名情報が含まれ、秘密鍵で署名を生成し、公開鍵で検証することで、メールの真正性と完全性を確認する仕組みです。
DKIMの大きな特長は、DomainKeysと比べて、標準化された暗号署名方式、セレクタ機能、柔軟なCanonicalization(正規化)を採用したことです。
これにより、より信頼性が高く、実運用に適したドメインベースのメール認証が実現しました。
DomainKeysとDKIMの主な違い
名称は似ていますが、両者には大きな違いがあります。
DKIMは、DomainKeysが抱えていた技術的な課題を解決するために開発されました。
1.標準化と普及
- DomainKeys
- Yahoo独自の仕様として開発されたため、普及は限定的でした。
現在は廃止されています。 - DKIM
- IETFによって標準化されたオープンなメール認証プロトコルです。
中立性と高い互換性を備えており、GoogleやMicrosoftをはじめ、多くのメールサービスで採用されています。
2.署名の柔軟性
- DomainKeys
- 特定のヘッダとメール本文全体へ署名する仕組みだったため、配送中にメールへ少しでも変更が加わると、署名が無効になることがよくありました。
- DKIM
- DKIMでは、本文ハッシュとCanonicalization(正規化)を利用するため、空白や改行などの軽微な変更であれば、署名が無効になりにくくなっています。
ただし、メール転送やメーリングリストによって本文が大きく変更された場合には、署名が無効になることがあります。
また、送信者はh=タグで署名対象となるヘッダを自由に選択できます。
bh=タグにはメール本文のハッシュ値が格納され、本文が改竄されていないことを検証します。
さらに、c=タグによってCanonicalization(正規化)の方法を指定できるため、空白や改行などの扱いを柔軟に設定できます。
3.鍵管理とセレクタ
- DomainKeys
- セレクタ機能がないため、1つのドメインで利用できる公開鍵は1つだけでした。
そのため、鍵のローテーションや複数のメール送信サービスの運用が困難でした。 - DKIM
- DKIMでは「セレクタ」という仕組みが導入されました。
セレクタとは、DNSへ公開された複数の公開鍵を識別するための名前です。
これにより、以下のような運用が可能になります。
- Google WorkspaceやMicrosoft 365、マーケティングプラットフォームなど、サービスごとに異なる鍵を利用できる
- メール配信へ影響を与えることなく、安全に鍵をローテーションできる
- サービス単位で鍵を管理できるため、運用性が向上する
4.セキュリティと完全性
- DomainKeys
- 送信元ドメインが正当であることを確認することが主な目的でした。
- DKIM
bh=タグによる本文ハッシュを利用することで、署名後にメール本文が改竄されていないことを検証できます。
DomainKeysとDKIMの比較
| 機能 | DomainKeys(DK) | DKIM(DomainKeys Identified Mail) |
|---|---|---|
| 開発元 | Yahoo(独自仕様/2004年) | YahooとCiscoが共同開発され、その後IETFが標準化 2007年にRFC 4871として公開され、2011年にRFC 6376へ更新 |
| 目的 | 送信元ドメインを認証し、なりすましメールやスパムを削減する | 送信元ドメインを認証するとともに、メール内容が改竄されていないことを確認する |
| ヘッダ名 | DomainKey-Signature: |
DKIM-Signature: |
| セレクタ機能 | 非対応 | 対応(selector._domainkey.example.com) |
| 鍵管理 | ドメイン全体で1つの公開鍵 | セレクタを利用して複数の公開鍵を管理可能 |
| 署名対象 | メール本文全体と一部のヘッダ | h=タグで指定したヘッダと、bh=タグで指定する本文ハッシュ |
| Canonicalization | 基本的なもの、または非対応 | simpleとrelaxedに対応 |
| 本文ハッシュ | 本文全体へ直接署名 | 本文ハッシュを利用し、軽微な変更への耐性を向上 |
| 検証対象ドメイン | FromまたはSenderドメイン | d=タグで指定されたドメイン |
| DMARCとの連携 | 非対応 | 対応(DMARCのアライメントチェックに利用) |
| 普及状況 | 現在は廃止 | 現在も広く利用されている |
| 主な制限 | 署名が無効になりやすく、セレクタ機能がない | 表示上のFromヘッダは単独では保護できない(DMARCとの併用が必要) |
DKIMがDomainKeysへ置き換わった理由
DKIMは、DomainKeysが抱えていた主な課題を解決するために開発されました。
主な課題は、以下の3点です。
- IETFによる標準化が行われていなかったこと
- セレクタ機能がなく、鍵のローテーションが困難だったこと
- メールへわずかな変更が加わるだけで署名が無効になりやすかったこと
DKIMでは、柔軟なヘッダ署名方式、より強力な暗号方式、Canonicalization(正規化)、そしてIETFによる標準化が導入されました。
その結果、信頼性、拡張性、運用性が大きく向上し、現在では広く利用されるメール認証方式となっています。
DKIMを導入するビジネス上のメリット
DKIMを導入することで、メールセキュリティだけでなく、メール到達性やブランド保護の面でもさまざまなメリットがあります。
- スプーフィングとフィッシングの防止
- DKIM単体ではスプーフィングやフィッシング攻撃を完全に防ぐことはできません。
しかし、DMARCと組み合わせることで、ドメインを悪用したなりすましメールを防止しやすくなります。 - ブランド保護
- 攻撃者が自社ドメインを悪用してメールを送信すると、ブランドイメージは大きく損なわれます。
受信者はブランドに対して不信感を抱き、正当なメールまで信用されなくなる可能性があります。
DKIMは、受信者からの信頼を維持し、ブランドイメージを守るために役立ちます。 - メール到達性の向上
- GoogleやMicrosoftなど、多くのメールサービスでは、有効なメール認証が事実上必須となっています。
DKIM認証に成功したメールは、受信側から信頼性の高いメールとして評価されやすくなり、迷惑メールへ振り分けられるリスクを軽減できます。 - メッセージの完全性
- DKIM署名によって、送信後にメール内容が改竄されていないことを検証できます。
そのため、受信者は送信者が送信した内容を、そのまま受け取っていることを確認できます。
DKIMだけでは十分ではない理由
DKIMは非常に有効なメール認証技術ですが、単独ですべてのなりすましメールを防げるわけではありません。
その理由は、利用者に表示される「From」ヘッダのドメインが、本当に送信者のものかどうかまでは確認できないためです。
DKIMでは、署名に含まれるd=タグで指定されたドメインによってメールが署名されていることを検証します。
しかし、そのドメインと、受信者に表示される「From」ヘッダのドメインが一致しているかどうかは確認しません。
例えば、攻撃者が利用者に表示される「From」ヘッダにはCEOのメールアドレスを設定し、自身が管理する別のドメインでDKIM署名を付与してメールを送信したとします。
この場合、DKIM認証自体は成功する可能性がありますが、受信者にはCEOから送られたメールのように見えてしまいます。
この課題を補完するのがDMARCです。
DMARCは、DKIMまたはSPFで認証されたドメインと、「From」ヘッダに表示されるドメインが一致しているか(アライメント)を確認します。
これにより、正規のドメインになりすましたメールを受信側で適切に判定し、隔離や拒否といったポリシーを適用できるようになります。
まとめ
DomainKeysは、メール認証技術の基礎を築いた先駆的な仕組みでしたが、現在広く利用されている標準はDKIMです。
DKIMは、メールが正当なドメインから送信され、配送中に改竄されていないことを検証する重要な役割を担っています。
さらにDMARCと組み合わせることで、「From」ヘッダとの整合性も確認できるようになり、スプーフィングやフィッシングへの対策を大幅に強化できます。
一方で、DKIMの設定や鍵管理を適切に行わなければ、正当なメールが認証に失敗し、メールの到達性へ影響を及ぼす可能性があります。
そのため、運用面も含めた適切な管理が重要です。
こうした課題を効率的に解決できるのが、PowerDMARCのホスト型DKIMサービスです。
ホスト型DKIMは、DKIMの設定や鍵管理をクラウド上で一元管理できるサービスです。
管理画面から複数ドメインのセレクタや鍵を一括で管理できるため、DNSを直接編集することなく、安全かつ効率的にDKIMを運用できます。
無料トライアルを利用して、メール到達性の向上とメール認証の強化、そしてドメインのなりすまし対策にお役立てください。
よくある質問
- DomainKeysは現在も使用されていますか?
- いいえ。
DomainKeysはすでに廃止されており、現在はより高機能で標準化されたDKIMへ置き換えられています。 - PowerDMARCはDKIM管理をどのように支援しますか?
- PowerDMARCでは、Hosted DKIM機能を提供しています。
Hosted DKIMを利用することで、DKIMの導入、セレクタの管理、鍵のローテーションなどを一元的に管理できます。
DNSを何度も手動で編集する必要がなくなり、複数ドメインのDKIM運用を効率化できるほか、設定ミスの防止にも役立ちます。