はじめに
最近技術書を毎日30分以上読むようにしているのですが、記事としてアウトプットしないと、自分の中で定着しない気がしたので、読んで学んだことを共有していきたいと思います。
今回は『スラスラわかるネットワーク&TCP/IPのきほん』のChapter06 セキュリティ章について、ざっくりと読んだ内容をお伝えします。
突然ですが、
インターネットを使っていて、「この通信って本当に安全なのかな?」と考えたことはありますか?
Webサイトを見るときに表示される HTTPS。
なんとなく「鍵マークがついていれば安心」と思っていたのですが、TCP/IPのきほん本を読んでみると、
「あ、思っていたより守備範囲せまいな…」
と感じる部分がありました。
この本では、
- HTTPSは何を守っているのか
- 暗号化って何をしているのか
- VPNはどんな場面で使われるのか
といった ネットワークセキュリティの基本が、かなり噛み砕いて説明されています。
この記事では、その中でも
「通信のセキュリティって、結局どういう考え方なの?」
という部分を、整理してまとめました。
専門用語はできるだけあとから説明し、「まず全体像をつかむ」ことを目的にしています。
同じように、
- ネットワークが苦手
- HTTPSやVPNを雰囲気で使っている
- TCP/IPの本を読んだけど頭がこんがらがった
という方の参考になればうれしいです。
通信にはどんな危険があるのか?
まず前提として知っておきたいのは、インターネット上の通信は、何もしなければ基本的に無防備だということです。
たとえば、あなたがWebサイトにアクセスしたとき、
- ログインIDやパスワードを入力する
- フォームに個人情報を書く
- サーバーからデータを受け取る
こうしたやりとりはすべて「通信」としてネットワークを流れています。
もしこの通信がそのまま流れていたら、途中にいる第三者に見られたり、書き換えられたり、なりすまされたりする可能性があります。
本の中では、主に次のようなリスクが紹介されていました。
📡 盗聴(データを見られる)
盗聴とは、通信の中身を第三者にのぞき見されることです。
もし通信が暗号化されていなければ、
- 入力したパスワード
- メールの内容
- フォームに書いた個人情報
などが、そのまま読めてしまいます。
「ネットワークを流れるデータは、封筒に入っていないハガキのようなもの」
と考えるとイメージしやすいかもしれません。
🕵️ なりすまし(相手が本物とは限らない)
次に厄介なのがなりすましです。
これは、
- 本物のWebサイトのふりをした偽サイト
- 本物のサーバーのふりをした攻撃者
と通信してしまうケースです。
見た目がそっくりだと、「本物だと思って情報を送ってしまう」ことも起こりえます。
つまり、「ちゃんと相手と通信しているつもりだったけど、実は別の相手だった」
という状態です。
✍️ 改ざん(途中で書き換えられる)
通信の途中で
- データを書き換えられる
- 意図しない内容に差し替えられる
といった改ざんのリスクもあります。
たとえば、
- 送った内容と違うデータが届く
- 正常なデータに見えて、実は一部だけ書き換えられている
といったことが起きても、仕組みがなければ気づくことができません。
🤔 「じゃあ、どうすればいいの?」
ここまで読むと、
- 見られる
- だまされる
- 書き換えられる
と、かなり怖く感じるかもしれません。
そこで登場するのが、
- 暗号化(見られないようにする)
- 本人確認(本物かどうか確かめる)
- 改ざん検知(途中で変わっていないか確認する)
といったセキュリティの仕組みです。
HTTPSは何を守っていて、何を守っていないのか
Webサイトを見ていると、URLの先頭が https:// になっていて、ブラウザに「🔒 鍵マーク」が表示されていることがあります。
これを見ると、
- 「HTTPSだから安全」
- 「鍵マークがあるから安心」
と思いがちですが、HTTPSが守っているのは“すべて”ではありません。
まずは、HTTPSが何をしてくれているのかから見ていきます。
🔒 HTTPSが守ってくれていること
HTTPSは、WebブラウザとWebサーバーの間の通信を守る仕組みです。
具体的には、次の3つを実現しています。
① 通信内容を暗号化する(盗聴対策)
HTTPSでは、通信の中身が暗号化されて送受信されます。
そのため、途中で通信をのぞき見されても、
- パスワード
- フォームの入力内容
- 送受信しているデータ
をそのまま読むことはできません。
👉つまり、「見られないようにする」役割ですね。
② 相手が本物かどうか確認する(なりすまし対策)
HTTPSでは、サーバーが電子証明書を使って「自分は本物のサーバーです」と証明します。
ブラウザはその証明書をチェックして、
- 信頼できる相手か?
- なりすましではないか?
を判断しています。
👉 これは、「相手が本物か確かめる」役割ですね。
③ データが途中で改ざんされていないか確認する
HTTPSでは、
- 送ったデータと
- 受け取ったデータ
が同じであることも確認されます。
もし途中で書き換えられていれば、「おかしい」と検知できる仕組みになっています。
👉 これは、「途中で変わっていないか確認する」役割です。
ここまで見ると、
「え、じゃあHTTPSって完璧じゃない?」
と思うかもしれません。
でも、ここが大事なポイントです。
⚠️ HTTPSが守っていないこと
HTTPSはWeb用のプロトコルです。
つまり、守っているのはあくまで「Webブラウザ ⇄ Webサーバー間の通信」だけです。
たとえば、
- 電子メール(SMTP)
- ファイル転送(FTP)
- サーバー管理(SSH)
- 社内ネットワーク間の通信
これらはHTTPSの対象外です。
つまり、HTTPSが使われているからといって、すべての通信が自動的に安全になるわけではないということ。
🌐 じゃあWeb以外の通信はどう守るの?
ここで出てくる選択肢の一つがVPNです。
VPNは、
- 特定の区間の通信を
- 丸ごと暗号化する
という考え方です。
HTTPSが「Web通信1本1本を守る」仕組みだとすると、
VPNは「この区間を通る通信は全部守る」仕組みと考えるとイメージしやすいです。
ただしVPNにも、
- 守られる範囲が決まっている
- VPN外の通信は対象外
といった注意点があります。
🧠 ここで押さえておきたい考え方
HTTPSについて、最低限覚えておきたいのはこの3点です👇
- HTTPSはWeb通信を守る仕組み
- 暗号化・本人確認・改ざん検知をしている
- でも 守備範囲は限定的
だからこそ、「どの通信を、どの技術で守るのか?」
を考える必要があるということですね。
1記事が長くなってしまうので、本記事では「HTTPSについて」ざっくりとした整理までにさせていただきます。
次回の記事では、下記内容に言及して紹介できればと思います。
- 暗号化の考え方(共通鍵・公開鍵をざっくり)
- 電子証明書・署名って何者?
- VPNはどんなときに使うのか
- 結局、どう考えればいいのか
自分の読書記録的な記事ですが、プログラミング始めたばかりで、セキュリティがよくわからない方のお役に立てれば幸いです。
追記:
合計4回の記事にわけて執筆しました。
続きは以下にて執筆しています。