STARTTLSはTLS / SSLより安全性が低いですか?


45

Thunderbird(および他の多くのクライアントでも同様)では、「SSL / TLS」と「STARTTLS」のどちらかを選択するオプションがあります。

私が理解している限り、「STARTTLS」は簡単な言葉で「両端がTLSをサポートしている場合は暗号化し、そうでなければ転送を暗号化しない」ことを意味します。「SSL / TLS」とは、簡単な言葉で「常に暗号化するか、まったく接続しない」ことを意味します。これは正しいです?

または言い換えれば:

STARTTLSは、私に通知せずにプレーンテキストにフォールバックできるため、SSL / TLSより安全ではありませんか?

回答:


46

SMTPのSTARTTLS RFC(RFC 3207)に基づく答えは次のとおりです。

STARTTLSはTLSより安全性が低くなります。

自分で話すのではなく、RFCが自分自身で話すことを許可し、関連する4つのビットを太字で強調表示します。

中間者攻撃は、サーバーから「250 STARTTLS」応答を削除することで開始できます。これにより、クライアントはTLSセッションを開始しようとしません。別の中間者攻撃は、サーバーがSTARTTLS機能をアナウンスできるようにすることですが、クライアントの要求を変更してTLSとサーバーの応答を開始することです。このような攻撃を防ぐために、メッセージを正常に転送する前に、選択したホストの適切な暗号スイートのTLSネゴシエーションの成功を要求するように、クライアントとサーバーの両方を構成できる必要があります。可能であればTLSを使用する追加オプションも提供する必要があります。実装MAY 特定のピアとの通信にTLSが使用されたことを記録し、後のセッションで使用されない場合は警告を生成する機能を提供します。

TLSネゴシエーションが失敗した場合、またはクライアントが454応答を受信した場合、クライアントは次に何をするかを決定する必要があります。 主に3つの選択肢があります。SMTPセッションの残りの部分を実行してください [...]

ご覧のように、RFC自体は、クライアントに安全な接続を確立し、安全な接続が失敗した場合にユーザーに通知することを要求するものは何もないと(非常に明確ではありませんが、十分に明確に)述べています。これは、明示的にクライアントに静かに確立するためのオプション提供しますプレーンテキスト接続を。


5
あなたのポイントは確かに有効ですが、SMTPSに関するRFCまたは公式仕様の欠如(すなわち、SSL / TLSが最初に確立されるSMTP + "暗黙的なSSL / TLS")により、SMTP / SMTPSクライアントはプレーン接続にフォールバックすることもできますポート465でSSL / TLS接続を開始することができない場合。それはまだ純粋に実装の選択です。
ブルーノ14

2
TLS接続を確立するためのRFCがたくさんあります。RFCに準拠するためのオプションとして「少なくともプレーンテキスト接続を許可」は存在しません(少なくとも多くの人にとってはニュースになります)。したがって、SMTPSは、STARTTLSよりも安全であるために別のRFCを必要としません。
グレッグ14

1
TLS(RFC 5246および前身)、PKI(RFC 5280)、名前検証(RFC 6125)についてのRFCがありますが、SMTPSのSMTPとSSL / TLSの相互作用を公式に知ることはできません。 HTTPSの仕様:RFC2818。「最初はSSL / TLS接続を確立するだけです」と言うこともできますが、それに関するすべてが明らかなわけではありません(特にID検証の側面は、RFC 6125でごく最近正式になりました)。
ブルーノ14

23

2つのオプションの間にセキュリティの違いはありません。

  • SSL / TLSは、最初にSSL / TLS接続を開き、次にSMTPトランザクションを開始します。これは、非SSL / TLS SMTPサーバーが既に実行されていないポートで発生する必要があります。プロトコルの性質上、プレーンテキストと暗号化された接続の両方を処理する単一のポートを構成することは不可能です。

  • STARTTLSはSMTPトランザクションを開始し、EHLOへの応答でTLSのサポートを相手側から探します。サポートされているコマンドリストにSTARTTLSが見つかった場合、クライアントはSTARTTLSを送信し、暗号化のネゴシエーションを開始します。これはすべて、後方互換性のために25の標準SMTPポートで発生する可能性があります(通常は発生します)

通常、SSL / TLSはエンドクライアントとサーバー間でのみ使用されます。STARTTLSは、サーバー間トランスポートを保護するためにMTA間でより一般的に使用されます。

これら2つの実装を考えると、ユーザーまたは管理者が接続が暗号化されていると想定しているが、暗号化を要求するように実際に構成していない場合、STARTTLSは安全でないと解釈できます。ただし、使用される暗号化はSSL / TLSとまったく同じであるため、このタイプの構成エラーを超えて中間者攻撃に対して多少なりとも脆弱ではありません。


2
接続が暗号化されている場合、SSL / TLSとSTARTTLSの両方は同じです、はい。しかし、それは私が尋ねたものではありません。つまり、STARTTLSを使用している場合、接続が本当にセキュリティで保護されているかどうかを(ユーザーとして)知るにはどうすればよいですか?SSL / TLSを使用しようとすると、サーバーがサポートしていない場合は接続できませんが、少なくとも何もプレーンテキストとして送信されません。しかし、STARTTLSがプレーンテキストにフォールバックすると、メールがプレーンテキストで送信されたことを知らずにメールがプレーンテキストで送信されます(実際にいないときは安全だと思うようになります)。
フーバー

6
この答えが正しいものとして選ばれた理由はわかりません。それは間違っています。Christopherが指摘するように、STARTTLSはクライアントに誤ったセキュリティの感覚を与えるため、TLSよりも安全性が低くなります。
グレッグ

4
@gregプロトコルに問題はありません。欠点は、rfcに従わず、接続が暗号化されていないときにユーザーに警告しないクライアントです。
ロングネック

1
@longneck so ...多分これはセマンティクスの問題かもしれませんが、クライアントはTLSプロトコルに「従わない」ことはできず、メールを定期的に通過させることはできません。それは意味のある違いです。
グレッグ14年

2
@Bruno「クライアントがひどく実装されていると、安全性が低下するだけです」<=あなたは私の主張を述べているだけです。正常に機能する接続を確立している間にクライアントが接続を安全でないものにすることができる場合、STARTTLSは明示的なTLSよりも安全性が低くなります(不可能な場合)。
グレッグ14年

8

特に電子メールに関しては、2018年1月にRFC 8314がリリースされました。これは、IMAP、POP3、およびSMTP 送信のSTARTTLSメカニズムよりも「暗黙的なTLS」を使用することを明示的に推奨しています。

簡単に言えば、このメモでは次のことを推奨しています。

  • TLSバージョン1.2以降は、MUAとメール送信サーバー間、およびMUAとメールアクセスサーバー間のすべてのトラフィックに使用されます。
  • MUAおよびメールサービスプロバイダー(MSP)は、(a)メールアクセスおよびメール送信のためのクリアテキストプロトコルの使用を推奨せず、(b)できるだけ早くこれらの目的のためにクリアテキストプロトコルの使用を非推奨にします。
  • メール送信サーバーおよびメールアクセスサーバーへの 接続は、「クリアテキスト」ポート接続し、STARTTLSコマンドまたは同様のコマンドを使用してTLSをネゴシエートするよりも、「暗黙のTLS」(以下で定義)を使用して行われます

(強調を追加)


4

答えは、「安全」という意味にある程度依存します。

まず、要約ではSSL / TLSとSTARTTLSの違いを完全に把握していません。

  • SSL / TLSを使用すると、クライアントは、使用するアプリケーションプロトコルに割り当てられた「SSLポート」へのTCP接続を開き、すぐにTLSの発話を開始します。
  • STARTTLSを使用すると、クライアントは、使用するアプリケーションプロトコルに関連付けられた「クリアテキストポート」へのTCP接続を開き、サーバーに「どのプロトコル拡張機能をサポートしますか?」と尋ねます。サーバーは、拡張機能のリストで応答します。これらの拡張機能の1つが「STARTTLS」である場合、クライアントは「OK、TLSを使用しましょう」と言うことができ、2人はTLSを話し始めます。

クライアントがTLSを要求するように構成されている場合、2つのアプローチはほぼ安全です。しかし、STARTTLSを使用して安全にする方法については微妙な点がいくつかあり、STARTTLSの実装ではこれらの詳細を正しく把握するのが少し難しくなります。

一方、TLSが使用可能な場合にのみTLSを使用し、TLSが使用できない場合にクリアテキストを使用するようにクライアントが構成されている場合、クライアントが最初に行うのは、プロトコルで使用されるSSLポートへの接続を試みることです。失敗した場合は、クリアテキストポートに接続してSTARTTLSを使用し、いずれの場合もTLSが利用できない場合は最終的にクリアテキストにフォールバックします。攻撃者がSSLポート接続を失敗させるのはかなり簡単です(必要なのは、適切なタイミングのTCP RSTパケットまたはSSLポートのブロックだけです)。攻撃者がSTARTTLSネゴシエーションを無効にし、トラフィックをクリアテキストのままにするのは少し難しいですが、少しだけです。そして、攻撃者はあなたのメールを読むだけでなく、将来の使用のためにユーザー名/パスワードを取得することもできます。

簡単な答えは、TLSをサポートしていることが既にわかっているサーバーに接続している場合(電子メールを送信または読み取る場合にそうであるように)、SSL / TLSを使用することです。接続が攻撃されている場合、接続の試行は失敗しますが、パスワードとメールは危険にさらされません。

一方、TLSをサポートしているかどうかわからないサービスに接続している場合、STARTTLSの方がわずかに優れている可能性があります。

STARTTLSが発明されたとき、「受動的な」リスニングのみの攻撃は非常に一般的でしたが、攻撃者がセキュリティを低下させるためにトラフィックを注入する「アクティブな」攻撃はあまり一般的ではありませんでした。それから20年ほどで、積極的な攻撃が実行可能になり、より一般的になりました。

たとえば、空港などの公共の場所でラップトップを使用して、そこに提供されているwifi経由でメールを読み込もうとすると、そのwifiネットワークがトラフィックで何をしているのかわかりません。WiFiネットワークでは、特定の種類のトラフィックを、クライアントアプリケーションと通信しようとしているサーバーとの間に介在する「プロキシ」にルーティングすることが非常に一般的です。クライアントをクリアテキストにフォールバックさせるために、これらのプロキシがSTARTTLSと「1つのポートを試行してから別のポートを試行する」の両方を無効にすることは簡単です。はい、これは起こります、そしてそれはあなたのトラフィックがネットワークによって見張られることができる方法のほんの一例です。そして、そのような攻撃は3文字の州支援機関に限定されず、


1

はい、あなたには基本的な権利があります。はい、STARTTLSは間違いなく安全性が低くなります。通知なしにプレーンテキストにフェールバックできるだけでなく、中間者攻撃の対象になるためです。接続は平文で開始されるため、MitMはSTARTTLSコマンドを削除して、暗号化が発生しないようにすることができます。ただし、メールサーバーは、暗号化されたトンネルがセットアップされた後にのみ転送が行われるように指定できると考えています。したがって、これを回避できます。

では、なぜそんなものが存在するのでしょうか?互換性の理由から。いずれかの側が暗号化をサポートしていない場合でも、接続を適切に完了させることができます。


したがって、STARTTLSが可能なサーバーは常にSSL / TLSも可能なのでしょうか?だから、最初にSSL / TLSを試して、それが機能するかどうかを確認するのが常に良いですか?
フーバー

2
@FooBarいいえ、一方が利用可能であることを意味しません。実際、完全に異なる認証ドメインで構成できます。
ロングネック

3
STARTTLSは、証明書を検証しないか、脆弱な証明書を使用しない限り、MitMに対して脆弱ではありません。証明書は常に同じように提示され、クライアントは続行する前にTLSのアップグレードが成功することを要求できます。これはSSL / TLSとまったく同じ状況であることに注意してください。
ファルコンモモット

1
人々がなぜあなたを支持していないのかわかりません。これは正解です。STARTTLSはTLSより安全性が低く、誤った安心感を与えます。ISPはちょうどそれをSTIPことができます。arstechnica.com/tech-policy/2014/11/...
グレッグ

1
プロトコル自体に関する限り、STARTTLSは、ユーザーに警告せずにプレーンテキスト通信を明示的に許可するため、TLSより安全性が低くなります
Greg

1

@Gregに同意します。これらの攻撃は可能です。ただし、MTAは(MTAに応じて)「日和見TLS」ではなく「必須TLS」を使用するように設定できます。これが意味することは、TLSおよびTLSのみが電子メールトランザクションに使用されることです(これにはSTARTTLSも含まれます)。リモートMTAがSTARTTLSをサポートしていない場合、電子メールは返送されます。


0

いいえ、アプリケーションが適切に処理する場合、安全性低下しません。

TLSを処理する方法は4つあり、多くのプログラムで選択できます。

  • TLSなし
  • 専用ポートでのTLS(TLSのみを試行)
  • 使用可能な場合はTLSを使用します(試行starttls、失敗すると暗号化されていない接続を使用します)
  • 常にTLSを使用します(starttls機能しない場合は使用して失敗します)

専用ポートでのTLSの利点は、未知のプログラムを使用した場合、または最初の起動ウィザードでエラー処理の詳細設定を公開しないプログラムを使用する場合にフォールバックがないことを確認できることです。

ただし、一般的にセキュリティはセキュリティエラーの処理に依存します。TLSポート上のTLSも失敗した場合、プログラムはプレーンテキストポートに切り替えることを決定できます。それが何をするのかを知り、安全な設定を選択する必要があります。また、プログラムは安全なデフォルトを使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.