💪🏻好きな筋トレ種目は、スミスマシンのインクラインベンチプレスですどうも平山です💪🏻
皆様はURLにあるhttpとhttpsの違いがなにかご存じでしょうか?
エンジニアをやっている方ならピンとくるかもしれませんが、エンジニアになりたての方は「なんとなく知ってるけど、具体的な仕組みは説明できない…🤔」ということも多いのではないかと思います。
そこで今回は、HTTPとHTTPSの違いを初心者にも分かりやすく解説していきます!🔥
そもそもHTTPとは?
まずHTTPってなんやねんという方のために、説明すると
HTTP(Hyper Text Transfer Protocol)とは、Webブラウザ(ユーザ、クライアント)とWebサーバの間で情報をやりとりするために使われる通信規則(プロトコル)の一つ。
URLの初めの部分で「http://~~」と記載されている。
Webサイトを開くとき、WebブラウザとWebサーバーがこんなやりとりをしています👇
1️⃣ ブラウザがサーバーに「このサイトのデータをください!」とリクエスト(HTTPリクエスト)
2️⃣ サーバーが「OK!これがそのデータ!」とレスポンス(HTTPレスポンス)を返す
3️⃣ ブラウザが受け取ったデータを元に、Webサイトを表示する
このやりとりのおかげで、私たちは普段何気なくWebサイトを閲覧できています!
しかし…HTTPには重大な問題があります
⚠️ HTTPの弱点
HTTPの通信は 暗号化されていない ため、
攻撃者が途中でデータを盗み見たり、改ざんしたりできるリスクがある んです!
たとえば…
- Wi-Fiを乗っ取られ、個人情報やパスワードが漏洩💀
- 通信内容を書き換えられ、フィッシングサイトに誘導される⚠️
- クレジットカード情報が盗まれる💳💸
こういったリスクを防ぐために登場したのが、次に説明する HTTPS です!
🔒 HTTPSとは?
HTTPSとは、「Hypertext Transfer Protocol Secure(ハイパーテキスト・トランスファー・プロトコル・セキュア)」の略で、SSL/TLS暗号化通信によってセキュリティを高めたHTTP。
✅ HTTPSのメリット
- 通信が暗号化され、安全になる 🔐
→ クレジットカード情報やパスワードなどの大事なデータを守れる! - データの改ざんを防げる 🛡️
→ 通信途中で勝手に内容を書き換えられるリスクを回避! - GoogleのSEO的にも有利 📈
→ Googleは「HTTPSのサイトを検索結果で優遇する」と明言している! - フィッシング詐欺対策 🚨
→ Chromeなどのブラウザでは「HTTPのサイト=安全ではない」と警告が出る!
つまり、HTTPSを使うことで「盗聴」「改ざん」「なりすまし」から通信を守れるんです!
🔑 SSL/TLSの仕組み
ここで余談としてSSL/TLSのアルゴリズムについても軽く説明いたします。
SSL/TLS暗号化通信は公開鍵暗号方式と共通鍵暗号方式の二つを採用しているハイブリット暗号方式を採用しているのが特徴です。
💡 ざっくり言うと…
- 最初の鍵交換 → 公開鍵暗号方式(安全だけど遅い)
- その後のデータ通信 → 共通鍵暗号方式(速くて効率的)
この両方の良い所を取ったのがハイブリット暗号方式になります!
🔁 HTTPSの通信の流れ
1️⃣ブラウザからサーバへSSL/TLS通信のリクエストを送り「今から暗号化通信始めるよ~」とリクエストを送ります
2️⃣ 公開鍵暗号方式でサーバの公開鍵と認証局から発行されたSSLサーバ証明書の二つをクライアントに送付し、クライアント側ではブラウザに事前に搭載されているルート証明書でSSLサーバ証明書を検証し、サーバーのSSL証明書が本物か確認します。
SSLサーバ証明書:信頼できる認証局(CA)が発行した「このサーバーは本物ですよ!」という証明書
ルート証明書:認証局が発行したSSLサーバ証明書であることを確認するための証明書
3️⃣クライアント側でランダムに共通鍵を生成しその共通鍵を、サーバから送られた公開鍵を用いて暗号化してサーバに送ります。これのおかげで盗聴されたとしても中身が分からない状態になっております。
4️⃣サーバーが秘密鍵を使って、暗号化されていた共通鍵を復号化します。
これでサーバーとクライアントが同じ共通鍵を持てたので、以降の通信は共通鍵暗号方式で暗号化して安全にやりとりします。
以上がHTTPS及びSSL/TLS通信の概要となります!
今回の内容は、「応用情報技術者試験」でもよく出題される知識です!
興味がある方は、応用情報の試験勉強をしてみるのもオススメです!📚
また、実際にHTTPS化する方法(Let's Encryptを使った無料SSL証明書の導入など)についても調べてみると、より実践的な知識が身につくはず!💡