StartTLSとは何ですか?
公開: 2020-03-21あるサーバーから別のサーバーに電子メールがどのように安全に送信されるのか疑問に思ったことはありませんか? Simple Mail Transfer Protocol(SMTP)を使用してメールを送信する場合、StartTLSとトランスポート層セキュリティ(TLS)またはSecure Sockets Layer(SSL)の組み合わせを利用してメールを暗号化し、受信トレイに安全に送信できるようにします。
しかし、StartTLSとは何ですか?
StartTLSは、電子メールクライアントがTLSまたはSSLを使用して安全でない接続から安全な接続にアップグレードすることを電子メールサーバーに通知するために使用されるプロトコルコマンドです。 StartTLSはSMTPおよびIMAPで使用されますが、POP3は暗号化にわずかに異なるコマンドSTLSを使用します。
TLSとSSLの違い、StartTLSプロセス、およびプログラムのStartTLSをテストする方法について詳しく説明します。
StartTLSはどのように機能しますか?
TLSとSSL
「TLS」という名前が付いていますが、StartTLSはTLSとSSLの両方の暗号化プロトコルで動作します。
StartTLSは両方のプロトコルで機能しますが、TLSoverSSLを使用することをお勧めします。 SSLは古いプロトコルであり、後継のTLSほど安全ではありません。 SSLv2とSSLv3はどちらも非推奨になりました。
参考までに、SSLおよびTLSプロトコルの古いものから新しいものへのリストを次に示します。
SSLv2、SSLv3、TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3
電子メールクライアントと電子メールサーバーの両方が、使用する接続について合意する必要があります。 電子メールクライアントはTLSv1.3をサポートできますが、電子メールサーバーはTLSv1.2までしかサポートできません。 これは、暗号化を続行するには、両方の当事者がTLSv1.2を使用する必要があることを意味します。
TLSとSSLの詳細については、ドキュメントページをご覧ください。
StartTLSプロセス
SMTPは常に暗号化されずに起動します。 StartTLSコマンドは、サーバーとクライアント間のネゴシエーションを開始します。 メールクライアントとメールサーバー間で行われる通信の概要は次のとおりです。
- このプロセスは、電子メールクライアントとサーバーの両方がお互いを識別できるようにするための伝送制御プロトコル(TCP)ハンドシェイクから始まります。
- サーバーは、電子メールクライアントが通信を続行できることを220Readyで識別します。
- クライアントはサーバー「EHLO」を送信して、クライアントが拡張SMTP(画像、添付ファイルなどを含めることができるSMTPのより高度なバージョン)を使用することをサーバーに通知します。
- クライアントは「250-STARTTLS」をメールサーバーに送信して、StartTLSが受け入れられるかどうかを尋ねます。
- サーバーが「gohead」を送り返すと、StartTLS接続を作成できます。
- クライアントは接続を再開し、電子メールメッセージは暗号化されています。
これがStartTLSプロセスの視覚的表現です。
どのポートを使用する必要がありますか?
StartTLSを最も頻繁に使用するポートはポート587です。多くの場合、電子メールクライアントはStartTLSを使用してメールを送信する必要があります。 暗号化されたメールの送信に使用される他のポートは25、465、および2525です。ポート25は送信ではなくメール転送用に設計されているため、ISPはこのポートを介して送信される電子メールをブロックする場合があります。 ポート465は、StartTLSで2番目に一般的に使用されるポートです。
機会主義的TLSと強制TLS
OpportunisticTLSまたはEnforcedTLSのいずれかを使用して電子メール暗号化プログラムを設定するには、いくつかの異なる方法があります。
Opportunistic TLS (またはExplicit TLS)を使用すると、電子メールクライアントは受信者サーバーが受け入れる最高の暗号化レベルで配信できます。 受信者のサーバーがTLSを受け入れない場合、電子メールクライアントはサーバーとネゴシエートし、暗号化されていない接続にダウングレードすることに同意します。 その後、メッセージは暗号化されていないプレーンテキスト形式で送信されます。 この方法は、暗号化されたメールとプレーンテキストのメールの両方に同じポートを使用できるため便利です。
強制TLS (または暗黙的TLS)では、メールを安全な接続で送信する必要があります。 接続が暗号化されていない場合、メールの送信はブロックされます。 この方法は便宜的なTLSよりもはるかに安全ですが、より多くのメールがドロップされることになります。
どちらのアプローチも電子メールの世界で広く使用されているため、プログラムにとって何が最も理にかなっているのかを検討してください。 機密性の高い個人情報を含む電子メールを送信する場合は、強制TLSを使用するのが最適な場合があります。 一方、マーケティングやプロモーションなどの機密性の低い資料を送信する場合は、便宜的なTLSを使用する傾向があります。
その他のTLSのユースケース
TLSは、電子メール以外のさまざまな通信方法を暗号化するために頻繁に使用されます。 TLSは比較的単純なマルチステッププロトコルであるため、さまざまな通信タイプに合わせて簡単に調整できます。 これには、Webブラウザー、SMS、およびVoiceoverIPが含まれます。 実際、多くの企業はTLSを使用して、通信の大部分が機密情報でなくても、Webサーバーとブラウザー間のすべての通信を暗号化しています。
TwilioがTLSを使用する方法の詳細については、 Twilioのセキュリティページをご覧ください。
StartTLSが重要なのはなぜですか?
SMTPはデフォルトでは保護されていません。つまり、StartTLSを使用せずにSMTP経由で電子メールを送信すると、電子メールが傍受されて簡単に解釈される可能性があります。 これは、ユーザー名、パスワード、銀行情報などの機密性の高い個人情報を送信する場合に特に気になります。
StartTLSがないと、個人情報が盗まれる危険性があります。
電子メールクライアントがStartTLSを使用する場合、コンテンツを暗号化する必要があることをサーバーに通知します。 このように、メールが傍受された場合、コンテンツはスクランブルされており、解読するのは非常に困難です。 メッセージをデコードするためのキーを保持しているのは、電子メールサーバーと電子メールクライアントだけです。
欠点
StartTLSの使用にはいくつかの欠点があります。 電子メールクライアントとサーバー間の最初の接続では、IPアドレスが暗号化されていないため、電子メールクライアントは中間者攻撃の影響を受けやすくなっています。
StartTLSを使用すると、SMTP接続に遅延が追加される可能性もあります。 これは、暗号化されていない電子メールを送信する必要があるようにするのに十分な遅延ではありませんが、覚えておくのは良いことです。
StartTLSをテストするにはどうすればよいですか?
サーバーがStartTLSを処理できることを確認するために、事前にテストすることが重要です。 StartTLSを処理できない場合、暗号化されていないため、攻撃ベクトルの影響を受けやすい大量の電子メールを誤って送信する可能性があります。
これは、SendGridのSMTPサーバーからStartTLSをテストする方法の例です。
Twilio SendGridはStartTLSをどのように使用しますか?
Twilio SendGridは、TLSv1.1以降をサポートしています。 暗号化されていないTLS接続は、ポート25、587、および2525で受け入れられます。または、ポート465でSSLを介して接続できます。
Opportunistic TLSに従い、受信者サーバーが受け入れる最高の暗号化レベルで送信します。 強制TLSも提供しています。 暗号化された接続を介して電子メールを送信する必要があるかどうかは、あなたの選択です。 受信者サーバーが暗号化されたメッセージを受け入れない場合、メッセージはドロップされ、ブロックイベントが送信されます。
Twilio SendGridへのSMTP要求を開始するときに、主にStartTLSと対話して、メールの送信を要求します。 それ以外の場合、Twilio SendGridは、TLS証明書の照合、残りの暗号化プロセス、および途中で発生する可能性のある問題を処理します。
Twilio SendGridとSMTPの詳細については、ドキュメントの記事「SMTP電子メールを送信する方法」を参照してください。