重要なお知らせ:GoogleとYahooは2024年4月よりDMARCを義務付けます。
PowerDMARC

DKIMシグネチャ。その内容、必要性、機能についての入門書

DKIM署名

DKIM署名

読書時間 6

ドメインキー識別メール (DKIM)は、送信されたメッセージに対して組織が責任を持つことを可能にする電子メール認証方法です。公開鍵暗号方式を使用して電子メールにデジタルで「署名」し、受信者にメッセージがドメイン所有者によって送信されたことを証明します。受信者は、署名とドメインの公開鍵を照合して、署名を確認することができます。

この記事では、DKIMについて詳しく調べ、この電子メール認証方法がどのように機能するのか、その概要を説明します。

DKIMシグネチャとは何ですか?

DKIMとは、DomainKeys Identified Mailの略です。暗号署名を用いて、完全性と否認防止を提供する電子メール認証システムです。DMARCとともに DMARCと共に、お客様の電子メールに強固ななりすまし防止基盤を構築するのに役立ちます。

DKIMプロトコルは、受信者に送信される各メッセージに暗号署名を作成し、メッセージヘッダーに追加されるドメイン署名と同様に、受信者に送信されます。

この署名は、受信者が、メッセージが他の誰かではなく、ドメインの所有者によって実際に送信されたことを確認するために使用されます。また、メッセージが送信者から受信者に至る過程で改ざんされていないことも確認できます。

一致しない場合は、どちらか。

  1. 送信中にメッセージが変更された場合、または
  2. 送信サーバーの秘密鍵にアクセスできる誰かの代理でメッセージを送信していること

このような署名の不一致の場合、DKIMはそのメールがあなたのブランドからの正当なメッセージであることを確認できないため、意図した受信者に配信されないようにします。

DKIM署名はどのように機能するのですか?

DKIM署名は、電子メールのヘッダーにデジタル署名を挿入することで機能します。この署名は受信側のサーバーで検証され、電子メールが転送中に改ざんされたかどうかを判断するために使用されます。

DKIMは公開鍵暗号方式を使用しており、1つの秘密鍵と1つの公開鍵のペアに依存しています。公開鍵はそれを望むすべての人に配布され、一方秘密鍵は (通常所有者によって) 秘匿されます。

DKIMを使用して電子メールに署名する場合、あなたの秘密鍵を使用してメッセージの内容のハッシュを作成し、そのハッシュを受信者の公開鍵で暗号化します。この暗号化されたハッシュは、メッセージのヘッダーに挿入され、受信者が検証できるようになります。

DKIMシグネチャの鍵

DKIMの署名は、公開鍵と秘密鍵の2つの暗号鍵を用いて生成される。公開鍵はDNSで公開され、秘密鍵は秘匿される。

電子メールに署名する場合、秘密鍵はメッセージのハッシュを生成するために使用されます。このハッシュは公開鍵で暗号化され、メッセージ本体と一緒に送信されます。

受信者はこの情報を受け取ると、自分の秘密鍵を使ってハッシュを復号化し、それが元のメッセージの内容と一致するかどうかを検証する。

DKIMシグネチャの構成要素

DKIM署名は、ヘッダーとボディの2つの部分から構成されます。ヘッダーには、電子メールアドレスや公開鍵など、送信者の身元に関する情報が含まれています。ボディには、実際に送信されたメッセージが含まれます。

  1. DKIM署名を計算するには、まず、あなたのドメイン名(例えば、「example.com」)のMD5ハッシュを取り、これがあなたの公開鍵になります。
  2. そして、ドメイン名とSHA1ハッシュ(例えば「sha1(example.com)」)を連結して、送信した元のメッセージに付加する。
  3. そして、この結合された文字列のMD5ハッシュ(例えば「md5(sha1(example.com)」)を取り、メッセージの先頭にヘッダーとして添付してから配信を行うのです。

DKIM署名の手順

DKIMをはじめよう。

  1. まず、メッセージに署名するために使用する秘密鍵を作成します。
  2. 第2段階は、署名の検証時に使用する公開鍵の作成である。
  3. 3つ目のステップは、2つのDNS TXTレコードを生成することです。1つは公開鍵用、もう1つはセレクタ名用です。
  4. 4番目のステップは、これらのレコードをDNSゾーンファイルに公開することです。

DKIM署名に関わる手順。

1.送信者は暗号ハッシュ関数(通常SHA-256)と呼ばれる一意の識別子を持つメッセージを生成します。この一意な識別子はDKIM-Signatureヘッダーフィールドと呼ばれ、誰がいつ署名したかという情報を含んでいます。

2.送信者は、メッセージに、以下の情報を含む追加のヘッダーフィールドを追加します。

3.最後に、これらの署名を検証したい受信者は、DNSレコードから送信者の公開鍵のコピーを使用するか、SenderIDやMailgunなどの中間サービスを使用し、DKIMヘッダーが添付されているメッセージを検証するためにそれを使用します。

DKIM署名に使用されるタグを理解する

これは、DKIM署名レコードの外観の一例です。

DKIM-Signature: v=1;

a=rsa-sha256です。

s=jun2005.eng;

c=relaxed/リラックスした状態。

d=example.com。

s=dkimです。

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= このタグは、DKIMのバージョンを教えてくれます。

a= 署名者がその公開鍵を生成するために使用するアルゴリズムを指定する。RSA1_5、RSA-SHA1、または RSASSA-PSS のいずれかである。このタグがない場合は、RSA-SHA1 とする。

c= [BCP14]で要求されているように、ヘッダーフィールドからハッシュを 生成するために使用される標準化アルゴリズムを指定する。このタグの後に、1つ以上の正規化アルゴリズムをカンマで区切ったリストが続く (たとえば "c=relaxed") 。このタグが省略された場合、緩和された正規化が仮定される。

d= このサーバー(または別の受信者)から発信されるメッセージの署名を生成する際に、どのドメイン名を使用するかを指定します。

s= "s "タグはセレクタ文字列であり、受信サーバーが署名の検証にどの公開鍵を使うべきかを決定するために使用される。

t= タイムスタンプタグは、署名がいつ作成されたかを記録するために用いられ、通常、Unixタイムスタンプ(1970年1月1日からの秒数)で表現される。

bh= このタグは本文のハッシュを表し、メッセージの内容(ヘッダーを含む)を暗号化したものです。これは、DKIMによって署名された後、意図した受信者に届く前に、メッセージが改ざんされるのを防ぐのに役立ちます。

h= ヘッダーのハッシュ値には、除外リストに含めることで明示的に除外されたものを除き、すべてのヘッダーがそのまま含まれます(Sender Policy FrameworkやDomainKeys Identified Mailで署名されたものを含む)。この値は、SHA-1またはMD5を使用して計算されなければなりません。

b= 「b」タグは、正規化されたメッセージ本体(つまり、MIMEエンコードを削除した後)の暗号ハッシュ関数をbase64エンコードした表現である。

DKIMシグネチャの生成

  1. 公開鍵と秘密鍵を生成する。
  2. DKIMヘッダーとフッターを生成する。
  3. 選択したアルゴリズム(例:RSA-SHA256またはRSA-SHA512)を使用して、秘密鍵で電子メールのコンテンツに署名します。
  4. 選択したアルゴリズム(例:deflateまたはnone)を使用してメッセージを圧縮します。
  5. DKIMヘッダは、MIMEヘッダよりも先にメッセージの先頭に挿入します。
  6. DKIMフッターをMIMEフッターの後に挿入する。

DKIMシグネチャの有効性の確保

DKIM署名が有効であることを確認するために、いくつかのステップを踏むことができます。

  1. 従来のDKIM署名アルゴリズムを使用するか、最適化されたものを使用するかを決定します。
  2. メッセージのヘッダーとボディのハッシュ値を計算する(通常、SHA-256になる)。
  3. 適切な署名アルゴリズム(RSAやECDSAなど)を選択する。
  4. 公開鍵が手順1で指定したセレクタと一致することを確認します(これはDNSを使用して行います)。
  5. 秘密鍵を使って署名し、Base64形式のASCII文字列としてメールメッセージのヘッダー内に保存します(DNSに配置するだけではありません)。

DKIM署名の検証

DKIM 署名の検証は複雑です。設定と維持に多くの専門知識が必要で、SPFのような他のシステムと組み合わせて使われることが多く、これもまた複雑です。

そのため、ほとんどのメールマーケティング担当者は、DKIM署名検証ツールである DKIMレコードチェッカーを使用してDKIM署名をチェックします。このツールは、メールに追加されたDKIMキーをチェックし、公開データベースと照合して検証します。キーが有効で信頼できるものであれば、その電子メールは正当なものとみなすことができます。

第一に、ISPやISPの顧客からスパムと判定されないようにすること、第二に、他のドメインからあなたのドメインがブラックリストに載らないようにすること(これをドメインポイズニングといいます)、最後に、あなたのメールがあらゆる種類の中間者攻撃に巻き込まれないようにすること、などが重要な理由です。

結論

DKIMは、組織が電子メール、特に外部の送信者からの電子メールの正当性を検証することを可能にする有望なソリューションです。メッセージング環境全体に一貫して適用されると、メールが送信者のドメインの正規の代表者によって送信されたという高度な信頼性を受信者に提供します。しかし、DKIMは検証メカニズムを提供する一方で、スプーフィングやフィッシングのような電子メール詐欺攻撃から保護するには十分ではないことに注意することが重要です。そのためには DMARCポリシーを拒否することが必須となります。

お困りですか?

メール認証は、あらゆるビジネスのデジタルマーケティング戦略において必要不可欠な要素です。毎日多くのメールが送受信される中、あなたのブランドがその渦中に紛れ込んでしまうことはよくあることです。しかし、PowerDMARCのメール認証サービスを利用すれば、あなたのメールが正しい人に見られるようにすることができます。 

当社のメール認証ソリューションがお役に立ちます。

モバイル版を終了する