【ネットワーク基礎】SSL/TLSでの通信の仕組み

ネットワーク基礎 Network
ネットワーク基礎

ネットワーク基礎の締めくくりとしてSSL/TLSでの通信の仕組みについて解説します。

現代のインターネット通信ではSSL/TLSを用いた暗号化通信を用いるのがもはや常識となりました。httpsにおけるWEBアプリケーションを表示する仕組みとしてSSL/TLS通信の仕組みについて見ていきましょう。

この記事は「ネットワーク基礎 – WEBページが表示されるまで」の「6.SSL/TLSとは」の解説記事となります。

SSL/TLSとは

SSL(Secure Sockets Layer)とTLS(Transport Layer Security)はどちらも暗号化を行ったり、第三者からの盗聴や改ざんを防ぐ仕組みです。

またSSLサーバー証明書を信頼の置ける認証局に発行してもらうことで、サービスを提供する身元を担保する効果も持ちます。

SSL/TLSという言葉は本来、SSLというプロトコルとTLSというプロトコルの別々の仕組みを表したものですが、現在SSLは脆弱性が見つかっており使われておらず、通常TLSのみ用いられます。ですが、SSLという名前が広く浸透しているため、呼称としてSSL/TLSという言葉が使われ続けています。

共通鍵暗号方式

SSL/TLS通信を理解する前に、2つの暗号化方式について理解します。

まず1つ目は共通鍵暗号方式です。

共通鍵暗号方式では、クライアントとサーバーが同じ鍵をつかって通信を暗号化及び復号します。

後で出てくる公開鍵暗号方式と比べて、アルゴリズムが単純で済むので大きなデータであっても、通信速度が早いというメリットがありますが、公開鍵暗号方式と違って、クライアントとサーバー間で事前に鍵を共有しておかなければなりません。

平文を暗号文にすることを暗号化といいますが、その逆は復号化ではなく復号といいます。

公開鍵暗号方式

公開鍵暗号方式では、鍵を2つ用います。

できた2つの鍵を公開鍵と秘密鍵と言います。公開鍵は文字通り公に公開しておき、公開鍵で暗号化した文を送って秘密鍵を用いて復号します。

サーバー側が南京錠を渡して、それで鍵をかけて送りつけて、サーバー側は持っている鍵で南京錠を開くイメージです。

共通鍵を公開鍵暗号方式で送る

一般的に公開鍵暗号方式は共通鍵暗号方式と比べて暗号化と復号の処理が遅いという特徴があります。

なので、速度を早めるために、この2つの方式を合わせて用います。

この2つが組み合わさった暗号化方式のことをハイブリッド暗号方式と呼んだりもします。

ハイブリッド暗号方式では、公開鍵暗号方式を使って、共通鍵をクライアントとサーバーで共有し、その後は共通鍵暗号方式を用いて通信します。

これによって、共通鍵暗号方式の鍵の共有が難しい問題と、公開鍵暗号方式の通信が遅い問題を解決しています。

現在のHTTPS通信ではこのハイブリッド暗号方式が用いられています。

認証局(CA)

一見非の打ち所がないように感じる、共通鍵暗号方式と公開鍵暗号方式を組み合わせたハイブリッド暗号方式ですが、公開鍵は一般に公開されているものなので、本当にそのサーバーのものなのか?を確かめるすべがありません。(なりすまし)

このなりすましを防ぐために、SSL/TLSでは、認証局によって発行されたSSLサーバー証明書というものを用います。

HTTPSで通信を行いたいサーバーは予め、認証局(CA=Certification Authority)に証明書を発行してもらいます。

その際に公開鍵と紐付けておきます。

サーバーはクライアントから要求がくると、公開鍵と一緒にサーバー証明書をクライアントに返送します。

クライアントは予め、PCやブラウザに内蔵されているルート証明書を使って、サーバーから送られてきた証明書を検証します。

この仕組を用いることで、盗聴やなりすまし、改ざんからデータを守ることができます。

まとめ

SSL/TLSの通信の仕組みについて解説しました。

ポイントは

  • 共通鍵暗号方式 => 通信が早いが鍵の共有が難しい
  • 公開鍵暗号方式 => 鍵の共有が容易いが、通信が遅い
  • ハイブリッド暗号方式 => 公開鍵暗号方式で共通鍵を共有し、鍵を交換したあとは共有鍵暗号方式で通信する TLSにおいて使われている方法
  • SSLサーバー証明書 => 認証局に証明書を発行してもらうことで、なりすましを防止することができる

です。

それぞれの暗号方式の実際のアルゴリズムや、証明書の記載内容などを調べると、より知識を深めることができます。

暗号方式については以下の書籍で勉強するのがおすすめです。

数学の知識が多少必要なのと、かなり詳しくアルゴリズムに対して説明されているので初学者向きではないですが、セキュリティに関心のある方はチャレンジしてみると良いかと思います。

WEBページが表示されるまでのネットワークの基礎知識についてはこちらの記事でまとめています。

コメント

タイトルとURLをコピーしました