【メールセキュリティの基礎②】暗号化しているのになぜ漏れるのか?メールを守る鍵とPGP・S/MIME・電子署名の仕組み

公開日 2026.11.02

解説動画の一覧に戻る

タイトル案:暗号化したメールから、なぜ本文が漏れる?|EFAIL・電子署名・ヘッダーインジェクション 暗号化されているのに、秘密の本文が外へ漏れる。攻撃者が暗号を解いたわけでも、秘密鍵を盗んだわけでもありません。 2018年に公表されたEFAILを入り口に、メールが「作られる・運ばれる・開かれる」までを、動物たちのアニメーションでたどります。TLS、PGP/S/MIME、電子署名、DKIMは、それぞれ何を守るのか。公開鍵の持ち主を確認する理由、外部画像の取得が通信になる仕組み、入力した文字がメールの構造に入り込む問題を解説します。 後半では、PythonとNodemailerのヘッダーインジェクションの事例、画面の宛先と実際の配送先の違い、署名付きメールでも外部画像は差し替わり得るという境界を扱います。鍵や署名の印だけで判断せず、その前後の処理にも目を向けるための解説です。 ※EFAILの説明は2018年当時の研究と成立条件を区別しています。すべての製品や設定で同じ問題が起こるという意味ではありません。見積書・問い合わせフォーム・振込先は架空の例です。台本の情報確認日:2026年10月31日。 国内の不正アクセス事例を、原因から調べるポータルサイト運営してます https://bankenjp.com/ チャプター 参考情報 確認日:2026年10月31日。EFAILは2018年当時の研究・影響と、その後の仕様・指針を区別して記述。見積書、問い合わせフォーム、画像内の振込先は、仕組みを説明するための架空の例。 1. EFAIL研究チーム:EFAIL公式サイト/USENIX Security 2018論文 Efail: Breaking S/MIME and OpenPGP Email Encryption using Exfiltration Channels https://efail.de/ https://www.usenix.org/conference/usenixsecurity18/presentation/poddebniak https://efail.de/efail-attack-paper.pdf 直接流出型と暗号文の改変を利用する攻撃の違い、成立条件、改変検出後も表示する問題を確認。 2. JPCERT/CC:メールクライアントにおけるOpenPGPおよびS/MIMEのメッセージの取り扱いに関する注意喚起(2018年5月15日) https://www.jpcert.or.jp/at/2018/at180023.html 公表時期と当時の対策情報を確認。掲載当時の製品状況を、現在の状況としては扱っていない。 3. CERT-EU:Security Advisory 2018-014 https://cert.europa.eu/publications/security-advisories/2018-014/ 暗号文の取得、復号、HTML表示、外部通信という攻撃の条件を照合。 4. CERT/CC・カーネギーメロン大学:Vulnerability Note VU#122919 https://www.kb.cert.org/vuls/id/122919 暗号鍵へのアクセスなしに本文を回収し得ること、MIME部品の分離不足を確認。 5. IETF:RFC 3207(SMTP over TLS) https://www.rfc-editor.org/rfc/rfc3207.html TLSで保護される接続と、メール全体のエンドツーエンド保護の違いを確認。 6. IETF:RFC 9580(OpenPGP、2024年7月) https://www.rfc-editor.org/rfc/rfc9580.html 2.1節の暗号化、2.2節の署名、メール用の鍵を公開鍵で保護する構成を確認。 7. IETF:RFC 8550/RFC 8551(S/MIME 4.0、2019年4月) https://www.rfc-editor.org/rfc/rfc8550.html https://www.rfc-editor.org/rfc/rfc8551.html 証明書の検証、アドレスとの対応、暗号化・署名の機能を確認。RFC 8551の6節で、EFAILに関連する改変検出とMIME部品の分離も確認。 8. Mozilla・Thunderbird:OpenPGP in Thunderbird — HOWTO and FAQ https://support.mozilla.org/en-US/kb/openpgp-thunderbird-howto-and-faq 公開鍵の本人確認と、暗号化だけでは送信者を認証できない点を確認。 9. IETF:RFC 6376(DKIM) https://www.rfc-editor.org/rfc/rfc6376.html Abstractおよび2.1節。署名ドメインと、メールの著者として表示される人の違いを確認。 10. IETF:RFC 9787(Guidance on End-to-End Email Security、2025年8月) https://www.rfc-editor.org/rfc/rfc9787.html メールの作成・解釈・表示に関する指針。9.9節の外部リソースの議論で、署名されたURLと外部画像そのものの保護を区別。 11. Python公式セキュリティ告知:CVE-2024-6923(2024年8月1日) https://mail.python.org/archives/list/security-announce@python.org/thread/QH3BUOE2DYQBWP7NAQ7UNHPPOELKISRW/ メールの文字列への変換時に、改行の不適切な扱いからヘッダーインジェクションが起き得ることを確認。 12. CPython公式Issue #121650 https://github.com/python/cpython/issues/121650 件名に含まれる符号化された改行が、ヘッダーの読み取り・再設定後、出力時に実際の改行へ変わる再現例を確認。 13. Nodemailer公式セキュリティ告知:GHSA-268h-hp4c-crq3 https://github.com/nodemailer/nodemailer/security/advisories/GHSA-268h-hp4c-crq3 List-*ヘッダーのコメント値におけるCR・LF処理の不備、当該問題の修正バージョン8.0.9を確認。公式告知は、実証範囲にSMTPコマンドの差し込みや配送先追加、コード実行を含めていない。 14. IETF:RFC 5321/RFC 5322 https://www.rfc-editor.org/rfc/rfc5321.html https://www.rfc-editor.org/rfc/rfc5322.html SMTPの配送先情報とメッセージ内のヘッダー、改行や正規の折り返しの規則を確認。 15. Django公式ドキュメント:Sending email — Preventing header injection https://docs.djangoproject.com/en/5.2/topics/email/ ヘッダーに使う外部入力を検証する対策と、メール用APIの利用を確認。 効果音:Kenney(CC0)およびWeb Audioによる合成音。BGMなし。

YouTubeで見る動画のページ · 別タブで開く

この動画に関係する事例