一般社団法人 全国個人事業主支援協会

COLUMN コラム

DKIMの署名とは?

👉 メールに対して付ける電子署名(デジタル署名)

簡単に言うと:

「このメールは本当に example.com が送ったよ。改ざんもされてないよ」
と証明する仕組み。


📩 何に署名しているの?

DKIMは主に:

  • ヘッダ(From, To, Subject など)

  • 本文(Body)

をまとめてハッシュ化して署名する。


仕組み(ざっくり図)

送信側(SES)

① メールの一部をハッシュ化
② 秘密鍵で暗号化(=署名)
③ DKIM-Signatureヘッダに付与

受信側(Gmail)

④ DNSから公開鍵を取得
⑤ 署名を復号
⑥ 同じハッシュ値か確認

一致すれば:

✅ 改ざんされていない
✅ 正しいドメインが署名している


🔎 実際のヘッダ例

DKIM-Signature:
v=1;
a=rsa-sha256;
d=example.com;
s=selector1;
bh=Base64BodyHash;
b=Base64署名データ;

各項目の意味

項目 意味
v バージョン
a 署名アルゴリズム
d 署名ドメイン
s セレクタ
bh 本文のハッシュ
b 実際の署名

🔐 「秘密鍵」と「公開鍵」

送信側(SES)

  • 秘密鍵を持っている

  • それで署名する

受信側(Gmail)

  • DNSから公開鍵を取得

DNSにはこうある:

selector1._domainkey.example.com TXT “v=DKIM1; k=rsa; p=公開鍵”

なぜDNSに置く?

👉 受信側が自由に取得できるから

改ざんされていたらハッシュが変わる → 検証失敗。


💥 DKIMがPASSする条件

  1. 署名が正しい

  2. メール内容が改ざんされていない

  3. DNSの公開鍵が一致

  4. Header From と d= が整合(DMARC的に)


🧠 SPFとの違い

SPF DKIM
何を守る? 送信IP メール内容
改ざん検知
転送に弱い? 弱い 強い
署名使う?

🔥 SESの場合

SESは:

  • Easy DKIMを有効にすると

  • 自動で署名

  • CNAMEをDNSに設定するだけ

実質:

example.com ← DKIM署名

になる。


✨ 重要ポイント

DKIMは:

「誰が送ったか」より
「このドメインが責任を持って署名したか」を証明する

つまり:

  • From: は偽装できる

  • でも DKIM署名は偽装できない(秘密鍵がないと無理)

The following two tabs change content below.

小久保 暁人

最新記事 by 小久保 暁人 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア