プロトコル(HTTP)
要点
- 「プロトコル」とは、機器同士がやり取りするための共通のルールのことです。HTTPとHTTPSの違いは、通信が暗号化されているかどうかです。
- 現在は、基本的にすべてのWebサイトをHTTPSで実装するのが標準です。
- HTTPSの安全性は、SSL/TLSによる暗号化と、認証局(CA)が発行するサーバー証明書の信頼の連鎖によって成り立っています。
通信プロトコルとは
プロトコルとは、機器同士が情報をやり取りする際の共通のルール(お作法)のことです。HTTP(HyperText Transfer Protocol)は、ブラウザとサーバーが情報をやり取りする際の共通のルールで、Webの基本プロトコルです。
クライアントとサーバーの「リクエスト」「レスポンス」のやり取りや、GET・POSTといったメソッドも、すべてこのHTTPというルールの中で定められています。
ぽち先生のヒントプロトコルは、会話をするときの「共通言語」のようなものだよ。お互いが同じルールで話すからこそ、伝えたいことがちゃんと伝わるんだ。
HTTPとHTTPSの違い
URLの先頭についている「http」「https」は、どちらのルールで通信するかを表しています。両者の違いは、通信内容が暗号化されているかどうかです。
https://プロトコルhassan-learning-portal.comドメイン/topics/web-fundamentals/protocol.htmlパス(ハガキ)
(鍵付き封筒)
ぽち先生のヒントHTTPは「ハガキ」、HTTPSは「鍵付きの封筒」に例えられるよ。ハガキは配達の途中で誰でも内容を読めてしまうけど、鍵付きの封筒なら届け先の人しか中身を見られないんだ。
基本的にはHTTPSで実装を行う
以前は「ログインページなど、個人情報を扱う部分だけHTTPS化する」という考え方もありましたが、現在ではWebサイト全体をHTTPSで実装するのが基本方針です。
ぽち先生のヒント昔は「貴重品を運ぶときだけ鍵付きの箱を使う」ような感覚だったけど、今は「すべての荷物を鍵付きの箱で送る」のが当たり前になった、というイメージだよ。
HTTPSセキュリティ
HTTPSが確保しているのは、暗号化だけではありません。次の3つを合わせて「安全な通信」と呼んでいます。
この安全性を実現しているのが「SSL/TLS」という仕組みです。次のスライドから、その中身を見ていきましょう。
SSL/TLSとは
SSL(Secure Sockets Layer)と、その後継であるTLS(Transport Layer Security)は、HTTPS通信を実現するための暗号化プロトコルです。SSLには脆弱性が見つかったため、現在では実質的にTLSが使われていますが、慣習で「SSL」と呼ばれることもよくあります。
SSL/TLSは、このあと見ていく「公開鍵・秘密鍵」による暗号化と、「サーバー証明書」による身元確認を組み合わせて、安全な通信を実現しています。
サーバー証明書とは
サーバー証明書は、Webサーバーの運営者が「間違いなく本人である」ことを証明する、インターネット上の身分証明書です。証明書には、ドメイン名・有効期限・発行元の情報や、次のスライドで説明する「公開鍵」が記録されています。
証明書を保持
確認
ぽち先生のヒント宅配便の受け取り時や窓口での本人確認で提示する「身分証明書」に似ているよ。証明書があることで、相手は「間違いなく本人だ」と確認できるんだ。
公開鍵認証とは
公開鍵認証は、「公開鍵」と「秘密鍵」という対になる2つの鍵を使う暗号方式です。公開鍵は誰に配ってもかまいませんが、公開鍵で暗号化したデータは、対になる秘密鍵でしか復号できません。
公開鍵で施錠
データ
秘密鍵で解錠
ぽち先生のヒント「南京錠」に例えると分かりやすいよ。公開鍵は誰でも使える「開いた南京錠」のようなもの。荷物にこの南京錠をかけて送れば、対になる鍵(秘密鍵)を持っている本人にしか開けられないんだ。
秘密鍵とは
秘密鍵は、公開鍵とペアになる、サーバーの運営者だけが持つ鍵です。この秘密鍵を持っているからこそ、公開鍵で暗号化されたデータを復号でき、「このサーバーは証明書の持ち主本人である」ことが証明できます。
万が一秘密鍵が漏えいすると、第三者になりすまされてしまう危険があるため、証明書は失効させたうえで、新しい鍵ペアを使って発行し直す必要があります。
ぽち先生のヒント家の「合鍵」のようなものだよ。合鍵をなくしたり他人に渡してしまうと、誰でも家に入れてしまうよね。だからこそ秘密鍵は、絶対に他人に渡さず厳重に管理する必要があるんだ。
認証局(CA)
サーバー証明書は誰でも自由に発行できるわけではありません。「認証局(CA: Certificate Authority)」という信頼された第三者機関が、運営者の身元を審査したうえで発行します。ブラウザは、あらかじめ信頼できる認証局のリストを持っており、そのリストに載っている認証局が発行した証明書だけを「信頼できる」と判断します。
(CA)
証明書を保持
ブラウザは接続のたびに、「ドメイン名が証明書と一致するか」「有効期限内か」「信頼できる認証局が発行したか」を自動的にチェックしており、これらをすべて満たした場合のみ、アドレスバーに鍵マークが表示されます。
ぽち先生のヒント認証局は「公的機関」に例えられるよ。身分証明書を誰でも自由に発行できたら意味がないけど、信頼できる公的機関が発行するからこそ、他人もそれを信用できるんだ。
証明書チェーン
実際の運用では、ブラウザが直接信頼している「ルート認証局」が、末端のサーバー証明書に直接署名することはほとんどありません。多くの場合、ルート認証局→中間認証局→サーバー証明書、という段階を踏んで署名の連鎖がつながっており、これを「証明書チェーン」と呼びます。
認証局
認証局
証明書
この連鎖のどこか一つでも欠けていたり、有効期限が切れていたりすると、ブラウザは警告画面を表示します。
ぽち先生のヒント「紹介の連鎖」に例えると分かりやすいよ。直接は知らない人でも、信頼している友人(ルート認証局)が知人(中間認証局)を紹介し、その知人がさらに別の人(サーバー)を紹介してくれれば、間接的に信頼できるよね。
まとめ
「プロトコル」は、機器同士がやり取りするための共通ルールです。HTTPとHTTPSの違いは通信が暗号化されているかどうかで、現在は基本的にHTTPSで実装するのが標準です。HTTPSの安全性は、SSL/TLSという仕組みが、公開鍵・秘密鍵による暗号化と、認証局が発行するサーバー証明書、そしてその信頼をつなぐ証明書チェーンを組み合わせることで実現されています。
関連トピック: