DKIMレコードの構文
公開鍵暗号方式でメールにデジタル署名
2023年5月12日
著者: Ahona Rudra
翻訳: 高峯 涼夏
この記事はPowerDMARCのブログ記事 DKIM Record Syntax の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
DKIMは、メッセージの送信元を検証するための仕組みです。
これは公開鍵暗号を使用してメールの内容に署名するため、メールを受け取った人は誰でも、途中で改竄されていないかどうかを確認することができます。
TXTレコード名のDKIMレコード構文(の一例)は、selector._domainkey.example.com
です。
この例では、selectorはDKIM署名者であり、ドメイン「example.com」に署名していることを意味します。
DNSのDKIMレコードとは?
DKIMレコードは、DNS(ドメインネームシステム)におけるエントリで、他のメールシステムに対してどのようにメールを認証したいかを指示します。
これには、レコード名、レコードの有効期間、使用する鍵などの情報が含まれます。
送信者がDKIM認証を使用したメールメッセージを送信したい場合、メッセージの暗号化されたハッシュ※を生成します。
次に、送信時にこの暗号化されたコードをヘッダの一部として含めることで、メッセージが送信者のサーバを離れてから改竄されていないかどうかを受信者が確認できます。
※訳注:ハッシュとは、入力されたデータに対応して定まる一意な値のことです。
ハッシュから元データを推測することは困難とされています。
DKIMはどのようにしてメールを認証する?
DKIMは公開鍵暗号方式を使用して、送信するメールメッセージごとに独自の秘密鍵でデジタル署名を行い、受信サーバがその公開鍵で確認します。
署名プロセスでは、メールのヘッダにDKIM Signatureヘッダフィールドが追加され、これにはメールの送信元ドメインと宛先ドメインに関する情報や、元のメッセージ本文のハッシュ、暗号化および署名方法に関するその他の詳細が含まれます。
受信サーバは、その公開鍵を使用してこの情報を復号し、それらのドメインに対してキャッシュされた署名と比較して、一致しているかどうかを検証します。
DKIMレコード構文の分解
まず、DKIMレコードの例を見てみましょう。
Record Name: selector._domainkey.example.com Type: TXT TTL: 3600 Record Value: v=DKIM1;p=QUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQWdRQ1kwK3piQ0NlSURzOHYvYTQrMmhNNktxdjhYdEFJRXBpNjFFTEVXMVB0UmpSbkMrTm1FcFhvNUhuR1FPZFRXTGhYUFZVN0d5VWRUYUFVQ01pWEtrUDJHVXFVbHRQRXdvZU5QQVVQU09xQTg2Z1c3Q3o5dEh3czBTalp3alllMUxNWWxHVEQ3SjhJQnpCS2dVMmp5ZFJvVGEzbEp1N1l3czZiU1BMclFoN24wUT09IA==
Record Name(レコード名)
DKIMレコード構文のNameフィールドは、DKIMセレクタとドメインの2つの部分から構成されています。
セレクタは送信ドメインを識別し、DKIMルックアップ中にドメインのDNSで公開された公開鍵を見つけるのに役立つ一意の文字列で、すべてのDKIM署名ドメインで一意である必要があります。
ドメインは、DNSレコードのアドレスです。
Record Type(レコードの種類)
このフィールドは、DKIMレコード構文のリソースタイプを指します。
それはプロバイダによって、TXT(テキスト)レコードの場合も、CNAME(正規名)レコードの場合もあります。
TTL
レコードの有効期間であり、秒単位で測定されます。
レコードがセッションごとに有効な期間を示し、その後、期限切れになるか更新されます。
Value(値)
最後に、DKIMの値は、メールを認証するために秘密鍵(メールヘッダの署名鍵)と照合される公開鍵です。
DKIMメールヘッダの解説
v=DKIM1; a=rsa-sha256; d=example.com; s=s1; h=from:to:subject; bh=YzJFQUFBQURBUUFCQUFBQWdRQ1kwK3piQ0NlSURzOHYvYTQ=; b=AptMld5a1djOUJva1hKWjBkYys5MW5FVXNYRUNvSXJZK0pSdGhVaDRDekNjZ2dEQWJ6RFl1QmVWNkgvN3l1M3drdVllSjVjK0gKSHdKQUtzSk1NNDNBZzdLUERXNFZ0K0lqa3pXWStKck56b3UvalFQbGk1M3MxVTF2c0krOElFSW80ci9xM3ZHd3crc2xOdmRjCkc5L1hnZWlvajJMaktJaHN5QT09Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
DKIMタグ | 説明 |
---|---|
v | 使用中のDKIMのバージョン。値は常に1で、これは使用されている最新バージョンです。 |
d | メール送信者のドメイン名です。 |
h | DKIM署名に使用されるメールヘッダ(メールのfrom:、to:およびSubjectヘッダ)です。 |
bh | DKIMの本文ハッシュ値(bh=タグ)は、メッセージの本文から計算される本文ハッシュの実際の値です。 この値はその後、DKIMによって署名されたメッセージ内の特別な形式のヘッダに保存されます。 本文ハッシュ値は、メッセージがDKIMによって署名されてから変更されていないことを証明するために使用されます。 |
b | DKIMの秘密鍵を含むDKIMのデジタル署名です。 |
DKIM署名は、メールメッセージの真正性およびその信頼性を検証するために使用できるデジタル署名(b=タグ)です。
正しいDKIMレコードの構文でDKIMレコードを作成するには?
正しいDKIMレコード構文でレコードを作成していることを確認するために、PowerDMARCのDKIMレコード生成ツールを使用して無料でレコードを生成できます。
選択したセレクタとドメイン名を入力し、生成ボタンを押すと、カスタムのDKIM秘密鍵と公開鍵のペアが作成されます。

フィッシングやなりすまし攻撃から組織を守るには、DKIMと一緒にDMARCアナライザを設定する必要があることに注意してください。
DMARCは、メール認証プロトコルに対してドメインを調整し、メール受信者に悪質なメールの処理方法を指示するのに役立ちます!
DMARCアナライザはこちらからトライアルをお試しいただけます。