DKIM

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

メールに電子署名を付け、DNSで公開された署名ドメインの公開鍵で検証する送信ドメイン認証方式である。署名したドメインを確認し、署名で保護された部分の改ざんを検出する。

イマシルちゃんの解説

DKIMは、メールに署名したドメインを確かめる送信ドメイン認証の方式だよ。
署名する側は外へ出さない秘密鍵を使って、メールに電子署名という検証用のデータを付けるんだ。
受け取る側は、ドメインの情報を調べるDNSから検証用の公開鍵を取り出すよ。
その鍵で署名を調べて、本当にそのドメインの署名かを確認するの。
署名で保護された部分の改ざんも調べられるから、受け取ったメールを信用するか判断する手掛かりになるんだ。
ただし、画面に表示された送信者本人の身元まで保証するわけではないよ。

より深い解説

定義

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

仕組み

段階送信側受信側
準備鍵のペアを作り、公開鍵をDNSに登録する−
送信本文のハッシュ値と対象ヘッダーを基に秘密鍵で署名し、DKIM-Signatureヘッダーを付ける−
受信−署名ヘッダーのドメインとセレクタから、DNSに公開鍵を問い合わせる
検証−本文のハッシュ値を確認し、公開鍵で署名を検証する

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

メールに付く署名ヘッダー

DKIM-Signatureには、名前=値という形のタグをセミコロンで区切って記録する。

タグ内容
d署名したドメイン
s検証用の鍵を選ぶセレクタ
h署名対象に選んだヘッダー名の一覧
bh本文のハッシュ値をBase64で表した値
b署名値をBase64で表した値

例えば d=example.net; s=mail2026 なら、受信側はmail2026._domainkey.example.netのTXTレコードを調べる。bに入るのは署名値であり、秘密鍵やメール本文ではない。

署名対象のヘッダーはhで指定する。本文は、空白や改行などの扱いをそろえる正規化を行ってからハッシュ値を求める。したがって、検証成功が保証する範囲は署名対象と正規化の規則に従って保護された部分である。配送途中で追加された署名対象外のヘッダーまで、元から存在したものだと保証するわけではない。

DNSで公開する鍵の情報

DNS側のレコードにもタグがあるが、メールの署名ヘッダーとは別の形式である。

タグ内容値の例
vDKIM鍵レコードのバージョンDKIM1
k鍵の種類rsa
pBase64で表した公開鍵のデータ鍵ごとの文字列
t鍵の利用に関するフラグy、s

t=y はテストモードを示す。t=s は、署名ヘッダーのi=で示す識別情報のドメインを、d= のドメインと完全に同一に制限する指定である。サブドメインを許さないための制限であり、「本番運用」を示す値ではない。フラグを省略しただけで t=s と同じ制限になるわけでもない。

SPFとの比較

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

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

S/MIMEとの違い

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

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

DKIMの限界

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

参考資料

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

ネットワークスペシャリスト

午前Ⅱ
午後Ⅱ

この用語が出てくる記事

↑