初めに
今回は下記お悩みがある方向けの記事になります。
ちなみに、実際に電子証明書の1種にサーバー証明書があります。下記記事ではサーバー証明書について初心者でもできるようにハンズオン形式で記事を書いていますので、合わせて読んでいただくと理解が深まると思います!
PKI(公開鍵基盤)とは
まず最初に理解すべき仕組みがPKIになります。
PKIは以下の略になります。
PKI…Public Key Infrastructure
日本語では、公開鍵基盤と言います。。。日本語でも英語でも物々しい言い方ですよね。(´•ω•`; )
これは、通信の相手が本物なのかを社会的に信頼のある第三者に証明が証明する仕組みになります。
PKIの中で、信頼できる第三者が証明局(CA)になります。
下記イラストがPKIのイメージになります。
PKIは身分証明のようなもの
少し強引なたとえかもしれませんが、PKIを例を某テーマパークを用いて説明します。
あなたは某テーマパークに入園する前の受付スタッフです。
入園する前に、来場者が本当に本人なのか身分証明書を提示してもらって本人確認を行いますよね。
身分証明書に使えるものは、パスポートや運転免許証といった限られています。どっかの漫画喫茶のメンバーズカードではだめです。
それはなぜか?一言で言えば、発行先が社会的に信用されている組織かどうかで決まるからです。
免許証を発行できるのは、公安委員会だけですし、パスポートを発行できるのは国のみですよね。
PKIは上記やり取りと共通している部分があります。
PKIも同じで、信頼できる第三者が発行する証明書を用いることで、自分自身、もしくは通信先の相手が本物なのかを証明する仕組みになります。
証明書(CA)とは
証明局とは、電子証明書を発行できる信頼された機関のことです。
さっきのイラストを用いると、赤点線枠の部分が該当します。
「(#^ω^)おい。てめぇのブログは初心者向けじぇねぇのかよ」とお怒りの方。一旦、ブラウザバックしようとするそのマウスから手を放してください。
電子証明書と機関の説明を軽く下記に記載しておきます。
機関…ある目的を達成する為に設けた組織
電子証明書…インターネットを介したやり取りを行う際に本人を保証するデータ
要約すると、社会的に信用のある第三者が認めた者に送るデジタルな証明書が、電子証明書です。
電子証明書とは
電子証明書は、インターネットの世界において自分自身の存在(身元)を証明するパスポートのようなものです。
現実世界に比べ、ネットの世界は簡単になりすましが行えます。そこでなりすまし防止として、電子証明書の仕組みを用いて身元を証明する仕組みが存在します。
現実世界における運転免許証のようなもの
電子証明書は、現実世界のようにモノに触れられるわけではないので、イメージが付きづらいと思います。そこでたとえ話を用いて説明します。
皆さんも、レンタカーを借りるときや施設に入る際の身分証明する際に運転免許証を使ったことがあると思います。
まさに電子証明書も同じような仕組みで成り立っています。
運転免許証は、各都道府県の公安委員会発行します。
電子証明書は、証明局(CA)が発行します。
(例)電子証明書
皆さんが海外に行くときに必要になる証明書。パスポートがありますね。
パスポートは国が認めた「あなた」の身分証明書になります。これがあることで、海外に行った際にもあなたの身元を証明することが可能になります。
インターネットの世界でも、電子証明書があればPC自体の身元を証明することが可能になります。
簡単解説:HTTPS通信のしくみ
以上の説明を踏まえwebブラウザーとwebサーバー間の暗号化通信を行うHTTPS通信について解説していきたいと思います。
HTTPS通信の登場人物は2人です。(人ではないですが。。)
・クライアント
・サーバー
クライアントは、皆さんが普段使うPCを指します。
サーバーは皆さんからのリクエストに答えるPCを指します。
サーバー証明書 & 公開鍵送付
1枚のイラストでまとめると以下のようになります。
例えば、あなたが暗号化された通信を用いて特定のサーバーにアクセスしたいとします。
するとPC間では下記のやり取りが行われます。
—通信のやり取り—
①クライアントからサーバーに対してHTTPSリクエストがいく。
リクエスト内容:私とあなた(サーバー)の間だけで分かる通信(やり取り)を行いたいです。
②サーバーからサーバー証明書とサーバーの公開鍵が送られてくる。
・サーバー証明書:サーバー自身が本物であると証明してくれる証明書
・データを暗号化してくれる鍵
※厳密に言えば、サーバー証明書の中にwebサーバーの公開鍵が入っています。
ここで新しいワードがでてきましたね。サーバー証明書と暗号化、それぞれ解説していきます。
サーバー証明書とは
サーバー証明書とは、接続先のサーバーが本物なのかを保証する証明書になります。
暗号化通信を始める際に接続先がそもそも偽造されていたらなんの意味もないですよね。
その為、最初の暗号化通信をする前に、接続先が正しいのかを証明書を持ちいて確認する必要があります。詳細は別記事で解説しようと思います。
暗号化とは
一言で言えば、下記暗号化は下記の説明になります。ついでに復号化もセットで解説します。
暗号化…特定の人しか分からないようにデータをぐちゃぐちゃにすること
復号…ぐちゃぐちゃのデータをもとに戻すこと
では、どうやってデータを暗号化したり、復号化したりするのでしょうか。
インターネットの世界では「鍵」を用いてデータの保護を行います。詳しいお話は別記事でご紹介しようと思いますが、簡単に説明してしまうと2種類あります。
・共通鍵暗号方式
:同じ鍵を用いて暗号化と復号化を行う方式
・公開鍵暗号方式
:暗号化と復号化に別々の鍵を用いる方式
ポイントは、暗号化と復号化に使う鍵を分けるか否かです。
クライアント → サーバーへの共通鍵送付
話をHTTPS通信に戻しましょう。
—通信のやり取り—
③クライアントがサーバーから送付された証明書が本物か確認する
どうやって確認するのか細かい話をしたいのですが、まだきちんと理解しきれていないため、割愛します。
今回は送付された証明書が正のモノとして扱います。
④クライアントでHTTPS通信に使う共通鍵を生成&サーバーの公開鍵で暗号化する
共通鍵は、先ほど説明したように
暗号化と復号を同じ鍵で行う暗号化方式になります。
サーバーにそのまま渡すのは通信を傍受された際に鍵が第三者に知られてしまいます。
そこでサーバーの公開鍵を使ってクライアントの共通鍵を暗号化します。
⑤暗号化された共通鍵をサーバーに送付する
暗号化された共通鍵を復号できるのは、サーバーの秘密鍵を持ったwebサーバー自身になります。
クライアントで暗号化された共通鍵をサーバーの秘密鍵で復号することで、クライアント、サーバーそれぞれが安全に共通鍵を持つことができます。
クライアント~サーバー間でのHTTPS通信
これが最後のステップです。
⑥クライアントの共通鍵を使って暗号化通信を開始する(HTTPS通信)
最後はめちゃ簡単です。
クライアント、サーバーがそれぞれ共通鍵を誰にも知られることなく持つことができたため、通信をする際はこの共通鍵を使って暗号化、復号を行い安全にデータのやりとりを行います。
ここまでがHTTPS通信が確立するまでの流れになります!
最後に
今回は証明局、電子証明書の説明から始まってHTTPS通信が行われるまでの流れを解説したカロリーの高い記事になりました。(笑)
色々説明しようとして、ちょいちょい漏れている部分や間違っている部分があると思います。「ここまちがってるよ!」と気づいた有識者の方、優しく教えて頂けると嬉しいです。
自分自身、サーバー証明書の大枠は理解できたので、これからは証明局やサーバー証明書をどのようにしてチェックするのかなど、細かい知識も吸収して記事を通して皆さんに還元できたらなと思ってます!
ではまた!
コメント