MailData

DKIM ED25519署名の設定方法

DKIM ED25519署名の設定方法

2024年1月30日
著者: Ahona Rudra
翻訳: 竹洞 陽一郎

この記事はPowerDMARCのブログ記事 How to Configure DKIM ED25519 Signatures? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


メール認証に広く採用されている方法の一つに、DomainKeys Identified Mail (DKIM) があります。 これにより、メール受信者は、送信者のドメインがメールを認証し、転送中に改竄されていないことを確認できます。 RSA署名はDKIMで一般的に使用されてきましたが、いくつかの制限があります。

このブログでは、RSA署名と比較したDKIM ED25519署名の利点を探り、DKIM ED25519署名の設定プロセスを案内します。

RSA署名の欠点

RSA(Rivest-Shamir-Adleman)は、長年にわたってDKIM署名の基盤として広く使用されてきた暗号化アルゴリズムです。
しかし、RSA署名にはいくつかの欠点があり、これがED25519のような代替アルゴリズムの採用につながっています。
以下は、RSA署名のいくつかの短所です。

暗号攻撃への脆弱性
RSA署名は、因数分解問題など、特定の暗号攻撃に対して脆弱です。
計算能力が増大するにつれて、RSAキーを解読するのに必要な時間が減少し、時間が経つにつれてセキュリティが低下します。
パフォーマンスのオーバーヘッド
RSA署名は複雑な数学的計算を伴うため、処理時間とリソース消費が増加します。
これは、大容量のメール環境において重大な懸念事項となります。
キーサイズと複雑さ
同等のセキュリティを提供するためには、RSAキーは他のアルゴリズムの小さなキーよりも大きなサイズが必要です。
これにより、RSAキーを維持するための複雑さとストレージ要件が増加します。

DKIM ED25519署名の利点

RSA署名の制限に対処するために、DKIMはED25519署名のサポートを導入しました。
ED25519アルゴリズムは楕円曲線暗号に基づいており、いくつかの利点を提供します。

強化されたセキュリティ
ED25519は、高いセキュリティを提供し、既知の暗号攻撃に対して耐性があると考えられています。
これは、より短い鍵長でRSAと同等のレベルのセキュリティを提供し、鍵の妥協リスクを減少させます。
性能の向上
ED25519署名は、RSA署名と比較して優れた性能を提供します。
ED25519署名の生成と検証に関わる楕円曲線計算は大幅に高速であり、処理時間の短縮とリソース要件の低減を実現します。
小さい鍵サイズ
ED25519の鍵は(256ビットで)RSA鍵よりも短く、4096ビットRSA署名鍵と同等のセキュリティレベルを提供します。
これにより、鍵管理が簡素化され、ストレージ要件が削減され、大規模な展開を容易に取り扱えます。
将来性の向上
RSA署名のセキュリティは鍵サイズに依存し、計算能力の増加に伴ってより大きな鍵が必要になります。
対照的に、ED25519は技術の進歩とともにそのセキュリティ強度を維持すると期待され、長期的な実用性を確保します。

DKIM ED25519署名の設定

DKIM ED25519署名を設定するには、以下の手順に従ってください。

1. DKIM鍵の生成
ED25519署名をサポートするDKIM鍵生成ツールを使用して、秘密鍵と対応する公開鍵を生成します。
2. 公開鍵の公開
指定されたDKIMセレクタの下で、ドメインのDNSレコードにTXTレコードとして公開鍵を公開します。
これにより、メール受信者は、あなたのドメインから送信されたメールの真正性を確認できます。
3. メールサーバーの設定
送信メールの署名に生成された秘密鍵を使用するように、メールサーバーのDKIM設定を更新します。
DKIM設定を更新する方法については、メールサーバーのドキュメントを参照してください。
4. テストと監視
設定後、テストメールを送信して、DKIM署名が正しく適用され、受信メールサーバーによって検証されていることを確認します。
成功した展開を確保するために、DKIM署名の状態を監視します。

DNSでED25519 DKIM鍵を公開する

ED25519 DKIM鍵をDNSに公開する際、以下の構文を考慮する必要があります。

注意:DKIM鍵の構文は大文字と小文字を区別します。

DKIM ED25519署名とRSA署名の使用におけるベストプラクティス

DKIM ED25519署名はRSA署名に比べて多くの利点を提供しますが、新しいアルゴリズムをサポートしていないシステムとの後方互換性を考慮することが重要です。
最大限の互換性と信頼性を確保するために、二重DKIM署名アプローチの実装が推奨されます。
このアプローチでは、ED25519署名とRSA署名の両方でメールに署名します。

これが有益である理由は以下の通りです。

互換性
ED25519とRSAの両方の署名を含めることで、より広範なメールサーバーとメールクライアントとの互換性を確保します。
一部の古いシステムやサードパーティのサービスでは、ED25519署名をまだサポートまたは検証していない場合があります。
RSA署名を含めることで、これらのシステムでもDKIM署名を検証でき、誤検知や拒否を防ぐことができます。
テストフェーズ
テストフェーズで二重DKIM署名アプローチを実装することで、ED25519署名の完全な採用に向けて徐々に移行することができます。
これはセーフティネットを提供し、異なる受信者によるED25519署名の受理と検証率を監視することを可能にします。
将来性
ED25519とRSAの両方の署名を含めることで、DKIM設定を将来にわたって有効にします。
より多くのシステムとプロバイダーがED25519サポートを採用するにつれて、レガシーシステムとの互換性を維持しながら徐々にRSA署名を段階的に廃止することができます。
これにより、業界が進化するにつれて、メール認証メカニズムが堅牢で効果的であることが保証されます。

訳注: 現在、ED25519をサポートしているDKIMモジュールやESP(Email Service Provider)

DKIMモジュール

ED25519に対応しているDKIMモジュールとしては、dkimpyがあります。
dkimpyはバージョン0.7以降でED25519に基づくDKIM署名の実験的なサインと検証をサポートしており、バージョン0.8以降ではED25519を実験的でないものとして扱っています。
このモジュールはRFC 8463に準拠しており、ED25519-SHA256の技術的パラメータが定義されており、安定しています。

OpenDKIMはED25519に対応しています。
OpenDKIMのバージョン2.11.0からED25519鍵のサポートが追加されました。

MTA

海外でメジャーなMTAのEximはED25519に対応しています。
Eximのドキュメントによると、GnuTLS 3.6.0やOpenSSL 1.1.1以降が実行されている場合、ed25519-sha256アルゴリズムを使用してDKIM署名の検証が可能です。
また、_CRYPTO_SIGN_ED25519マクロが定義されている場合は、ECキー(※)に対するサポートが存在することが示されます。

※ECキーとは、楕円曲線暗号(Elliptic Curve Cryptography, ECC)に基づく鍵のことを指します。
ECCは公開鍵暗号の一種で、楕円曲線数学を利用した暗号化アルゴリズムです。
ECキーは、ECCを使用する際に生成される公開鍵と秘密鍵のペアを意味します。

Docker MailserverはOpenDKIMまたはRspamdを用いてDKIMのサポートを提供しており、ED25519を含む複数の署名アルゴリズムをサポートしています。
Rspamdは、ED25519を使用したDKIMキーのサポートを提供していますが、第三者によるED25519 DKIM署名の検証の信頼性はまだ不確かです。
そのため、メールをED25519で署名する場合は、RSAをフォールバックとして含めることが推奨されます。

ESP(Email Service Provider)

Microsoft、Yahoo、Googleなどの主要なメールサービスプロバイダは、公式にはまだED25519を利用していないとされています。
これらのプロバイダは、RUAレポートでED25519を使用していないことを明言していますが、実際にはED25519で署名されたメールの検証に失敗したケースは報告されていないようです。
これは、新しいアルゴリズムをサポートする環境が正確な正規化順序を取得することが多いためと考えられます。

これらの情報を基に、ED25519をサポートするDKIMモジュールやメールサービスプロバイダを選択する際には、現在のところはRSAとED25519の両方を使用するデュアル署名アプローチを採用することが最善の方法であると言えるでしょう。

まとめ

DKIM ED25519署名の実装は、メール認証においてより安全で効率的な解決策を提供します。
しかし、後方互換性を考慮し、異なるシステム間でのED25519のサポートレベルが異なるため、二重署名アプローチの採用が推奨されます。
鍵管理のベストプラクティスに従い、業界のトレンドを最新の状態に保つことで、DKIM実装を最適化することが重要です。