Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非エンジニアにも伝えるメールセキュリティ / Email security for non-e...

Y-KANOH
March 22, 2025

非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers

* 発表詳細:https://fortee.jp/phperkaigi-2025/proposal/dcdeaadb-5731-49c9-b9f0-a2bd7fc96cf9
* この時間帯のツイート

PHPerKaigi 2025
2025/03/22 17:10〜
Track C
レギュラートーク(20分)

登壇者
加納悠史(@YKanoh65

#phperkaigi
---------------------------

DKIM、DMARC、SPF
これらを説明できるでしょうか?

これらの技術はメール認証技術であり、フィッシングやスパムから守るために重要な役割を果たします。
2024年4月から本格的に始まったGmailのガイドラインに基づくメールの受信拒否設定によって、メールセキュリティの考慮は他人事ではなくなりました。
これは、非エンジニアにとっても同じです。
場合によっては、サービスの利用者にGmailガイドラインに対応するよう依頼する必要があるからです。

しかしながら、これらの知識はどうしても専門的な技術知識なしでは説明しづらく、非エンジニアにとってはなおさら理解しづらい分野です。
難しい専門用語を使わないよう注意しながら、非エンジニアの方に理解してもらおうと頑張って資料を用意して説明した方も多いのではと思います。

この発表では、非エンジニアの人にも伝わるよう、今押さえておくべきメールセキュリティについて解説します。

Y-KANOH

March 22, 2025
Tweet

More Decks by Y-KANOH

Other Decks in Technology

Transcript

  1. 加納 悠史 PHPでの開発 / 設計 / その他色々 @YKanoh65 BABY JOB株式会社

    所 属 お仕事 その他   Twitter PHPer ダイビング 観葉植物 カノウユウジ
  2. それ れの関係性 18 SPF DKIM DMARC SPFとDKIMをベースにした 送信元検証 と 結果の報告を

    行うしくみ なりすましを防ぐしくみ メール内容の改ざんを防ぐしくみ
  3. それ れの関係性 19 SPF DKIM DMARC SPF と DKIM は

    単体でも利用できる なりすましを防ぐしくみ メール内容の改ざんを防ぐしくみ
  4. それ れの関係性 21 SPF DKIM DMARC 両方の弱点を 補う技術がDMARC それぞれの"拡張"みたいなこともやっている なりすましを防ぐしくみ

    メール内容の改ざんを防ぐしくみ 弱点あり 弱点あり SPFとDKIMをベースにした 送信元検証 と 結果の報告を 行うしくみ 死角なし 諸説あり
  5. SPF Sender Policy Framework できること • エンベロープFrom のなりすまし防止 弱 点

    • ヘッダFrom のなりすましには無力 • 必須ではない 23
  6. SPF Sender Policy Framework できること • エンベロープFrom のなりすまし防止 弱 点

    • ヘッダFrom のなりすましには無力 • 必須ではない 24 ちょっと 待て!!
  7. SPF Sender Policy Framework できること • エンベロープFrom のなりすまし防止 弱 点

    • ヘッダFrom のなりすましには無力 • 必須ではない 25 なんやこれ?
  8. SPF Sender Policy Framework できること • エンベロープFrom のなりすまし防止 弱 点

    • ヘッダFrom のなりすましには無力 • 必須ではない 27 急にカタカナ 使われても 困る
  9. SPF Sender Policy Framework できること • エンベロープFrom のなりすまし防止 弱 点

    • ヘッダFrom のなりすましには無力 • 必須ではない 35
  10. SPF Sender Policy Framework できること • 封筒From のなりすまし防止 弱 点

    • 本文From のなりすましには無力 • 必須ではない 36
  11. SPF Sender Policy Framework できること • 封筒From のなりすまし防止 弱 点

    • 本文From のなりすましには無力 • 必須ではない 37
  12. この時点でわかる 送信サーバからの情報 • サーバのIPアドレス ◦ 偽装はできない ▪ HELOなどのコマンド送信時に確認される 45 •

    封筒From ◦ 偽装可能 ドーモ、 サーバ aa.aa.aa.aa です 封筒From:  user@example.com 検証に使う
  13. SPFとは 封筒From の 台帳管理サーバ に メールを送ったサーバのIP が登録されているかを確認する 54 example.com の

    台帳管理サーバ DNSサーバ 封筒From:  user@example.com IP aa.aa.aa.aa って 信用できるサーバですか?
  14. 55 💀なりすましの場合 メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド

    悪意ある人サイド evil-man.test メール送信サーバ IP:xx.xx.xx.xx そんなIP知らない! 台帳に載ってない! ニセモノだ!! 🤝サーバ xx.xx.xx.xx です。 メールをお届けします! 偽装封筒From:  user@example.com xx.xx.xx.xx サーバは、 お宅が承認した サーバですか?? 1 2 3
  15. SPF Sender Policy Framework できること • 封筒From のなりすまし防止 弱 点

    • 本文From のなりすましには無力 • 必須ではない 56
  16. 57 ❌本文Fromの偽装 メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド

    悪意ある人サイド evil-man.test メール送信サーバ IP:xx.xx.xx.xx 🤝サーバ xx.xx.xx.xx です。 メールをお届けします! 封筒From:  user@evil-man.test 偽装本文From:  user@example.com 台帳管理サーバ DNSサーバ
  17. 58 ❌本文Fromの偽装 メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド

    悪意ある人サイド evil-man.test メール送信サーバ IP:xx.xx.xx.xx 封筒From:  user@evil-man.test 偽装本文From:  user@example.com 台帳管理サーバ DNSサーバ xx.xx.xx.xx サーバは、 お宅が承認した サーバですか?? せやで!!
  18. 59 ❌本文Fromの偽装 メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド

    悪意ある人サイド evil-man.test メール送信サーバ IP:xx.xx.xx.xx 封筒From:  user@evil-man.test 偽装本文From:  user@example.com 台帳管理サーバ DNSサーバ なら信頼できるメールだな 本文Fromは偽装されたまま!
  19. 60 SPFは必須ではない メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド

    🤝サーバ aa.aa.aa.aa です。 メールをお届けします! 封筒From:  user@example.com xx.xx.xx.xx サーバは、 お宅が承認した サーバですか?? …。 (返事がない。) 返事がないなら 正しいメールとして 扱うか... 1 2 3 4
  20. 61 SPFを設定しないと... 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド xx.xx.xx.xx サーバは、

    お宅が承認した サーバですか?? …。 (返事がない。) 返事がないなら 正しいメールとして 扱うか... 2 3 4 悪意ある人サイド evil-man.test メール送信サーバ IP:xx.xx.xx.xx 🤝サーバ xx.xx.xx.xx です。 メールをお届けします! 1 偽装封筒From:  user@example.com アウト
  21. SPF Sender Policy Framework できること • 封筒From のなりすまし防止 弱 点

    • 本文From のなりすましには無力 • 必須ではない 62 DMARCで対応
  22. DKIM DomainKeys Identified Mail できること • 内容の改ざん防止 弱 点 •

    本文From のなりすましには無力 • 封筒From のなりすましにも無力 • 必須ではない 64
  23. DKIM DomainKeys Identified Mail できること • 内容の改ざん防止 弱 点 •

    本文From のなりすましには無力 • 封筒From のなりすましにも無力 • 必須ではない 65
  24. DKIMメールの事前準備 • 公開鍵 と 秘密鍵 を用意 • 公開鍵 を 台帳管理サーバ

    に配置 • 秘密鍵 は メール配信サーバ に配置 67 D N S サ ー バ ※公開鍵/秘密鍵 ってなに? 暗号化とその解読を行える鍵のペアのこと。 秘密鍵で暗号化したデータは、対応する公開鍵でしか解読できなくなる。 わかりにくければ、 「施錠専用の鍵(暗号化専用の鍵)」と「開錠専用の鍵(解読専用の鍵)」と考えてください。 秘 公 公開鍵 持っといてー メール配信サーバ DNSサーバ ちょっと 待て!!
  25. DKIMメールの作り方 1. 秘密鍵 で暗号化したメール内容を用意 2. 公開鍵を持つ台帳管理サーバ名を用意 3. 暗号化データ と 台帳管理サーバ名を

    メールに載せる 69 メール配信サーバでの処理 メール内容 hogeさんへ 件名:title 本文: 力こそパワー 暗号済データ krMpuE0t4vNMH Bp29nLzcbPe/W 2xr1YrXxXkrMpu E0t4vNMHBp29 暗号化 台帳管理サーバ名 example.com 秘 DKIMデータ ※1 より正確には、「メール内容をハッシュ化した文字列」を秘密鍵で暗号化している。 ※2 メール自体を暗号化して読めなくしているわけではない。あくまで、暗号化したデータもメールに追加しているだけ。 ※1 ※2
  26. 71 本文の偽装防止方法 メール送信サーバ 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com 受信者サイド DKIM付きか

    どれどれ... DKIM情報 • 暗号データ MYPteMoXWABcBur6owAc1vKXV… • 暗号解読の”鍵”を持ったサーバ example.com メール内容 hogeさんへ 件名:title 本文: 力こそパワー
  27. DKIMでの改 ん確認方法 1. 公開鍵で暗号データを解読 2. 解読データとメール内容を比較 → 同一であれば改ざんなし!! 76 メール受信サーバでの処理

    メール内容 hogeさんへ 件名:title 本文: 力こそパワー 暗号データ krMpuE0t4vNMH Bp29nLzcbPe/W 2xr1YrXxXkrMpu E0t4vNMHBp29 公 解読データ hogeさんへ 件名:title 本文: 力こそパワー 公開鍵で 解読 ※ 比較 ※より正確には、「解読データ」と「メール内容のハッシュ値」を比較している。  暗号データを解読して取得できるデータは、メール内容をハッシュ化したものである。
  28. メール配信経路で 改 んされていた場合 1. 公開鍵で暗号データを解読 2. 解読データとメール内容を比較 → 同一でない!  

    改ざんされていると判断!! 77 メール受信サーバでの処理 メール内容 hogeさんへ 件名:title 本文: フォースこそ力 暗号データ krMpuE0t4vNMH Bp29nLzcbPe/W 2xr1YrXxXkrMpu E0t4vNMHBp29 公 解読データ hogeさんへ 件名:title 本文: 力こそパワー 公開鍵で 解読 ※より正確には、「解読データ」と「メール内容のハッシュ値」を比較している。  暗号データを解読して取得できるデータは、メール内容をハッシュ化したものである。 ※ 比較 差がある!!
  29. DKIM DomainKeys Identified Mail できること • 内容の改ざん防止 弱 点 •

    本文From のなりすましには無力 • 封筒From のなりすましにも無力 • 必須ではない 78 DMARCで対応
  30. SPF と DKIM を 組み合わせて使う できること • 封筒Fromのなりすまし防止 弱 点

    • 本文Fromなりすましに無力 • 必須ではない できること • 内容の改ざんの防止 弱 点 • 本文Fromのなりすましに無力 • 封筒Fromのなりすましに無力 • 必須ではない 80 SPF DKIM SPFで 担保可能
  31. SPF と DKIM できること • 封筒Fromのなりすまし防止 弱 点 • 本文Fromなりすましに無力

    • 必須ではない できること • 内容の改ざんの防止 弱 点 • 本文Fromのなりすましに無力 • 封筒Fromのなりすましに無力 • 必須ではない 83 SPF DKIM これらの対策
  32. SPF/DKIM の拡張 84 本文Fromの検証 を追加 • SPFの場合 → 封筒Fromと同じドメインか確認 •

    DKIMの場合 → 公開鍵を持つサーバと同じドメインか確認
  33. SPF/DKIM の拡張 85 本文Fromの検証 を追加 • SPFの場合 → 封筒Fromと同じドメインか確認 •

    DKIMの場合 → 公開鍵を持つサーバと同じドメインか確認 「アライメント」と 呼ばれます
  34. SPF/DKIM の拡張 86 本文Fromの検証 を追加 • SPFの場合 → 封筒Fromと同じドメインか確認 •

    DKIMの場合 → 暗号解読キーを持つサーバと同じドメインか確認
  35. 87 おさらい SPFとは 封筒From の検証技術 メール送信サーバ IP:aa.aa.aa.aa 台帳管理サーバ DNSサーバ メール受信サーバ

    送信者サイド example.com 受信者サイド 封筒From:  user@example.com 🤝サーバ aa.aa.aa.aa です。 メールをお届けします! 封筒From:  user@example.com aa.aa.aa.aa サーバは、 お宅が承認した サーバですか?? せやで! 1 2 3
  36. SPF/DKIM の拡張 91 本文Fromの検証 を追加 • SPFの場合 → 封筒Fromと同じドメインか確認 •

    DKIMの場合 → 暗号解読キーを持つサーバと同じドメインか確認
  37. 92 おさらい DKIMでの改 ん防止方法 メール送信サーバ 台帳管理サーバ DNSサーバ メール受信サーバ 送信者サイド example.com

    受信者サイド この鍵で 暗号解読しな!! 暗号解読の 鍵ください! もらった鍵で解読できた! ということは、 改ざんされていないな! 2 3 4 1 DKIM情報 • 暗号データ • 暗号解読”鍵”を持ったサーバ example.com
  38. 93 DKIMのアライメント メール受信サーバ 受信者サイド 本文From:  user@example.com DKIM情報 • 暗号データ •

    暗号解読の”鍵”を持ったサーバ名 ◦ example.com DKIMで使えた! =信頼できるドメイン
  39. 94 DKIMのアライメント メール受信サーバ 受信者サイド 本文From:  user@example.com DKIM情報 • 暗号データ •

    暗号解読の”鍵”を持ったサーバ名 ◦ example.com DKIMで使えた! =信頼できるドメイン 検証に使う
  40. 95 DKIMのアライメント メール受信サーバ 受信者サイド 本文From:  user@example.com DKIM情報 • 暗号データ •

    暗号解読の”鍵”を持ったサーバ名 ◦ example.com 同じならOK! 「DKIMアライメントが取れている」と呼ぶ
  41. DMARCで設定できる リシー 101 none 何もしないで! quarantine 隔離しといて! (迷惑メールフォルダに入れるなど) reject 削除しといて!

    「信用できないメールは削除」としておけば、 なりすましメールを送られても受信サーバで削除してもらえる!
  42. まとめ SPF ▰ メール送信サーバのIPアドレスを利用 ▰ 封筒Fromのなりすまし防止する ▰ 本文Fromのなりすましには無力 DKIM ▰

    公開鍵暗号を利用 ▰ メール内容の改ざんを防止する ▰ 本文Fromのなりすましには無力 DMARC ▰ SPFとDKIMを拡張 ▰ 本文Fromのなりすましも防止 ▰ なりすましメールの処遇を指定可能 ▰ なりすましメールを報告できる 114