学習アウトプット:HTTP通信の危険性
どうもyotaです。もし宝くじで10億円当たったら、どのように運用していくか、本気で考え始めたら寝られなくなりました。妄想とはいえ、本気で考えると何事も面白いですね。最終的に不動産と株式を中心に投資して、不労所得で生活していくところまでたどり着きました。妄想ですけど。
はい、ということで、すっかり定番?になりました学習アウトプットです!
今回は「HTTP通信の危険性」です!
HTTP通信とは
はい、ということで今回は「HTTP通信の危険性」について書いていきます。
僕はWebセキュリティ会社に勤めていることもあり、ITおよびセキュリティ関連の情報に接することがとても多いです。
今日は仕事で「HTTP通信って危険だよ」ということに触れたので、そのことについて書いていきます。
危険性について書く前に、まずは「HTTP通信」とは何ぞや? というところから書いていきます。例のごとくネットで検索しますと……、
HTTP通信とはブラウザとWebサーバー間で行なう通信のことを指します。ブラウザからWebサーバーに向けてTCPというプロトコルを使って接続を行い、接続が成功したらブラウザは「こういう情報くださいな☆」というリクエストを発行します。Webサーバー側は発行されたリクエストを受け取り、サーバー側で検索を行い、要求された情報をかき集めてレスポンスとしてブラウザ側に情報を渡してあげる、ということをします。
引用:ぽんぽこ開発日記 より
とのことです。もう少し僕なりに解説していきます。
まずHTTPとは、Hyper Text Transfer Protocolの略です。
日本語に直すと、ハイパーテキスト(Hyper Text)を転送(Transfer)するプロトコル(Protocol)のことです。
は? って感じですよね。。すみません。
それぞれの用語について解説していきます。
・ハイパーテキスト(Hyper Text)ですが、これはざっくりWebサイトやWebページのことを指します。もう少し詳細に言うと、ハイパーテキストとは「文書作成システム」のことを言います。WebサイトやWebページというのは、ハイパーテキストを使って作られています。
このnoteもそうですし、Google先生で検索して出てきたWebサイトなどもみんなハイパーテキストです。なので、ハイパーテキストが出てきたら、WebサイトやWebページのことを言ってるんだなという感じです。
※厳密には違いますし、他にも色々な要素は関わってきますが、ざっくりいきます。
・転送(Transfer)はそのままで、何かを別の場所へ送るのが転送です。HTTPでは、ハイパーテキストを転送しています。
・最後がプロトコル(Protocol)です。これが一番分かりづらいんですよね。
プロトコルというのは、通信する上での規約や取り決めのことを言います。
ですが、それだといまいち分かりづらいですよね。もう少しざっくり解説していきます。
インターネット上では様々なデータがやり取りされています。Webサイトのデータやメール、何らかのファイルなど……。
それらはインターネット上で好き勝手に飛んでいるように見えて、実はちゃんと決められた通信経路=道を通っているんです。
WebページならHTTPという道、メールを送るならSMTPという道、などのようにです。
なので、プロトコルというのは、ざっくり通信経路=道と認識して頂くと分かりやすいかなと。で、やり取りするものの種類毎に色々な道(プロトコル)が用意されている、というところです。
ということで、ここまでの説明を踏まえて、HTTPという通信についてまとめると以下のような感じです。
WebサイトやWebページのデータをやり取りする通信経路がHTTP!
HTTPの危険性について
ここから本題の「HTTPの危険性」について書いていきます。
まず世の中には悪い人がたくさんいます(いきなりどうした?)。
インターネットも時代とともに便利になりましたが、それとともにネット上で悪さをする人やその方法もたくさん増えました。
ネット上の悪さには色々なものがありますが、その1つに通信の盗聴や傍受があります。要は通信内容を盗み見て、機密情報を不正に入手してやろう、というものです。
HTTPは、通信内容を盗み見られてしまう可能性があります。
それはなぜか? 単純な話で、守られていないからです。
例えるなら、HTTPは何の壁もない野ざらし状態の道です。壁も何もないので、外からその道を通っている人を見ようと思えば見れますよね。何を持っているのかとか、どんな顔なのかとか。
こう書くと「じゃあ、外から見られないように、壁とかで囲えばいいじゃん」という発想になりますよね。
まさにそうなんです。外から盗み見られないように、セキュリティを強化した道があるんです。それがHTTPSです。
SはSecure(安全な)の略です。いかにも安全そうです。HTTPSも、HTTPと同様にWebサイトやWebページをやり取りする道なのですが、その通信は暗号化されているため、外から内容を盗み見ようとしても分からないという状態になります。ゆえに安全なのです。
ここまでがHTTPの代表的な危険性とそれに対するHTTPSの有用性でした。
ですが、僕が今日アウトプットしたいのは次の内容なんです。
HTTPSはサイトの信頼性にも繋がる
これを書きたかったんです。ちょっとHTTPSについてネット検索した結果を見てみますね。
HTTPSで通信が行われている場合、アクセスしているWebサーバ上の資源(ファイルなど)を表すURL/URI(Webアドレス)の先頭部分(スキーム名)が、通常の(非暗号化)HTTPの場合の「http://」に代えて「https://」となっており、これを見れば暗号化されていることが確認できる。また、暗号化にはデジタル証明書が用いられるため、証明書の発行元(認証局)や、発行元に登録されたWebサーバ運営者の身元情報などを知ることができる。
引用:IT用語辞典 e-words より
これなんですよ!
【証明書の発行元(認証局)や、発行元に登録されたWebサーバ運営者の身元情報などを知ることができる。】
これがポイントなんです。つまりHTTPS通信しているサイトは、「ちゃんとしたところですよ」「信頼できるサイトですよ」と第三者に証明されているんですね。
では、第三者に証明されていると何が良いのかというと、僕達利用者にとって良いんですね。
世の中には悪いやつがいるというのは前述の通りで、その中にはフィッシングサイトと呼ばれる偽サイトを作るやつがいます。
すでに存在しているサイトとそっくりな偽サイトを作ることで、本物のサイトと勘違いした利用者が個人情報などを入力してしまいます。そうすると、その偽サイトを作った悪意のある人間に情報を取られてしまうというわけです。
しかし、HTTPSで通信をしているサイトだと、こういったフィッシングサイトからの被害を防ぐことができます。
HTTPSというのは第三者によって「このサイトは信頼できますよ」と証明されています。逆に言うと、フィッシングサイトのような偽サイトは、当然そんな信頼の証は得られません。
なので、偽サイトなどは必然的にHTTP通信となってしまいます。
そうなると、もし普通のサイトだとしてもHTTP通信のままだと、利用者はそのサイトが「本物のサイトなのか」もしくは「悪いやつが作った偽サイト」なのか判別がつきません。
なので、悪い奴が「お、このサイトHTTP通信やんけ。フィッシングサイト作ったろー」となって、偽サイトを作られてしまいます。
その結果、利用者がアクセスして個人情報が流出したり、詐欺被害に遭ってしまうと、本物のサイトの運営者に対して信用のダウンや最悪は損害賠償の請求などに発展する可能性もあります。
何が言いたいか、利用者とサイト運営者の目線からまとめます。
・利用者:HTTPS通信のサイトは、第三者に信頼性を証明されているサイトだから、安心してアクセスできる。
・サイトの運営者:HTTPS通信にすれば利用者を守り、自分のサイトが安全というアピールもできる。
HTTPSの通信の利点としてはこんなところですね。逆に言えば、利用者はHTTP通信のサイトにアクセスしないようにすることで、自分の情報を守ることができます。
ということで「HTTP通信は安全な通信ではないから気を付けた方が良いよ」ということです。まあ、HTTPS通信をしていたからといって、絶対安全というわけではありませんが。。
少なくとも、HTTP通信よりかは絶対安全です。
まとめ
後半はHTTPとHTTPSが乱立していて、分かりづらくすみません。
SはSecureのS。安全のSです。Sがついている方が安全ということです。
ちなみに、アクセスしたサイトがHTTPS通信かどうかは簡単に分かります。
URLの最初の「https://~」のところでhttpsとなっていれば、それはHTTPS通信です。
ということで、今回は僕の仕事にがっつり関わることについてアウトプットしました。
ざっくり解説や意味の解釈が違う部分があるかもしれませんが、明らかにおかしいのがあったら教えてください。僕が間違えて覚えていることになるので……。
はい、ではここまでお付き合い頂きありがとうございました。