要約

  • STARTTLS は既存の SMTP 接続の途中で TLS を始めるが、最初の平文会話の権威を引き継がない。握手後、双方はそれ以前に得た情報を破棄し、クライアントは EHLO を送り直す。
  • このリセットは改ざん可能な古い主張を保護区間から切り離す。ただし暗号化を必須にせず、メール経路全体も認証しない。DANE と MTA-STS が後に、平文への後退を拒む外部方針を加えた。

一本の接続に二つの開始

SMTP サーバーは 220 で接続を迎え、クライアントは EHLO で名乗り、サーバーは利用可能な拡張を列挙する。1999 年の STARTTLS は、この既存文法に引数のない一語を加えた。クライアントが STARTTLS を送り、サーバーが 220 を返すと、次のバイトから TLS の握手が始まる。

既存のポートと MX を維持できるため、古いクライアントは従来どおり動き、新しいクライアントだけが同じ接続上で暗号化を発見できた。移行のためにメール網を二分する必要はなかった。

しかし発見は保護より先である。経路上の攻撃者は最初の EHLO 名を変え、機能を削り、STARTTLS 行そのものを消せる。初期会話は暗号境界へ到達する手段であって、境界の内側で使う証拠ではない。

暗号化には忘却が必要だった

TLS が成功すると、SMTP は最初の状態へ戻る。サーバーは最初の EHLO で得た情報を捨て、クライアントは最初の拡張一覧を捨てる。そのうえで EHLO をもう一度送る。

二度目の挨拶は儀礼ではない。別の証拠環境に属する。サーバーは適切なクライアント証明書を受け取った後だけ認証方式を開示できる。クライアントはサーバーの身元を方針に照らして検証し、保護後の機能だけを採用できる。TLS は平文時代の主張を遡って保証しない。

これはバイト列の境界でもある。220 の後、クライアントは別の SMTP 命令を送らず TLS を開始しなければならない。PIPELINING の一群では STARTTLS が最後に来る。平文命令を握手データと誤認したり、旧状態の判断を新状態へ持ち込んだりしないためである。

保護されたチャネルにも判定が要る

TLS は機密性、完全性、相手認証を提供し得るが、握手が完了しただけで十分とは限らない。証明書に期待する名前、信頼する認証局、許容するアルゴリズム、クライアント証明の要否はローカル方針で決まる。結果が不足なら、どちらも接続を閉じられる。

この区別は暗号化の意味を限定する。盗聴を防いでも、意図した MX を認証したとは限らない。中継サーバーを認証しても、人間の送信者は認証されない。一つの SMTP ホップを守っても、その前後のホップまでは証明できない。

454 応答は選択を可視化する。TLS が一時的に使えないとき、送信側は平文で続けるか、再試行のため保留するか、失敗を返す。STARTTLS は機構を与えるが、漏えいの許可までは与えない。

相互運用性が最初の強制を狭めた

公開 MX は未対応の送信者からも受信する必要があった。RFC 3207 は、公開参照される 25 番ポートの SMTP サーバーがローカル配送一般に STARTTLS を必須とすることを禁じた。非公開サーバーや中継方針は、TLS 認証を条件にもっと厳しくできる。

この妥協は段階導入を可能にした一方、STARTTLS 広告を永続的な約束にはしなかった。攻撃者が広告を消すと、機会的なクライアントは「非対応サーバー」と判断して平文配送を続け得る。

壊れたのは TLS ではない。TLS を必須とする方針が、攻撃者の編集できる平文会話の中でしか伝わらなかったのである。

方針は会話の外へ移った

SMTP DANE は DNSSEC で検証した TLSA レコードに、TLS の必須性と認証材料を結びつける。安全で適用可能な TLSA があれば、STARTTLS 行の消失は平文配送の許可にならない。必要なチャネルを確立できなければメールを遅延させる。

MTA-STS は別の信頼経路を選んだ。受信ドメインが方針の存在を示し、HTTPS で本文を配布する。送信側は許容 MX、PKIX 検証、期限をキャッシュする。強制期間中は STARTTLS の欠落や証明書不一致を配送延期として扱う。初回発見には DNSSEC 型とは異なる弱点が残るが、キャッシュはその後の後退機会を狭める。

どちらも SMTP 内の移行命令を置き換えない。外へ移したのは、移行が見えないときに平文を許す権限である。

長く残った発明は二度目の挨拶

STARTTLS を「平文が暗号文に変わる瞬間」だけで捉えると、本質を逃す。旧状態には明確な有効期限が置かれた。保護前の主張は保護後に昇格せず、機能は再発見され、身元は明示方針で評価され、後退は通常障害と区別される。

既存プロトコルに安全層を足すとき、同じ問題が現れる。新しい暗号は、攻撃者が触れた入力で既に下した判断を洗い流せない。何を境界越しに残し、何を消し、誰が弱い運用を許可できるかを決めなければならない。

情報源と限界

初期設計と広告削除の警告は RFC 2487、改訂規則、状態リセット、相互運用境界は RFC 3207 にある。RFC 7672 は SMTP DANE、RFC 8461 は MTA-STS を定義する。現在の普及率や攻撃件数は示していない。