BLOG ベアメールブログ
2022.08.24 (水)
HowToガイドSTARTTLSとは? メールのTLS暗号化の仕組みから設定・確認方法
Last Updated on 2024.08.5
STARTTLSとは、暗号化されていない平文での通信を、SSL/TLSを利用した暗号化通信に切り替える仕組みのことです。メール送信に利用されるプロトコルであるSMTPは暗号化通信に対応していないため、盗聴などのリスクからメールを守るために、メールの通信経路の暗号化の手段としてSTARTTLSが利用されています。本記事では、メールの暗号化とはどのようなものか、暗号化技術であるSSL/TLSの概要を踏まえ、STARTTLSの概要と仕組み、メリット・デメリットについて解説します。
※本記事は、最新の情報をもとに2023/12/12に更新しています。
目次
メール暗号化とは
メールの暗号化にはどのような意味があるのでしょうか。まず、暗号化の必要性と、暗号化技術であるSSL/TLSの概要について解説します。
メールのTLS暗号化の必要性
メールの送信に使用されるプロトコルであるSMTPには、通信を暗号化してデータを保護するための仕組みがありません。そのため、暗号化せずにメールを送信していると、通信を傍受することでメールを盗み見られる危険性があるのです。このような問題を放置していると情報漏洩や信用問題に発展する恐れがあるため、現在では、メールを安心してセキュアな状態で利用するために、メールの通信を暗号化して外部からの不正行為を防ぐ技術が普及しています。
また、Googleが2024年2月から適用する送信者要件の中にも、「メール送信にはTLS接続を使用すること」が盛り込まれています。(※)
送信時のTLSに対応していないと、2024年2月以降Gmail宛のメールが届かなくなってしまう恐れがあります。
※参考:Gmail Help「Email sender guidelines」https://support.google.com/mail/answer/81126?hl=en(2024/12/12 確認)
Googleの送信者要件について詳しくは以下のホワイトペーパーもご参照ください。
SSL/TLSの概要
SSL(Secure Socket Layer)は、インターネット上で通信経路を暗号化してデータを送受信する方法のひとつで、Netscape Communications社が開発したプロトコル(通信規約)です。
TLS(Transport Layer Security)は、SSLの技術をベースに標準化させたもので、SSLの次世代規格ともいえます。SSLには重大な脆弱性が存在し、その修正のためにバージョンアップが繰り返されてきました。その中で、設計を大きく見直して脆弱性を解決した結果、生まれたのがTLSです。現在SSLは基本的に使用されていませんが、SSLという名称が広く普及しているため、「SSL/TLS」や単に「SSL」と呼ばれることも多いです。
SSL/TLSの2つの方式
SSL/TLSは、HTTPやFTPなどアプリケーション層のプロトコルと組み合わせることで、HTTPSなどの暗号化されたセキュアな通信を実現することができます。HTTPなどの既存のアプリケーション層プロトコルをSSL/TLSで暗号化するには、大きく分けて2つの方法があります。
1つは、まずSSL/TLSでの接続を試み、SSL/TLS通信が確立してからアプリケーション層プロトコルでの通信を開始する方式です。この場合アプリケーション層のプロトコルには一切変更の必要がないというメリットがありますが、暗号化しない平文での通信と共存ができないため、既存の通信に利用していたポート番号とは別に専用のポート番号が必要となります。
もう1つが、まずアプリケーション層プロトコルで通信を開始し、その途中でSSL/TLSでの通信に切り替える方式です。この際の切り替えのコマンドとして用いられるのが「STARTTLS」で、この方式自体をSTARTTLSと呼ぶこともあります。
STARTTLSとは
ここでは、STARTTLSの概要と仕組みについて解説します。
STARTTLSの概要
STARTTLSとは、暗号化されていない平文での通信を、SSL/TLSを利用した暗号化通信に切り替える仕組みのことで、通信経路を暗号化する技術です。STARTTLSをメール送信に利用することで、通信を保護する機能がないというSMTPの欠点を補い、安全なメールのやりとりが可能になります。
STARTTLSの仕組み
STARTTLSはプロトコルではなくコマンドです。SMTPでメールの送信を行う際、まず暗号化されていない状態で通信を開始し、途中でSTARTTLSコマンドを実行することで通信経路を暗号化します。その際の流れは下記の通りです。
① メールクライアントとメールサーバー間でTCP(Transmission Control Protocol)のコネクションを確立する。
② メールクライアントからメールサーバーに対して、SMTP拡張機能(SSL/TLSを使用するために必要なSMTPの拡張仕様)をサポートしていることを伝えるEHLOコマンドを送信する。
③ 通信先メールサーバーからEHLOへの応答が返却され、SSL/TLSに対応しているか判定する。
④ メールクライアントからメールサーバーに対して、STARTTLSコマンドを実行する。(相手がTLS非対応の場合にはTLSで暗号化せずSMTPの通信を継続する)
⑤ メールサーバーから正常の応答が返却されると、TLS接続が確立される。
⑥ 以降の通信が暗号化される。
このように、最初から全ての通信を暗号化するのではなく、宛先のメールサーバーがSTARTTLSに対応しているかどうかを確認し、対応している場合のみ暗号化を行うという動作になります。
SMTPSとの違い
なお、同じくメールの通信経路を暗号化する仕組みとしてSMTPS(SMTP over SSL/TLS)がありますが、SMTPSではまず最初にTLS接続を確立してから通信を行います。そのため平文での通信は行うことができないため、SMTPとは別に専用のポート(一般的には465番)を使用する必要がある(STARTTLSはSMTPと同じ25番ポートか587番ポートを使用)という違いがあります。
STARTTLSの設定方法
自社のメールサーバーがTLS接続に対応しているかどうかはどのように確認し、設定はどのようにすれば良いのでしょうか。ここではTLS接続の確認方法と設定方法について解説します。
送信したメールがTLSに対応しているか確認する方法
最も簡単なのは、確認したいメールサーバー経由でGmail宛にメールを送信し、Gmailでそのメールを確認することです。Gmailは受信したメールが送信時に暗号化されていない場合、メールに赤い鍵のアイコンを表示します。
Gmailで送信者名の下に赤い鍵のアイコンが表示されていた場合、TLS接続がない状態で送信されているということになります。
STARTTLSの設定方法
STARTTLSは、メールサーバーで使用しているMTA(PostfixやSendmailなど)の設定ファイルに追記することで設定します。具体的な設定内容は利用しているOSやMTAの種類、バージョンによって異なるため、自社の環境に応じた対応を行なってください。
【例:Postfixの場合】
/etc/postfix/main.cf に以下設定を追記
smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/pki/tls/cert.pem
はルート証明書の設定で、ミドルウェア標準で備わっているもので問題ありません。
smtp_tls_security_level = may
がSTARTTLS自体の設定となります。パラメーターの「may」が「接続先のSMTPサーバーがTLSに対応している場合、TLSを使用する」という設定です。
smtp_tls_loglevel = 1
はログを出力するための設定です。送信時のTLSハンドシェイクと証明書の情報をログに記録されるようになります。
以上の設定を追記したら再読み込みを行い、反映されているかテストを行います。
STARTTLSのメリット・デメリット
STARTTLSの具体的なメリット・デメリットについて見ていきましょう。
STARTTLSのメリット
STARTTLSのメリットは以下が挙げられます。
専用のポート番号が不要のためセキュリティを比較的安全に保てる
STARTTLSでは、SMTPと同じ25番もしくは587番ポートを使用します。暗号化通信のために専用のポートが不要であるため、ファイアーウォールなどのセキュリティ設定の負担も少なく済みます。
受信側が暗号化に対応していなくても送信自体は可能
通信の暗号化には、日和見TLSと強制TLSという仕組みがあり、STARTTLSでは日和見TLSを使用して暗号化を行います。日和見TLSとは、相手のサーバーがTLS非対応の場合、暗号化をあきらめ、平文での通信を行うというものです。この方式においては、通信先のメールサーバーの仕様に合わせて暗号化の可否を決め、いずれの状態でもメールの送信自体は可能であるという利点があります。
STARTTLSのデメリット
STARTTLSのデメリットとしては以下が挙げられます。
送信側と受信側の双方がSTARTTLSに対応している必要がある
STARTTLSで暗号化するためには、送信側と受信側の両方がSTARTTLSに対応している必要があります。受信側が非対応の場合は暗号化されないため、仮に送信サーバーでSTARTTLSの設定を行っていたとしても平文のままメールが送信されてしまう場合があります。
初期接続時の通信は暗号化されないため中間者攻撃を受ける可能性がある
STARTTLSでは、通信の開始から暗号化通信の確立までの間は暗号化が行われません。そのため、攻撃者によって暗号化を妨害されたり、中間者攻撃(※)を受けたりする可能性があります。
※中間者攻撃(Man-in-the-middle;MITM)とは、攻撃者がユーザーとその通信相手の間に割り込み、通信の傍受や改ざんを行う行為です。
まとめ
メール送信に利用されるプロトコルであるSMTPには、通信を暗号化する仕組みがありません。そのため、暗号化せずにメールを送信していると、通信を傍受することでメールを盗み見られる危険性があります。そうしたリスクからメールを守るために、STARTTLSを使用して通信を暗号化することが有効です。ベアメール メールリレーはSTARTTLSに対応していますので、安心してご利用いただけます。メール送信に課題をお持ちであれば、まずはお気軽にご相談ください。