本文へスキップ
ecdsa.com

DKIM-Signature ヘッダー

DKIM 署名を tag=value の組として格納するヘッダーフィールド(RFC 6376 §3.5)で、v、a、c、d、s、h、bh、b のタグと、任意の i、l、t、x タグを含みます。
別表記DKIM-SignatureDKIM selector_domainkeybh tag

例:DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=s2026; t=1792483200; x=1793088000; h=from:to:subject:date:message-id; bh=…; b=…。bh は正規化した本文の SHA-256 を base64 にしたもので、本文の正規化が relaxed の場合、空の本文のハッシュは 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= になります。署名の対象は、列挙されたヘッダー(その順序どおり)と、それに続く、b= を空にした DKIM-Signature ヘッダー自身です。

確認すべきタグ:h= には From を含めなければなりません(RFC 6376 で必須)。ヘッダーを実際の出現回数より多く列挙する(オーバーサイン)と、攻撃者が 2 つ目のコピーを追加できなくなります。l= は署名する本文の長さを制限しますが、誰でも内容を追記できてしまうため使うべきではありません。t= と x= は署名時刻と有効期限を示します。i= は d= 内のエージェントまたはユーザーの識別子です。

s._domainkey.d にある鍵のレコードは v=DKIM1; k=rsa; p=… の形式です(値は公開鍵の base64 で、RSA では実際には SubjectPublicKeyInfo、k=ed25519 では生の 32 バイトの鍵)。p= を空にすると鍵は失効します。2,048 ビットの RSA 鍵は base64 で 392 文字になり、255 バイトが上限の TXT 文字列 1 つには収まらないため、1 つのレコード内で複数の文字列に分割しなければなりません。

規格と参考文献

すべての用語