先日、我がブログもHTTPS化した。しばらくブログサーバ構築以来、インフラの作業を行っていなかった。漸く、よりセキュアなブログサーバになったというわけですな。
そもそも、ITとセキュリティの歴史はとても深い。IT(Information Technology)は暗号の歴史と言っても過言ではない。暗号の数だけ戦いがあり、血で血が洗われるような赤黒い歴史なのだ。
暗号とセキュリティの関係は、切っても切り離せない。解読難度が高い暗号であれば、情報の安全が保証されるからだ。つまり暗号の知識を深めることは、自分の情報(パスワードや個人情報)の防御力を高めることにもつながる。
情報が一度世に漏れてしまえば、「私は知らないし、悪くない」と、どれだけ叫んでも手遅れなのだ。
今回は、その中でもHTTPS・SSL(TLS)というものに関して僕自身の知識を深めるために記事を書く。
まず、この話から始まるかな。今、当記事を開いている現状から説明しようか。まずはこのイメージを持ってほしい。
あなたが今この記事を、スマートフォンないしパソコンで開いている。仮にデバイスをiPhone。ブラウザをSafariとしようか。
あなたがやったことは、iPhoneのSafariを用いて、僕が構築したサーバにアクセスしたということである。そして、サーバの任意の場所に設置してある記事のデータを取得し、あなたのデバイスに綺麗に記事が表示されている。
大まかな流れをまとめると、こんなかんじ。
上記の話で大事なことは2つある。
次にもう少し詳しく説明しよう。
ブラウザ(Safari)とサーバが通信するための方法というかお約束ごとが、HTTPプロトコルと呼ばれるものだ。
そしてブラウザが記事データをサーバに要求する行為は、HTTPプロトコルの約束事リストに載っているため、通信できている。
簡単に例をあげると、僕はタリ○ズでコーヒーを買いたい。できればクレジットカードで。でも、このコーヒーショップはSuicaなどの交通系電子マネーか、現金じゃないとコーヒーを渡すことができない。
このように2者間での決まりごとが存在する。もちろん、このお約束ごとを知る必要はまったくない。
さて、次にHTTPとHTTPSの違いを説明しよう。
HTTPとはHypertext Transfer Protocolの頭文字を抜き取って名付けられたプロトコルだ。
対してHTTPSとはHypertext Transfer Protocol Secureだ。Secureがついたことが違いだ。
技術的な話をすると、SSL/TLSという暗号化されたパイプの中で、HTTPプロトコルを利用する通信方法だ。またSSLやTLSは、暗号化されたパイプを実現するためのプロトコルの1つである。
要はこんなかんじ。
このパイプが暗号化されているからこそ、HTTP通信の安全が保証されている。では、どんなときに安全が保証されている必要があるのか説明しよう。
結論から申し上げると、自分の情報を打ち込んで送信するときですな。
ぶっちゃけ、HTTP通信でブログの記事データなどを取得するだけなら、要求先の情報を必要な分だけ取得するだけだからほぼほぼ問題ないだろう。
しかし、自分の情報を打ち込んで送信する場合は話が変わってくる。残念ながら、HTTP通信は安全が保証されていない。その打ち込んだ情報が第三者に覗かれている可能性が往々にしてある。
もう一度申し上げるが、自分の情報は漏れてしまっては意味がない。異なる時代において漏洩した暗号の内容によっては、一国の女王でさえ死刑台で首を切られてしまうのだ。
僕もそうだったが、HTTPとHTTPSや暗号の技術に関しては無知だった。
「セキュリティが万全だから大丈夫」って言葉にしか縋るものしかなく、何が危険で、何が安全なのかを知ろうとする努力を怠っていた。
確かに、セキュリティに関する書籍や情報は専門的な説明がつらつらと書かれているものも少なくない。だからこそ僕は、エンジニアとして知って欲しい情報を発信する。
食うも食われるも自分の行動次第だ。自分の身は自分で守ろうぜ。
久々に専門的な知識の復習。現代のネット社会を支える根幹の技術について復習した。自分自身が一番復習になったから今後も継続的に学習していく。
明日も更新するから、待っててちょ。
Adios.