ねむみの極み

公開鍵暗号方式を図解してみた



今回は、情報処理試験で必ず問われる公開鍵暗号方式とその仕組みを使った認証技術について、図解したものを紹介します。

※この記事は、私が試験に向けて勉強する中で、複雑で覚えにくいなぁと思っていたものを分かりやすくまとめてみたものです。Twitterで公開したら、有識者の方からいくつかご指摘もいただきました。それらを反映させてから載せていますが、それでも「試験対策としてはOKだが、実務では違う」との声もいただいています。その点をふまえて読んでいただけたらと思います。

基本の公開鍵暗号方式

共通鍵暗号方式が「一つの鍵」を利用したものであるのに対し、公開鍵暗号方式では対になる公開鍵秘密鍵を使用します。

受信者は、名前の通り自分の秘密鍵は秘密にしておき、公開鍵を公開します。送信者は、公開されている鍵を利用して送信内容を暗号化します。

暗号化された内容を復号できる鍵は受信者しか持っていないので、内容を誰にも見られずに通信することが可能になります。

公開鍵暗号方式を使った認証

上記の公開鍵暗号方式を応用すれば、「このメッセージを送ってきたのは本当にAさんである」ことを確かめられるようになります。

Aさんは、自分の秘密鍵で送信内容を暗号化します。
それを復号できるのはAさんの公開鍵だけなので、Aさんの公開鍵で復号できた=送信者は確かにAさんだ、となります。

送信内容の改ざんを検知できるメッセージダイジェスト

認証方法を応用すれば、送られてきたメッセージが改ざんされていないかどうかも確かめられます。
Aさんは本文だけでなく、ハッシュ関数を使って本文から作成したメッセージダイジェストも合わせて暗号化して送信します。

ハッシュ関数とは、簡単に言うと文字列をあるルールに従って別の文字列に変換する仕組みです。
例えば「文字をあいうえお順で一つ後ろにずらす」というルールだと、「おはよう」は「かひわえ」になるといった具合です。
もちろんこんな簡単なルールだとセキュリティも何もないので、実際はもっと複雑です。

本文とメッセージダイジェストを受け取った受信者は、Aさんの公開鍵で本文とメッセージダイジェストを復号します。
さらに、Aさんが使ったのと同じハッシュ関数を使って、本文からメッセージダイジェストを作ります。
復号したメッセージダイジェストと、新たに作ったメッセージダイジェストが一致すれば、本文は改ざんされていないということが分かります。

公開鍵の正当性を証明する仕組み

公開鍵の仕組みを使えば、送信者が本当にAさんであることや、送信内容が改ざんされていないことが確かめられました。

しかし、出回っている「Aさんの公開鍵」が、悪い人が作った偽物だったらどうしましょう。
本当はAさんの鍵じゃないのに、「これはAさんの鍵です」といって出回っていたら。元も子もないですね。

そのために、「これは本当にAさんの鍵ですよ」というのを証明してくれる認証局という機関があります。

公開鍵を公開したい人は、認証局に免許証などの本人確認書類を添えて申請すると、認証局が証明書を発行してくれるという仕組みです。

出回っている鍵が本当にAさんのものか気になった人は、認証局に証明書が失効していないかどうかを問い合わせます。問い合わせの結果、証明書が有効であれば本当にAさんのものだと証明されたことになります。

まとめ

最後までお読みいただきありがとうございました。この記事が、試験勉強に少しでもお役に立てたら幸いです。