web-dev-qa-db-ja.com

Java web-appからHTTPS接続で送信される電子メールは暗号化されていますか?

私はJava HTTPS接続で実行されるJavaアプリケーションに取り組んでいます。このアプリケーションはユーザーにメールを送信します。これらのメールを中間者攻撃から保護したいと思います。他の潜在的な脅威私の質問は:

  1. メールコンテンツを暗号化する必要がありますか?なぜ、どうやって?何故なの?
  2. HTTPSは自動的に送信されるデータを暗号化しませんか?
  3. 手動で暗号化する必要がある場合、受信者はどのように暗号化を解除しますか?
  4. どのようなソリューションを提案しても、潜在的な脅威の可能性と重大度は何ですか?
2
Gurkirat Singh

すべてが正しく行われていると仮定すると(everythingこれは、特に自分で行う場合は与えられていません)、HTTPSはメールをメールとして保護しません送信するためにそのプロトコルを使用していません。 「電子メールプロトコル」を使用して実際の電子メールを他のサーバーに実際に送信する必要があるためです:SMTP。しかし、それでも、これは悪い考えです。

たとえば、これらの「他のサーバー」は正確には何ですか?たとえば、受信者がGmailにいる場合、Gmailサーバーにメールを送信する必要がありますよね?ただし、これはSMTPの動作とは異なります。電子メールは、最終的な宛先に到達するまでメールサーバーからメールサーバーにホップします。この接続は直接的なものでもかまいませんが、実際にそうなるという保証はありません。この単純な事実により、SMTP内のエンドツーエンドの暗号化は設計上不可能になります:各領域/ MTAはMitMです!はい、SMTPを安全にしようとする試みがありましたが、デザインはまだセキュリティの観点からは悪いです。これを参照してください Wiki記事 たとえば、特に:

必須の証明書検証は、インターネットメール配信では実行できません。その結果、TLS経由で配信されるほとんどの電子メールは、便宜的な暗号化のみを使用します。

Opportunisticは、途中で何かが壊れている場合、何かが適切に構成されていない場合など、誰かが違法に読みたいときにデフォルトでテキストをクリアすることを意味します。そして最悪のことは、最初のリレー(別の回答ではMTAと呼ばれます)への接続が実際に安全である(構成での8時間の時間と徹底的なチェックで無駄な時間を費やしたため)ためではなく、最初のリレーと2番目のリレー間の接続が安全になります。あなたはそのことについて何の保証もありません(そして繰り返しになりますが、リレー自体は悪である可能性があります)。

ソリューション?

  • クリアテキストのメールを送信しないでください。機密性が必要な場合は、PGP/GPG、S/MIMEまたは同等のものを使用してメールを暗号化します。これらはエンドツーエンドの暗号化を提供しますが、ユーザー側とユーザー側からかなりの構成が必要です。適切に実行するには(実際にはプライバシーを提供するため)、各ユーザーを手動で認証する必要があります。これは不可能かもしれません。

  • 別の解決策は、エンドツーエンドの暗号化を提供する、既に安全であるように設計されたプロトコルを使用することです(一部のIMプロトコルは実際にはこれに非常に適しています)。

  • 他の回答で提案されているように、認証されたユーザーのみがアクセスできる保護されたHTTPSページへのリンクを電子メールで提供します(URLのトークンは使用できません)。

ただし、最低限のプライバシーの保証が必要な場合は、SMTP(TLS/StartTLSの有無にかかわらず)を使用しないでくださいSMTPは安全ではありません。

6
JPatta

少なくともダイレクトメールサーバー(Microsoft/Apple/Google)と通信しているユーザー(クライアント)の観点から、通信パスと構成を確認する1つの方法は、Wireshark(スニッフィングツールとパケットアナライザー)を実行してからメールを送信することです1つのアカウントを他のアカウントに。メールクライアントの設定方法に応じて、作成中の通信パスと、暗号化(少なくとも初期パスに対して)が暗号化されているかどうか、つまり、あるタイプのTLS/SSL暗号化パスを使用しているかどうかを確認できます。会社のメールサーバーに入ると、異なるDNSおよびメールサーバーのホップからホップへのパス全体が暗号化されているかどうかを評価することは非常に困難です。 SMTP、POP3 IMAP、MIMEはすべて、デフォルトでデータ暗号化またはヘッダー暗号化を使用しません。

3
Neutron_boy

WebアプリケーションがHTTPS接続のみを受け入れているというだけの理由で、Webアプリケーションが送信するすべての電子メールが暗号化されているわけではありません...これは、基になるSMTPサーバーの責任です。暗号化された電子メールのみを送信するようにSMTPサーバーを構成する必要があります。そう:

  • A1:はい、ただしアプリケーションレベルではありません。クライアントとサーバー間、およびMTA間通信でSSL/TLSを使用するようにSMTPサーバーを構成します。
  • A2:はい、あります。クライアント(エンドユーザーのブラウザー)とサーバー(Webアプリケーション)の間。サーバーとSMTPサーバーの間ではありません(これはhttpsを介して行われないため)。
  • A3:正確にはできません。これが、SSL/TLSの暗号化メカニズムに依存し、データをアプリケーションレベルで暗号化しないようにSMTPサーバーを構成する必要がある理由です。
  • A4:宛先のPOP/IMAPサーバーが適切に構成されていない場合、電子メールのプレーンテキストがダウンロードされる可能性があり、中間者の機会が明らかになります...

メールの内容が本当にそれほど機密である場合、私はそれがアプリケーションをまったく残さないことを選択します。ユーザーにメールを送信して、ポータルで新しいメッセージが利用可能であり、ログインするにはメッセージを表示する必要があることを通知することができます。もちろん、これは直接の電子メールよりもユーザーフレンドリーではありません...これは、データの機密性と使いやすさを比較検討して決定する必要がある部分です。

1
Stef Heylen