著者:田中麻維
大手電機メーカー系のSierに入社後、インフラエンジニアとしてLinuxサーバーの構築や保守・運用、ソフトウェアの開発業務を経験。アイティベル入社後は、IT領域の執筆などを行う。
インターネット技術の進歩やクラウドサービスの普及により、オンラインでの取引やコミュニケーションが増加しました。それに伴い、サイバー犯罪も増加傾向にあります。情報漏えいといったトラブルも増えており、セキュアなインターネット通信の需要がますます高まっています。
SSL(Secure Sockets Layer)はインターネット上でデータを暗号化し、安全な通信の中核をなすプロトコルです。現在では、TLS(Transport Layer Security)として新しいバージョンに発展し、進化し続けています。
本記事では、安全なインターネット通信の基本にフォーカスし、システム管理者・Web開発者・企業のセキュリティ担当者向けに、SSLの役割や仕組み、開発の歴史、実際の利用例、今後の課題や展望について解説します。
1. SSLとは
SSL(Secure Sockets Layer)とは、インターネット上でデータを暗号化し、安全に送受信するためのプロトコルです。クライアントとサーバー間の通信を保護することで、第三者によるデータの盗聴や改ざんを防ぎます。
SSLの開発の歴史
SSLはインターネット黎明期に誕生し、現在も進化し続けています。まずはSSLの開発の歴史を時系列で解説します。
1994年 | SSLの誕生 | Netscape Communications Corporation※1がインターネット上での安全な通信を可能にするために、SSLバージョン1.0が開発されました。ただし、一般公開はされていません。 |
1995年 | SSL 2.0のリリース | SSL 1.0のセキュリティ上の欠陥を改修したSSL 2.0が公開されました。また同年には、SSL 2.0のセキュリティを強化したSSL 3.0もリリースされました。 |
1999年 | TLS 1.0の発表 | IETF(Internet Engineering Task Force)※2が、SSLの後継である、TLS(Transport Layer Security)1.0を標準化しました。 |
2006年 | TLS 1.1の発表 | TLS1.0におけるいくつかのセキュリティ問題を改修した、TLS 1.1が公開されました。 |
2008年 | TLS 1.2の発表 | TLS 1.2では、よりセキュアなハッシュと暗号アルゴリズムの導入、SHA-256※3の使用、非対称鍵暗号方式の改善などを含む、重要なアップデートが行われました。 |
2018年 | TLS 1.3の発表 | TLS 1.3では、古い暗号アルゴリズムの廃止によりセキュリティを強化、ハンドシェイクプロセスの簡略化、接続の高速化を実現しました。 |
現在は、多くのWebサイトでTLS 1.3が使われています。一方、SSL 3.0の使用は推奨されていません。実際に、多くのブラウザやWebサービスはSSL 3.0を無効としています。
SSL自体の開発は終了しており、現在はTLSの継続的な開発が進められています。
※1:Netscape Communications Corporation
かつて存在したアメリカのコンピューターサービス企業です。主要なブラウザの一つで「Netscape Navigator」を開発しました。
※2:IETF(Internet Engineering Task Force)
インターネットの標準仕様を定義するオープンな国際コミュニティです。
※3:SHA-256
SHA-256は、Secure Hash Algorithm(安全なハッシュアルゴリズム)の一つであり、256ビットのハッシュ値を生成します。
SSL/TLSの役割
SSL/TLSの役割について暗号化、認証、データの完全性の3つの観点から解説します。
インターネット通信の暗号化
SSL/TLSは、クライアントとサーバー間で、一時的な暗号キーを生成・共有します。この暗号キーによって、送受信されるデータは暗号化されます。暗号キーはそのセッション専用であるため、第三者によるデータの読み取りはできません。
Webサイトの認証
SSL/TLSは、信頼できるCA(証明書発行機関)※4によって発行されたデジタル証明書を用いて、サーバーの身元を認証します。これにより、ユーザーは意図した正当なWebサイトに、安全にアクセスしていることを確認できます。
データの完全性の確保
SSL/TLSはMAC(メッセージ認証コード)※5やハッシュ関数を使用して、データ送信時の完全性を確保します。ユーザーは、送受信される情報が信頼できるものであるという保証が得られます。
万が一、データが途中で改ざんされた場合には、受信側で検出が可能です。
※4:CA(証明書発行機関)
CAとは「Certificate Authority」(認証局)の略称で、デジタル証明書を発行し、管理する信頼された第三者機関です。
※5:MAC(メッセージ認証コード)
MAC(Message Authentication Code)は、デジタルメッセージやドキュメントの真正性と認証を確認するために使用される短い情報の断片です。
2. SSL/TLSの仕組み
本章ではSSL/TLSの主要な役割である、暗号化、認証、データ保護についての仕組みを解説します。
暗号化の仕組み
暗号化はSSL/TLSハンドシェイクと呼ばれる一連の手順で行われます。
1. ハンドシェイクの開始(クライアント⇒サーバー)
まずクライアントは、サーバーに接続要求をするために、Client Helloメッセージを送信します。Client Helloメッセージには、使用可能なSSL/TLSのバージョン、提供できる暗号スイート(暗号化アルゴリズムの組み合わせ)、セッションIDなどの情報が含まれています。
2. サーバーの応答(サーバー⇒クライアント)
サーバーはClient Helloに応答し、Server Helloメッセージを送り返します。このメッセージには、選択された暗号スイート、セッションID、サーバーのランダム値などが含まれます。
3. サーバー証明書の送信(サーバー⇒クライアント)
サーバーは、CAによって認証されたサーバー証明書をクライアントに送信します。サーバー証明書には、サーバー自身の公開鍵※6が含まれています。
4. 鍵交換(クライアント⇒サーバー)
クライアントはサーバーの公開鍵を元に秘密鍵※7を作成し、暗号化してサーバーに送信します。秘密鍵とは、クライアントとサーバーが1対1で持ち合う唯一無二の共通鍵です。
5. 暗号化通信の実現(クライアント⇔サーバー)
以降は、共通の秘密鍵でデータを暗号化および復号化することで、安全な通信を実現します。この暗号化状態は、ブラウザを閉じる、一定時間操作がないなどによって、セッションが終了するまで続きます。
※6:公開鍵
公開鍵(Public Key)は、非対称暗号化方式において使用される鍵の一つです。公開鍵暗号方式で使われる暗号鍵の一つで、誰でも利用できるように広く公開されています。
※7:秘密鍵
秘密鍵(Private Key)非対称暗号化方式における鍵のペアの一つです。もう一方は、公開鍵(Public Key)です。秘密鍵は、その名の通り秘密に保たれるべきもので、鍵の所有者だけがアクセスできるよう厳重に管理されます。
認証の仕組み
SSL/TLSの認証プロセスは、サーバーの身元を確認する重要なプロセスです。このプロセスは公開鍵基盤(PKI: Public Key Infrastructure)※8を使用し、以下のステップで行われます。
1.サーバーが秘密鍵と公開鍵を生成
まずサーバーは、認証局にSSL証明書を申請する前に、秘密鍵と公開鍵のペアを生成します。秘密鍵はサーバー内で安全に保管され、公開鍵には誰でもアクセスできます。ただし、公開鍵は、対となる秘密鍵がなければデータを復号することができません。
2.サーバーがCSR(証明書署名要求)※9を作成
次に、サーバーはCSRを作成します。CSRとは、サーバーの公開鍵、組織の名前、ドメイン名などの情報を含む要求書であり、サーバーの秘密鍵で署名されます。
3.認証局がサーバーにデジタル証明書を発行
CSRは認証局に提出されます。認証局は提出された情報を検証し、要求が正当であると判断した場合に限り、デジタル証明書を発行します。デジタル証明書には、サーバーの公開鍵と認証局自身の署名が含まれます。
4.情報の登録
3で認証局が発行したデジタル証明書は、リポジトリと呼ばれるデジタル証明書の保管場所にも登録されます。
5.認証局がクライアントにデジタル証明書を発行
クライアント側には、認証局の公開鍵が含まれたデジタル証明書が発行されます。
6.クライアントからサーバーへの接続要求
ここまでの準備が終わった段階で、クライアントからサーバーに対して接続要求を行います。
7.クライアントにデジタル証明書を送信
接続要求を行ったクライアント対して、サーバはデジタル証明書を送信します。
8.デジタル証明書の確認
クライアントは、サーバーから受信したデジタル証明書が認証局から発行されたものかどうかを確認するために、認証局の公開鍵を使用して秘密鍵で暗号化されたデジタル署名部分の復号を行います。サーバーの証明書を検証後、クライアントとサーバーは暗号化された通信が可能になります。
※8:公開鍵基盤(PKI: Public Key Infrastructure)
デジタル証明書と非対称暗号化方式を使用して、ユーザー、コンピューター、および組織のIDを認証し、安全な電子取引を行うための基盤です。
※9:CSR(Certificate Signing Request)
CSRは、「証明書署名要求」とも呼ばれ、SSL/TLS証明書をCAから取得するために必要な情報の一種です。
データ完全性を担保する仕組み
SSL/TLSでは、データの完全性を担保し、通信データの改ざんを検知するために、メッセージ認証コード(MAC)と呼ばれる仕組みを利用しています。これにより、インターネト上でのデータ送信の信頼性とセキュリティは、大幅に向上します。
MACの具体的なプロセスは以下のとおりです。
1.MACの生成
MACは、シーケンス番号、メッセージの種類、メッセージの長さなどのヘッダ情報とメッセージを利用し、ハッシュ関数またはHMAC ※10アルゴリズムを使用して生成されます。
2.MACの共有
クライアントとサーバーの間で、暗号化されたメッセージとMACが一緒に送信されます。
3.データの受信と検証
受信側は、まずメッセージを復号し、続いて受信したMACを検証します。検証は、ハッシュ関数またはHMACアルゴリズムを使用して行なわれます。
4.改ざんの有無を確認
受信側の検証結果と送信側から受け取ったMACが一致する場合、メッセージは改ざんされていないと判断されます。反対に、一致しない場合は、メッセージが途中で改ざんされた可能性があるとして、メッセージを破棄します。
※10: HMAC(Hash-based Message Authentication Code)
HMACとは、MACを生成するための仕組みの一つで、ハッシュ関数を利用しています。メッセージの完全性と認証性を確保する役割があります。
3. SSL/TLSの実際の利用例
本章では、SSL/TLSがどのような場面で使われているのかを解説します。
オンラインバンキング
オンラインバンキングでは、ユーザーが金融情報や個人情報を銀行のWebサイトに送信する際に、SSL/TLSが必要不可欠です。ログイン時や口座情報の確認時、取引の実行時など、すべての情報交換がSSL/TLSによって保護されます。
電子商取引サイト(eコマース)
eコマースのWebサイトでは、顧客が商品を購入する際にクレジットカード情報や住所情報を送信する必要があります。SSL/TLSはこれらの情報を暗号化し、第三者による盗聴やデータの盗難を防ぎます。
メールサービス
電子メールの送受信では、SMTP、IMAP、POPなどのメールプロトコル上でSSL/TLSを使用しています。メールクライアントとメールサーバー間、またはメールサーバー間の通信を暗号化することで保護します。
クラウドサービス
クラウドストレージやオンラインオフィススイートをはじめとするクラウドベースのアプリケーションは、ユーザーがリモートサーバーにデータをアップロード・編集・共有する際にSSL/TLSを使用しています。
4. SSL/TLS の課題
SSL/TLSはこれまでアップデートを繰り返してきましたが、完璧ではありません。この章では、SSL/TLSの運用面とセキュリティ面における課題を3点紹介します。
証明書の運用
SSL/TLS証明書の適切な管理は、運用における重要な課題です。
SSL/TLS証明書には有効期限があり、期限切れになると通信が保護されません。期限が切れる前に証明書を更新する仕組みや、証明書が失効してしまった場合に速やかに通知する仕組みが必要です。
中間者攻撃
中間者攻撃とは、攻撃者がクライアントとサーバー間の通信に割り込み、データを盗聴や改ざんすることです。ユーザーが、HTTPSではなくHTTPを利用してWebサイトへアクセスしている場合に、攻撃を受けることがあります。
具体的な対策としては、Webサイトの設定でHTTPによる待受を無効にするといった設定が有効です。
SSL/TLSの脆弱性
SSL/TLSの脆弱性は、発見され次第、影響範囲やリスクを調査して、早急に対処・管理しなければなりません。
具体的な対処法としては、定期的なソフトウェアアップデートとパッチの適用、古いプロトコルの無効化、適切な暗号スイートの選択、およびセキュリティベストプラクティスの遵守などが挙げられます。
また、SSL/TLSのセキュリティを確保するために、セキュリティ評価や脆弱性スキャンの定期的に実施も推奨されています。AIによる機械学習も、SSL/TLSの証明書の運用管理やセキュリティ監視に応用されています。
暗号解読技術の進化
量子コンピューティングは、公開鍵暗号方式をもとにしたSSL/TLSの安全性を破ることが理論上可能です。つまり、現在の暗号化技術を脅かす可能性があるといえるでしょう。
これに対応するため、新しい暗号化方式である、量子耐性暗号(Post-Quantum Cryptography)の研究が進められています。将来的には、SSL/TLSプロトコルも量子耐性暗号を採用することが見込まれています。
6. まとめ
SSL/TLSは、安全で信頼性が高い通信を保証してくれるテクノロジーです。インターネットの普及とともに常に進化し、セキュアな通信を支えてきました。
SSL/TLSは今後もセキュリティ技術として進化し続け、リスクに適応し、インターネット経済の成長と発展を支えるテクノロジーとして、ますます注目されるでしょう。