DKIM

読み:でぃーきむ / 英語表記:DomainKeys Identified Mail

送信ドメイン認証の方式の1つ。送信側のメールサーバがメールに電子署名を付け、受信側は、DNSで公開された送信ドメインの公開鍵で署名を検証して、なりすましと改ざんを検出する。

イマシルちゃんの解説

SPFが「どのサーバから送られてきたか」を確かめるのに対して、
DKIMは、メールそのものに「ハンコ」を押す仕組みなんだ。

送る側のサーバが、自分しか持っていない秘密の鍵でハンコを押して、
受け取った側は、DNSに公開されている確認用の鍵で、ハンコが本物かを確かめる。
途中でメールの中身を書き換えられたら、ハンコが合わなくなるから、すぐにバレちゃうんだよ!

より深い解説

定義

DKIM(DomainKeys Identified Mail)は、RFC 6376で定められた送信ドメイン認証の技術である。送信側は、メールのヘッダーと本文から作った電子署名を、DKIM-Signatureヘッダーとしてメールに付ける。署名の検証に使う公開鍵は、送信ドメインのDNSのTXTレコードで公開する。

仕組み

段階送信側受信側
準備鍵のペアを作り、公開鍵をDNSに登録する−
送信メールのヘッダーと本文のハッシュ値から、秘密鍵で署名を作り、DKIM-Signatureヘッダーに入れる−
受信−DKIM-Signatureの d=(ドメイン)と s=(セレクタ)から、DNSに公開鍵を問い合わせる
検証−公開鍵で署名を検証し、メールが改ざんされていないことを確かめる

公開鍵は、「セレクタ._domainkey.ドメイン」という名前のTXTレコードで公開される。セレクタを変えることで、複数の鍵を使い分けたり、鍵を切り替えたりできる。

SPFとの比較

SPFDKIM
確認するもの送信元サーバのIPアドレスメールに付けた電子署名
改ざんの検出できないできる
メールの転送失敗しやすい内容が変わらなければ成功する
送信側の準備DNSにSPFレコードを登録する鍵を作り、メールサーバで署名し、公開鍵をDNSに登録する

DKIMは、署名がメールに付いて運ばれるため、転送されても(内容が変更されなければ)検証に成功する。この点で、転送に弱いSPFを補う。

S/MIMEとの違い

DKIMとS/MIMEは、どちらも電子署名を使うが、目的と署名する主体が異なる。

DKIMS/MIME
署名する主体送信側のメールサーバ(ドメイン)送信者個人
公開鍵の配布DNSデジタル証明書
目的送信ドメインの認証(なりすまし対策)送信者本人の認証、暗号化
利用者の操作不要(サーバが自動で行う)利用者が証明書を取得・設定する

DKIMの限界

DKIMで確認できるのは、「d= に書かれたドメインが署名した」ことである。攻撃者が自分で取得したドメインで正しく署名すれば、検証には成功する。そのため、利用者が見るヘッダーのFromのドメインと、署名のドメインが一致しているかを、DMARCで確認する必要がある。

実際の試験ではここに出る!

この用語が出てくる記事

↑