著者:田中麻維
大手電機メーカー系のSierに入社後、インフラエンジニアとしてLinuxサーバーの構築や保守・運用、ソフトウェアの開発業務を経験。アイティベル入社後は、IT領域の執筆などを行う。
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、インターネット上での安全な通信を確保するための基本的な技術です。
本記事では、SSLとTLSの違いに注目し、各技術の特徴やどちらを選ぶべきかの指針、将来の展望について解説します。
1.SSLとTLSの歴史的背景
まずは、SSLが誕生した背景からTLSへの変遷までの経緯を解説します。
SSLの起源について
1990年代の初頭から、インターネットの商用利用が急速に拡大していきます。しかし、その通信は暗号化されておらず、傍受やデータの盗み見などによる情報漏えいのリスクがありました。
特に、オンラインでの金融取引や個人情報のやり取りが増えるにつれて、これらのセキュリティリスクを回避するための対策が求められました。このニーズに応えるために、Netscape Communicationsによって開発されたのが、SSLです。
SSLからTLSへの変遷
ここからは、SSLからTLSへ変遷して行った背景と流れについて解説します。
SSL 1.0~3.0
SSL 1.0は、SSLの最初のバージョンで、1994年に登場しました。その後、1995年にSSL 2.0がリリースされ、セキュアな通信のための標準的なプロトコルとして広く使われ始めます。さらに1996年には、セキュリティを改善したSSL 3.0がリリースされました。
TLSの導入
SSL 3.0の後継として、より強化されたセキュリティを提供するために、1999年にIETF(The Internet Engineering Task Force/インターネット技術特別調査委員会)によってTLS 1.0 (RFC 2246) が標準化されました。
TLSの進化
TLSは、セキュリティの強化と効率の向上を目的として、アップデートが繰り返されています。最新のメジャーアップデートであるTLS 1.3 (RFC 8446) は、2018年にリリースされました。
SSLからTLSへの変遷や関連する用語については、以下の記事に詳しく掲載しています。併せてご参照ください。
SSLとTLSの基本機能
SSLとTLSの基本的な機能について解説します。
暗号化
SSLとTLSには、データを暗号化する機能があります。暗号化により、第三者によるデータの読み取りや改ざんを防ぎます。
暗号化の方式にはさまざまな種類があり、SSLとTLSでは対象暗号化方式と非対象暗号化方式の仕組みが用いられています。
なお、対象暗号化方式とは、データの暗号化と復号に同じ鍵を使用する暗号化方式です。一方、非対称暗号化方式は、データの暗号化に公開鍵を、復号には秘密鍵を使用する暗号化方式です。
データの保護(MAC)
データは送信前に暗号化され、受信側で復号されます。このときデータの整合性を保つために、メッセージ認証コード(MAC)やハッシュ関数が使用され、データが改ざんされていないことを検証します。
認証(鍵交換)
サーバーはデジタル証明書を用いてその正当性を証明し、クライアントは自分が接続しようとしているサーバーが正しいことを確認します。また、サーバーはクライアントの証明書を要求して、クライアントもまた正当であることを確認できます。
2.SSLとTLSの違い
SSLとTLSは、どちらもインターネット上での安全な通信を確保するためのプロトコルです。SSLの脆弱性を改善したTLS 1.0が発表された際に、SSLからTLSへ名前が変更されましたが、その役割に大きな違いはありません。
変遷の経緯でも記載したとおり、バージョンが進むにつれて、セキュリティ機能に重要な改善が加えられています。
暗号スイート
暗号スイートは、SSLやTLSで暗号・鍵交換・改ざん検知を行うアルゴリズムの組み合わせです。
SSL 3.0では、DESや3DESなどの古い対称暗号化アルゴリズムと、RSA鍵交換、MD5やSHA-1ハッシュ関数を含む暗号スイートを提供していました。
TLSでは、より安全なAESやChaCha20などの対称暗号化アルゴリズムを含む、改良された暗号スイートが導入されました。
MACの生成
SSLでは、メッセージ認証コード(MAC)を使ってデータの完全性を保証していましたが、技術が進歩するとともに、この方法には脆弱性があることが判明しました。
TLS 1.2までのバージョンでは、HMAC(Keyed-Hash Message Authentication Code)を使用し、データ完全性と認証を強化していました。さらにTLS 1.3では、MACの使用を廃止し、AEAD(Authenticated Encryption with Associated Data)暗号を採用しています。
鍵交換
SSLでは、RSAやDiffie-Hellmanなどの鍵交換アルゴリズムを使用して、セッションキーを生成していました。
TLS 1.2では、ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)をはじめとする前方秘匿性を提供する鍵交換アルゴリズムが標準となっています。TLS 1.3ではさらに、すべての暗号スイートで前方秘匿性を必須としています。
その他
TLS 1.2は、SHA-256といった、より安全なハッシュ関数を採用しました。さらにTLS 1.3では、セキュリティが不十分とされるアルゴリズムやプロトコル機能を除外しています。
また、TLS 1.3ではハンドシェイクプロセスを簡略化し、接続速度を向上させてセキュリティを改善しました。これにより、より迅速な暗号化通信が可能となりました。
3. SSLの脆弱性
SSLのアップデートを重ねたものがTLSです。これまで解説してきた通り、SSLには多くの脆弱性が存在しています。
独立行政法人情報処理推進機構(IPA)の「TLS 暗号設定ガイドライン 」によると、TLS 1.1以前のプロトコルには、脆弱性が報告されています。プロトコルバージョンごとの安全性の違いは以下の図のとおりです。
ここでは、SSLの脆弱性を利用した3つの攻撃手法を紹介します。
※参考:TLS 暗号設定 ガイドライン,p16
ダウングレード攻撃
攻撃者が通信中のクライアントとサーバー間で使用されるセキュリティプロトコルのバージョンを意図的に下げることにより、より脆弱な暗号化方式を使用させるセキュリティ攻撃です。
バージョンロールバック攻撃
ダウングレード攻撃の一種で、クライアントとサーバーが使用するセキュリティプロトコルのバージョンを意図的に古いものに変更させる攻撃です。
攻撃者がソフトウェアのアップデートサーバーを偽装し、ユーザーに古いバージョンのソフトウェアをダウンロードさせます。攻撃者は、古いバージョンの脆弱性を利用してシステムに侵入します。
CBCモードの脆弱性を狙った攻撃
ブロック暗号の一種である、CBC(Cipher Block Chaining)モードの脆弱性を利用します。CBCモードでは、攻撃者がセッション中のクッキーといった、暗号化された情報を復号できてしまう問題がありました。
ここまで紹介した脆弱性に加えて、SSLプロトコル自体が古いアルゴリズムを使用しており、現在のセキュリティ基準にはもはや適していないといえるでしょう。SSLの脆弱性は、いずれもTLSによって解消されています。
4.TLS 1.3を含む最新バージョンのセキュリティ進化と将来性
TLSプロトコルの将来性は、セキュリティ技術の進歩、新しい脅威の出現、法規制の変化など、多くの要因に依存しています。インターネット上で安全な通信を実現するためには、継続的にプロトコルを評価し、改善していくことが求められます。
今後、量子コンピュータが実現した場合、現在の公開鍵暗号システムは破られる可能性が高いといわれています。TLS 1.3でも、将来的に量子耐性のある暗号化アルゴリズムに対応するために、アップデートが必要になるかもしれません。
将来的には、TLS 1.4やそれ以上に進化したバージョンが登場する可能性があります。
5.まとめ
TLSとSSLはどちらも、インターネット上での安全な通信を確保するための基本的な技術です。
しかし、SSLは安全性の懸念から現在では使われていません。TLSはSSLの後継として設計されており、各バージョンのリリースでセキュリティ機能が強化されています。
特にTLS 1.3は、これまでのバージョンと比較して大幅なセキュリティとパフォーマンスの向上が図られており、現在ではセキュアな通信のためにTLSの利用が推奨されています。