HTTPSの圧倒的防御力(セキュリティ)をイラストで紹介します
前提知識:HTTPと通信プロトコルについて
HTTPとはホームページ(Webブラウザを起動して最初に表示されるページ)を見るときの使うルールの1つ。
ホームページのファイルとかを受け渡しするときに使うルールです。
これが俗にいう通信プロトコルです。○○通信をするときは××なルールに従ってやり取りしようねという事。プロトコルを日本人に例えると「会話する時は日本語使いましょう」みたいな感じ。いきなり宇宙語で話されても99%の人が理解できないですよね?会話1つとってもルールが自然と出来上がるものです。
HTTPSとは?
HTTP over SSL/TLSの略。HTTPで送受信するデータを暗号化しましょうというルールを追加したもの。これにより悪い人にデータを見られても悪用されにくい
HTTPSの3つのバリア
盗聴防止
悪い人に通信のデータを見られてもデータを暗号化しているので比較的安心!
改ざん防止
個人情報のなどを勝手に変えられないようにメッセージダイジェストというのが存在します。これはあるデータを送信する時は下記の2つをwebサーバーに送ります。
①データ本体
②データの一部を切り取った値(ハッシュ値)
データの改ざんを行った場合、①が変更される。
受け取りのwebサーバーは①と②が違う!と判断してデータ改ざんされたと判明します。
なりすまし防止
ドメイン(ネットの住所)の使用権があることを証明すること。 ドメインについてはこちらをご覧ください。 この通信先のサーバが正当な所有者のものであることを保証するものをSSLサーバ証明書といいます。ざっくりとした言い方をすると
自分は怪しいものではないです。ほらこれが身分証(SSLサーバ証明書を見せる)
といった感じ。
HTTPSのやり取り
Webブラウザとwebサーバーに置いていきなりHPPTSの通信が始まる訳ではない。
HTTPSの通信を開始するのに下記の4フェーズが存在します。
1.暗号化の決定
暗号化する方法は多数存在するのでwebブラウザとwebサーバーの両方が利用可能な暗号方式を決める。この段階では主に下記の2つを決めます。
- HTTPSで利用するSSLまたはTLS(インターネット上の通信を暗号化する仕組み)を決める
- バージョンや改ざん防止に利用されるメッセージダイジェスト(データの一部)の方式を決める
2.本人確認
webブラウザが見ようとしているページのwebサーバー(相手)が本当に正しい存在なのか確認するフェイズ。
証明方法はSSLサーバー証明書により確認。正しい存在か確認できない場合はwebブラウザに警告表示されます。
3.鍵の交換
WebサーバからSSLサーバー証明書を受け取ったwebブラウザは、自分のやり取りしているサーバが本物を確認します。確認して本物だった場合それぞれを暗号化します。そしてそれが暗号化してる限り誰も読めません。
Webサーバとwebブラウザはデータを暗号化したり解除したりする鍵を持っているのでそれを交換します。そうするとお互いは相手のデータを暗号を解いたり、再び暗号化できるようになります。
4.最終確認
お互いに暗号の方法に問題ないか確認します。これでOKならHTTPSによる暗号化通信が始まります。
Discussion