Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SSL(エスエスエル)とは | 意味や読み方など丁寧でわかりやすい用語解説

SSL(エスエスエル)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

エスエスエル (エスエスエル)

英語表記

SSL (エスエスエル)

用語解説

SSL(Secure Sockets Layer)は、インターネット上でデータを安全に送受信するためのプロトコルである。Webサイト閲覧、メールの送受信、オンライン決済など、様々なインターネット通信において、第三者によるデータの盗聴や改ざんを防ぎ、通信相手が本物であることを確認する役割を担う。具体的には、通信の暗号化、データの完全性保証、そして通信相手の認証という三つの主要な機能を提供する。もともとSSLとして開発されたが、現在はその後継であるTLS(Transport Layer Security)が主流であり、一般に「SSL」と呼ぶ場合でも実質的にはTLSを指すことが多い。これにより、ユーザーは安心してオンラインサービスを利用できる基盤が提供されている。

SSL/TLSが提供する主要な機能は、暗号化、データの完全性、認証の三点に集約される。

まず「暗号化」は、通信内容を第三者から読み取れないように変換することである。これは主に、共通鍵暗号方式と公開鍵暗号方式の二つを組み合わせることで実現される。公開鍵暗号方式は、暗号化と復号に異なる鍵を用いる方式で、相手に公開しても安全な公開鍵で暗号化し、秘密にしておく秘密鍵で復号する。これにより、共通鍵を安全に交換するために利用される。一方、共通鍵暗号方式は、暗号化と復号に同じ鍵を用いる方式で、一度共通鍵が確立されれば、公開鍵暗号方式よりも高速に大量のデータを暗号化できるため、実際のデータ通信の大部分で利用される。SSL/TLSの通信確立時、クライアントとサーバ間で公開鍵暗号方式を用いて共通鍵を安全に生成・交換し、その後のデータ通信ではその共通鍵を用いて効率的にデータを暗号化する。

次に「データの完全性」は、通信途中でデータが改ざんされていないことを保証する機能である。送信側は、送るデータから特定のアルゴリズム(ハッシュ関数)を使って「メッセージ認証コード(MAC: Message Authentication Code)」と呼ばれる一意の値を作成し、データと一緒に送信する。受信側も同じアルゴリズムでメッセージ認証コードを作成し、送られてきたコードと比較することで、データが改ざんされていないことを確認する。もしデータの一部でも改ざんされていれば、作成されるメッセージ認証コードは異なるため、不正な変更を検知できる。

最後に「認証」は、通信相手が主張する通りの相手であることを確認する機能である。これは「サーバ証明書」と呼ばれるデジタル証明書によって行われる。サーバ証明書は、ウェブサイトの運営組織名、公開鍵、証明書の有効期限、発行元である認証局(CA: Certificate Authority)の情報などが含まれている。認証局は、信頼できる第三者機関であり、ウェブサイトの運営者が実際にそのドメインを所有していることや、企業の実在性を審査し、その情報を電子署名して証明書を発行する。クライアントは、サーバから受け取った証明書が信頼できる認証局によって発行され、有効期限内であるか、偽装されていないかを検証することで、接続しようとしているサーバが本物であることを確認する。この仕組みにより、悪意のある第三者が偽のウェブサイトを立てて情報を盗もうとする「フィッシング詐欺」などを防ぐのに役立つ。

SSL/TLSの通信が確立されるまでの具体的な流れは「ハンドシェイク」と呼ばれるプロセスで行われる。まず、クライアント(ウェブブラウザなど)がサーバに接続要求(Client Hello)を送信する。この際、クライアントは利用可能なSSL/TLSのバージョン、サポートする暗号スイート(暗号化アルゴリズムやハッシュ関数の組み合わせ)、乱数などをサーバに提示する。次に、サーバはクライアントの要求を受け取り、最適なSSL/TLSバージョンと暗号スイートを選択し、自身のサーバ証明書と乱数をクライアントに送信する(Server Hello, Certificate, Server Key Exchange)。クライアントはサーバから受け取った証明書が信頼できる認証局によって発行されたものであり、有効期限内であることを検証する。検証が成功すると、クライアントは共通鍵を生成するための元となる情報を、サーバの公開鍵で暗号化してサーバに送信する(Client Key Exchange)。サーバは自身の秘密鍵でこの情報を復号し、クライアントと同じ共通鍵を生成する。この時点で、クライアントとサーバは同じ共通鍵を持つことになり、以降の通信はこの共通鍵を用いた共通鍵暗号方式で暗号化される(Change Cipher Spec, Finished)。これにより、安全で効率的なデータ通信が可能となる。

SSLという名称は、Netscape Communications社が開発したプロトコルであり、バージョン2.0、3.0と進化したが、それぞれにセキュリティ上の脆弱性が見つかった。そのため、国際標準化団体であるIETF(Internet Engineering Task Force)によって標準化が進められ、その後継として「TLS(Transport Layer Security)」が開発された。TLSはSSL 3.0をベースにしながらも、新たな脆弱性への対策や機能改善が施されており、バージョン1.0、1.1、1.2、そして最新の1.3へと進化している。現在インターネットで広く利用されているのはTLSの各バージョンであり、特にTLS 1.2やTLS 1.3が主流である。TLS 1.3は、ハンドシェイクの高速化や、より強力な暗号スイートの採用により、セキュリティとパフォーマンスがさらに向上している。しかし、歴史的な経緯や普及度から、一般的にはTLS通信であっても「SSL通信」と呼ぶことが多く、システムエンジニアを目指す上ではこの用語の変遷と現状を理解しておくことが重要である。SSL/TLSは、HTTPS(Hypertext Transfer Protocol Secure)という形でWeb通信の標準的なセキュリティ技術として利用されているだけでなく、SMTP over SSL/TLS(SMTPS)、POP3 over SSL/TLS(POP3S)といったメールプロトコル、あるいはVPN接続など、多岐にわたるネットワーク通信の安全性を確保するために不可欠な技術となっている。

SSL/TLSを運用する上で、いくつかのセキュリティ上の注意点がある。例えば、サーバ証明書の有効期限切れは、ウェブサイトの信頼性を失わせ、ブラウザから警告が表示される原因となる。また、脆弱な暗号アルゴリズム(暗号スイート)を使用している場合、セキュリティリスクが高まるため、常に最新かつ推奨される設定に更新することが求められる。認証局の信頼性も重要であり、不正な認証局が発行した証明書を使用すると、中間者攻撃のリスクに晒される可能性がある。このように、SSL/TLSはインターネットの安全を支える基盤技術であるが、その設定や運用には適切な知識と注意が必要となる。