STARTTLSは、「スタート ティ エル エス」と読みます。
今回はメールを暗号化する「STARTTLS」について解説します。
通信は暗号化するのが当然
以前、メールの送受信は平文で送られるのが当然のような状況でした。
Webサイトも平文で通信される「HTTP」が主流でした。
(今は逆にHTTPSで暗号化することが主流となりつつあります)
しかし、
- セキュリティ事故(情報漏えい)の多発
- セキュリティ技術の向上
- セキュリティ意識の高まり
の結果、通信は暗号化するのがデファクトスタンダードになってきています。
ただし HTTP と異なり、SMTP はなかなかセキュリティに関する解決策が見つからない状況です。
HTTP → SSL証明書を利用して「SSL/TLS」による暗号化通信
SMTP → これと言った解決策(決めて)が見つからない
電子メールを暗号化する方法
- S/MIME(Secure Multipurpose Internet Mail Extensions)
- SMTP over SSL
- STARTTLS
STARTTLSは、SSL/TLSによる暗号化通信
STARTTLSは、TSL(Transport Layer Security→TSLだけだと一般的ではないので SSL/TLS とまとめて呼びます)を使用して、2台のサーバー間のSMTP通信を暗号化するために使用される方法です。
STARTTLSは、プロトコルではありませんが「プロトコル拡張」ということもできます。
また、ESMTP と表現するサイトもあります。
※ESMTPとは「Extended SMTP」の略です。オリジナルのSMTPを拡張してメールサーバー間通信を改善しようとするプロトコル群を表します。
STARTTLS は、文字通り “Start TLS” を意味しており、メーラー(OutlookやThunderbirdなどのメーラー)とSMTPサーバーが暗号化されていない接続を、SSL/TLSで保護され暗号化された接続に変換します。
ちなみに「POP」や「IMAP」でも STARTTLS は利用可能です。
しかし主要なメーラーで利用できないので、あまり利用されていません。
STARTTLSの通信方法・通信手順
STARTTLSの通信方法・通信手順を簡単に言うと、最初にネゴシエーとして送信側・受信側の双方が STARTTLS に対応している場合は、途中から STARTTLS で通信を暗号化する手順です。
SMTP接続が正常に確立された後で、2つのサーバー間のすべての通信が暗号化されます。
つまり、接続される前は平文で通信をしています。
1.送信元サーバーは、まず初めにSMTPトランザクションを開始します。
2.EHLOへの応答で、通信相手サーバー(受信側サーバー)が TLS/SSLに対応しているか判定します。
3.通信相手サーバーがSTARTTLSに対応していることを確認する(送信側・受信側双方のサーバーがSTARTTLSに対応していることを確認する)と、STARTTLSが送信され、暗号化のネゴシエーションが開始されます。
4.その後、全データの暗号化通信が行われます。
5.送信元と送信先のメールアドレスとメッセージの内容すべての通信が暗号化されます。
6.通信相手のサーバーがSTARTTLSに対応していないと(送信側・受信側どちらかがSTARTTLSに対応していないと)メールは平文で送信されます。
つまり、通常の通信プロトコル(SMTP)を途中からSSL/TLSで暗号化された状態に切り替える方式です。
Wikipediaより引用
https://ja.wikipedia.org/wiki/STARTTLS
S: <TCPポート25番で接続要求を待つ> 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 ← ここで送信側メールサーバー(S:サーバー)が、STARTTLS で通信できるか確認をしています。 C: STARTTLS ← 受信側メールサーバー(C:クライアント)が、STARTTLS に対応していることを返答します。 S: 220 Go ahead C: <TLSネゴシエーションを開始> C & S: <TLSのネゴシエーション> C & S: <ネゴシエーションの結果を確認> C: EHLO client.example.org |
どこが暗号化されるのか?
STARTTLSは、サーバー間の通信(MTA間の通信)を暗号化します。
暗号化の方式は、SSL/TLS と一緒です。
STARTTLSのポート番号
STARTTLSは、通常の通信プロトコル(SMTP)を途中から SSL/TLS で暗号化された状態に切り替える方式のため、ポート番号は平文による SMTP 通信と同様です。
25番ポート
もしくは
587番ポート
が使用されます。
一般的には、587番ポートが使用されます。
※587番ポートは通称「サブミッションポート」と呼ばれており、迷惑メール対策としてプロバイダのメールサーバーを経由せずにインターネットにメールを送れないように制限をしています。
STARTTLSのメリット(利点)
専用ポートを利用しなくてもいいことです。
専用のポート番号を割り当てずに、通信の途中から暗号化通信に切り替えることができます。
そのため、ファイアウォール(FW)で通信をブロックされる可能性も減りますし、ACL(アクセス コントロール リスト)の設定作業などの手間も減ります。
STARTTLS により通信の途中で動的に SSL/TLS で暗号化するかどうかを判断できるため、「利用可能な場合はSSL/TLS」が利用できます。
また、暗号化プロトコル用に専用のポートを用意する必要がなく、また、暗号化に対応していない相手とも平文でそのまま通信を行うことができます。
※その代り、本当に暗号化されたのかどうか分からないというデメリットもあります。
デメリット(注意点)
STARTTLSは、本当に暗号化されて通信されているのか確認するすべがないので、ユーザーまたは管理者が通信が暗号化されていると想定していて、暗号化を必要とするように実際に構成していない場合(つまり暗号化の設定がされていない場合)、STARTTLS は安全でない可能性があります。
この場合は、Man-in-the-Middle Attack(中間者攻撃、MIMT)が有効になります。
実際に暗号化が適用されているかどうかわかりません。
「STARTTLS」と「SMTP over SSL」の違い
最初からすべての通信をネゴシエーションから本文のやり取りまで暗号化するのが SMTP over SSL (465)です。
最初は平文で通信を始め、ネゴシエーション結果により途中から暗号化に転じるのが STARTTLS (25、587) です。
双方ともメールクライアントソフトが対応していなければ利用することができません。
SMTP over SSL
SMTP over SSLは、465番ポートを使用します。
SMPT over SSLは、「送信者」から「送信者のメールサーバ」までの通信が暗号化されます。
ただし、その先の通信経路で受信者のメールサーバが SMTP over SSL に対応していないと暗号化されずにメールが平文で送信されます。
そのため、SMTP over SSL を導入する際の条件が結構厳しくなります。
- ファイアウォールで穴あけの設定(465番ポート)
- インターネット上の通信経路のサーバーすべてが SMTP over SSL に対応していること
Googleがメール暗号化通信のルールを作るか?
Googleは、Gmailの運用をしていますが、Googleは早くから「常時SSL」を目標に掲げています。
Gmailも当然のごとくセキュリティ対策をしています。
たとえば、下図は「ぐるなび」から送信されてきたメールですが、メールが平文で送信されてきた(暗号化されずに送信されてきた)ことが分かります。
(ただマークが小さすぎて意識しないと気が付かないかもしれませんが)
さらに赤い鍵のマークにカーソルを合わせると、どこで暗号化されなかったのかが分かります。
下図では「emscyan.jp で暗号化されませんでした」と表示されています。
ちなみに「emscyan.jp」は、「メール配信業者」の「メール配信システムのドメイン名」です。
STARTTLSで暗号化されている場合は、下図のようにアイコンが表示されません。
これはGoogleからGmailに送信されてきたメールですが、さすがにGmail→Gmailでは暗号化されています。
更に上図の赤い枠内の三角形のアイコンをクリックすると、下図のように詳細画面が表示されます。
TLSで暗号化されて送信されたことが分かります。
ちなみに、下図は「暗号化のアイコン」の詳細な説明です。
S/MIMEの場合はより分かりやすいように緑色のアイコンが表示されます。
今後もGoogleがデファクトスタンダードを作っていくような気がします。
実際、WebサイトもGoogleが勧めている「常時SSL化」が広まってきています。
補足 メール送受信 ポート番号まとめ
IMAPはポート143番を使用
→SSL/TLS暗号化IMAPはポート993番を使用
POPはポート110番を使用
→SSL/TLS暗号化POPはポート995番を使用
SMTPはポート25番を使用
→SMTP over SSLはポート465番を使用
→STARTTLSはポート25番、もしくは587番を使用
コメント