STARTTLSとは
STARTTLS(スタート・ティーエルエス)は、
平文で開始された
通信を、途中から
暗号化
通信であるTLS(
Transport Layer Security)に切り替えるための仕組みです。この技術は、特にメールの送受信プロトコル(SMTP、POP3、IMAP)で利用されます。
暗号化
通信を行うために専用のポートを設ける必要がなく、既存のポートを使いながらセキュリティを向上させることができます。
STARTTLSの特徴
- - 専用ポート不要: 通常のTLS接続では、暗号化通信のために専用のポート番号が使用されますが、STARTTLSは既存の平文通信用ポートをそのまま利用できます。これにより、ポート管理が簡略化され、既存のシステムへの導入が容易になります。
- - 柔軟な暗号化: 通信開始時には平文でやり取りを行い、必要に応じて暗号化に切り替えるため、通信の柔軟性が高まります。
- - アプリケーション中立性: TLS自体が特定のアプリケーションに依存しないため、様々なプロトコルで利用可能です。
STARTTLSの仕組み (SMTPの場合)
STARTTLSは、クライアント(C)とサーバー(S)の間で以下のような手順でTLS接続を確立します。
1.
平文接続: クライアントは、サーバーのポート25番(SMTPの場合)に接続します。
2.
サーバーの挨拶: サーバーは、接続を受け付けた旨をクライアントに伝えます。
3.
STARTTLSの提示: サーバーは、自身の機能としてSTARTTLSに対応していることをクライアントに伝えます。
4.
STARTTLSの開始: クライアントは、STARTTLSコマンドを送信し、
暗号化
通信への移行を要求します。
5.
TLSネゴシエーション: クライアントとサーバー間でTLSのネゴシエーションが行われ、
暗号化
通信が確立します。
6.
セキュアな通信: 以降の
通信は
暗号化されたチャネルを通じて行われます。
具体的には、以下のようなやり取りが行われます。
S:
C: <接続をオープンする>
S: 220 mail.example.org ESMTP service ready
C: EHLO client.example.org
S: 250-mail.example.org offers a warm hug of welcome
S: 250 STARTTLS
C: STARTTLS
S: 220 Go ahead
C:
C & S:
C & S: <ネゴシエーションの結果を確認>
C: EHLO client.example.org
...
この例では、`EHLO`コマンドはTLSによるセキュアなチャネルを通じて送信されます。
STARTTLSの課題と限界
STARTTLSは便利な技術ですが、いくつかの課題と限界があります。
- - 完全なセキュリティの保証は不可能: メール送信において、メール経路の全てでTLSが使用される保証はなく、中間者がSTARTTLS開始部分を改竄して通信全体を平文にすることが可能です。
- - メールの完全性や機密性の課題: TLSはホップ間のセキュリティを確保できますが、エンドツーエンドの保護は提供しません。このため、メールの内容や送信者の認証は、S/MIME|S_MIMEのような上位層の技術が必要となります。
- - 中間者攻撃のリスク: DNS偽装が行われた場合、すべてのホップでTLS接続が維持されていても、中間者攻撃が成立してしまう可能性があります。
利用上の注意点
- - メールの暗号化は必須ではない: メールサーバはSTARTTLSによる受信を強制できないため、セキュリティを重視する場合はS/MIME|S_MIMEなどのエンドツーエンドの暗号化技術を併用する必要があります。
- - プロバイダによる妨害: 過去には、インターネットサービスプロバイダがSTARTTLSを妨害していた事例も報告されています。
まとめ
STARTTLSは、平文通信を暗号化通信に移行する便利な技術ですが、過信は禁物です。メールセキュリティを確保するためには、STARTTLSだけでなく、S/MIME|S_MIMEのようなより高度な暗号化技術を検討する必要があります。また、常に最新のセキュリティ情報を把握し、適切な対策を講じることが重要です。
参考資料
Eric Rescorla、齋藤孝道、古森貞、鬼頭利之(訳)、2003、『マスタリングTCP/IP SSL/TLS編』、オーム社 ISBN 978-4274065422
関連項目
TCP/IP
Transport Layer Security (Secure Sockets Layer)
暗号
インターネット標準
外部リンク
SMTP TLS Tests and Tools: TLS接続が可能かテストできるウェブサイト。メールアドレスを入力すると、メールサーバでSTARTTLSコマンド発行の様子を確認できます。