感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

証明書の仕組みと、公開鍵暗号方式の仕組みを説明してみる。

<スポンサーリンク>

今日は業務で証明書をインストールしようとしていたんだけど、手こずったのが悔しかったので、「暗号技術入門 秘密の国のアリス」という本を買って軽く勉強してみた。
なんか、業務で関わることで曖昧な知識のまま進めるのは嫌だから、これを機に暗号技術の勉強も少しずつ進めたい。一気に完璧に理解する必要はない。少しずつでいいと思う。でも、わからないままにしないこと。
てゆうか、この辺は情報処理試験の勉強したときに触れたはずだけど、すっかり忘れてたw

証明書関連の用語

用語 説明
公開鍵証明書(public-key certificate; PKC) 公開鍵証明書には名前や所属、メールアドレスなどの個人情報やその人の公開が義が記載される。認証局によるデジタル署名が行われている。
認証局(certification authority;CA) 公開鍵の持ち主を証明して、デジタル署名を作成できる人や組織のこと。最も有名な認証局はベリサイン(Verisign.com)
公開鍵基盤(Public-key infrastructure) 公開鍵を効果的に運用するために定められた多くの規格や仕様の総称のこと。PKIと呼ばれる。
証明書破棄リスト(certificate revocation list) CRLと呼ばれ、利用者がプライベート鍵をなくしたり盗まれたりした場合に、認証局は証明書を破棄して無効にする。その破棄するときに作成するのが証明書破棄リスト。

証明書を利用する仕組み


1.まずは自分が鍵ペアを作成する。
秘密鍵はちゃんと保管しておく必要がある。

2.認証局に「この公開鍵は正しいですよ」と証明してもらう。
たとえば、ベリサインに登録すると、普通に電話がかかってきて色々と聞かれる。
何をしているかというと、認証局として、本人であるか確認しているのだ。

3.認証局が公開鍵に自分のプライベート鍵でデジタル署名をして、証明書を作成してくれる。
なんかブラウザでインポートする作業があったけど、それがデジタル署名をしてくれたものをインポートすることだったんだろうか。

4〜5.相手側は認証局のデジタル署名がついた公開鍵を手に入れる。
で、その公開鍵が正しいかどうかを検証するわけ。どうやって?認証局の公開鍵を使えばいい。

6.相手側は送りたいメッセージをもらった公開鍵(「自分」が送ったもの)で暗号化する。これを解けるのは、「自分」だけ。なので、公開鍵で暗号化されたメッセージを送ればいい。

じゃあ公開鍵暗号方式って何?

公開鍵暗号はpublic-key ryptographyといって、「暗号化の鍵」と「復号化の鍵」を分ける。
送信者は「暗号化の鍵」を使う。
受信者は「復号化の鍵」を必要とする。

で、ポイントなのは、盗聴する悪い奴がいたとして、こいつに盗られてはいけないのは、「復号化の鍵」である。
これを自分の手元に置いておいて、じっと隠しておけば、「暗号化の鍵」はいくら見られても構わない。

この見られても盗られても構わない「暗号化のための鍵」を公開鍵(public key)という。
誰に見られても構わない。何ならブログに載せてもいいってのがこの公開鍵。

逆に、絶対に見せてはいけないのが「復号化のための鍵」。名前はプライベート鍵とか、秘密鍵とかいう。private key.
公開鍵と秘密鍵は2本で対になっていて、公開鍵で暗号化した暗号文は、そのペアとなっている秘密鍵でなければ復号化できない。

公開鍵を使った通信の流れは図にするとこんな感じ。

絵が下手すぎる!
1.ボブが公開鍵と秘密鍵のペアを作る。ボブっていうかムーンをイメージした。
2.公開鍵をアリスに渡す。アリスっていうかLINEのクマをイメージしたんだけど。
3.クマが公開鍵を使ってメッセージを暗号化する。
4.暗号化したメッセージを送る。
※ここでメッセージをジェームス君にパクられても、ジェームス的には何がなんだかわからない。
 なぜかというと、ジェームスは復号化できないからだ。
5.暗号化されたメッセージを復号できるのは、ムーンだけ。
だから、ムーンだけがメッセージを読める。

読んだ本(参考文献)

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

感謝のプログラミング

今回で感謝のプログラミングは【459時間目】
10000時間まで、あと【9541時間】

昨日勉強したけど記事にしなかったJavaScriptの分も入れておいた。
絵がもっとうまくなりたい。