web-dev-qa-db-ja.com

DANEを使用してメール送信者を認証します

ルートからメールサーバーmail.example.comまでの独自の仮想DNSインフラストラクチャがあります。すべてがDNSSECを使用して署名されています。

[email protected]は、彼の証明書でデジタル署名された[email protected]に電子メールを送信できます。両方のクライアントが同じCAを信頼しているため、client2はこのメッセージを検証できます。

CAが危険にさらされた場合はどうなりますか?そのようなイベントの可能性について議論することは重要ではありません。したがって、セキュリティの層を追加したいと思います。 client1の証明書にDANEレコードを追加したい。

電子メール送信者の証明書にDANEレコードを追加するにはどうすればよいですか?

何かのようなもの:

[email protected]   IN TLSA ...   AwAeKhf...
1
TomatoGuy

それはDANEが発明されたものではありません。 TLSAレコードは、主にトランスポートエンドポイント(たとえば、TCPポート)on名前付きホスト。これにより、ホスト名の証明書を認証局から独立させることができます。DNSSECを使用すると、暗号的に安全な方法でこれを実現できます。

1つのレベルのドメイン名を制御している人が、それらの名前に存在するすべての名前と証明書を制御できることは不利だと考える人もいます。実際、ルートドメイン(。)の所有者は、任意のホスト名を安全に偽造でき、DANEを使用すると安全な証明書も使用できます。

RFC6698 このように説明します:

DNS-Based Authentication of Named Entities (DANE) offers the option
to use the DNSSEC infrastructure to store and sign keys and
certificates that are used by TLS.  DANE is envisioned as a
preferable basis for binding public keys to DNS names...

メールドメインのDNSのユーザーPGPキーの場所をTXTレコード)に保存するという(少なくとも1つの)関連する提案がありますが、その主な目的は、そのようなものを見つけやすくすることです。キー、実際に検証するためではありません。

[〜#〜] is [〜#〜]提案された標準 RFC4398 実際に証明書を保存しますが、 DNSSECが普及する前に作成されたため、UDP応答が512バイトを超える場合は、証明書全体を保存しないことをお勧めします。広く使われているようにも思えません。

すべてのユーザー検証は追加の構成を必要とするサーバーソフトウェアで行われるため、通常、CAが発行した公式のクライアント証明書や、前述の証明書の追加コピーを保存する標準化された方法を期待する必要はほとんどありません。実際には、プログラム/サイトにそのような検証を自由に実装できます。

CAの侵害によってユーザー証明書が無効になる可能性があると思われる場合は、たとえば、信頼できる証明書として各ユーザー証明書を個別に追加する方が簡単な場合があります。

3
chexum

DMARCとDKIMは、説明する目的で使用されます。 CAインフラストラクチャは必要ありません。

DKIMの場合、必要なのは、公開/秘密RSAキーペアを生成し、DNSで公開キーを公開し、署名ソフトウェアにその秘密キーを使用するように指示することだけです。

クライアントは、ヘッダーにDKIM署名が記載された電子メールを受け取ります。次に、埋め込まれた情報を使用してDNSエントリに移動し、公開鍵を取得します。そして確認する

DKIMは、同じキーで多くの電子メールアカウントに署名できるため特別です。または、ユーザーごとに異なるスコープを使用して、それらのキーをDNSで公開することもできます。

2