トランスポート・レイヤー・セキュリティ (TLS) はインターネット・エンジニアリング・タスク・フォース (IETF) による標準プロトコルで、インターネットを介した通信において認証を行い、プライバシーとデータの完全性を確保します。このプロトコルは1999年に公開され、最新バージョンの TLS 1.3 は2018年に公開されました。TLS の日常的なユースケースは、2つのシステム間における通信の暗号化です。 接続した相手の正当性を保証し、データの完全性が維持されていることを確認し、暗号化によって一定レベルの機密性を保持できる TLS は、インターネット通信において極めて重要です。TLS はさまざまなアルゴリズムやメソッドを使用してこれらの目的を達成します。TLS は現在、最も広く普及しデプロイされているセキュリティプロトコルといえます。特に、Web ブラウザや、データのやり取りを安全にハイパーテキスト・トランスファー・プロトコル・セキュア (HTTPS) 経由で行う必要があるその他のアプリケーションにおいて TLS は最適です。また、TLS によってメールやその他のプロトコルを保護することもできます。
TLS について語られる際、セキュアソケットレイヤー (SSL) や「SSL/TLS」といった表現が使われることがよくあります。 SSL は TLS の前身にあたるプロトコルです。 業界では TLS を SSL と呼ぶ人が現在も多数います。 この記事では TLS を使いますが、TLS と SSL が同義語として使用される場合があることにご注意ください。繰り返しになりますが、TLS は、すでに廃止されている SSL の後継にあたるプロトコルです。
Netscape の SSL プロトコルから生まれた TLS は、SSL に代わって使用されるようになりました。 Netscape に関連する問題を避けるために「TLS」という新たな名前が付けられましたが、現在も混乱が生じています。SSL とその後継の TLS には明らかな違いがあります。 TLS ではプロトコルの成熟により、脆弱性が解決されたほか、統合機能や実装機能が改善されています。認証や鍵の生成機能、複数の暗号スイートへのサポートなどが強化されている TLS は、SSL よりも効率的で安全性の高いプロトコルといえます。 TLS は、より新しく安全性に優れたアルゴリズムをサポートしています。このように TLS と SSL は同じではありません。ただし TLS はレガシー機能ともある程度、互換性があります。 TLS は SSL よりもはるかに速くハンドシェイクを処理できます。2021年に IETF は正式に TLS 1.0 と 1.1 を廃止し、Apple や Microsoft をはじめとする大手企業もこれに倣いました。
HTTPS はハイパーテキスト・トランスファー・プロトコル (HTTP) の安全性が強化されたバージョンです。 HTTP は、情報の伝達や交換を行うためにブラウザや Web サーバーによって使用されるプロトコルです。HTTPS では、データが転送され る際に SSL/TLS によって暗号化されます。従って、Webサイトが HTTPS を使用する場合、すべての情報が SSL/TLS 証明書によって暗号化されます。
TLS プロトコルには、完全性の確認、認証、暗号化の3つの役割があります。
完全性 : ネットワーク上で送信されるデータが侵害されていないことを確認します。
認証 : 通信相手の ID を確認し、正当であることを証明します。
暗号化 : サードパーティから転送されたデータを解読できないようにします。
TLS は2つのレイヤーに分けて考えることができます。
TLS レコードプロトコルは、TLS ハンドシェイクの際に生成される鍵を使用してアプリケーションのデータを保護します。 レコードプロトコルは、アプリケーションのデータを保護し、その完全性と真正性を検証する役割を担います。TLS ハンドシェイクプロトコルは、セッションの確立と保護に必要な認証と鍵の交換を行います。
TLS レコードプロトコルによって接続が安全に行われ、TLS ハンドシェイクプロトコルによって、データを交換する前にクライアントとサーバーが互いを認証し合い、鍵交換が行われます。
TLS ハンドシェイクのプロセスは複数のステップから成ります。 標準的な TLS ハンドシェイクでは、クライアントとサーバーは「hello」メッセージを送信し、鍵を交換し、メッセージを暗号化してメッセージを終了します。
ほとんどすべてのWebサイトで TLS 1.2 がサポートされており、(本記事の公開時において) 約60%が TLS 1.3 もサポートしています。TLS 1.3 では大幅に安全性が強化されているほか、性能の低い古い機能は排除されています。また、新たに追加された機能によって TLS ハンドシェイクを高速化できます。「Session Resumption」(セッション再開) は、サーバーとクライアントが以前に通信を行ったかを確認し、セキュリティチェックの一部を省略できるか判断します。「False Start」は、ハンドシェイクが完了する前にサーバーとクライアントがデータを送信できるようにします。以前の TLS バージョンのハンドシェイクでは2度の往復通信が必要でしたが、TLS 1.3 の場合は1度で済みます。最後に「Zero Round Trip Time Resumption」(0-RTT) は、再開用のマスター鍵の生成を可能にします。
また TLS に、サイトの検索エンジン最適化 (SEO) や顧客との信頼性構築など、ビジネスや Web アプリケーションにさまざまなメリットをもたらします。その結果、企業は検索エンジンの検索結果ページ (SERP) で