もじゃぶろぐ

記事を書いたり書かなかったりします。

公開鍵暗号化方式についてまとめてみた

友人に説明するためにまとめた文書をリファクタしたものです。

公開鍵暗号化方式とは?

秘密鍵と公開鍵の二対の鍵で成り立つ、暗号化と認証をするための技術。

秘密鍵 公開鍵
範囲 自分で保管(秘密にする) 人に渡す(公開する)

秘密鍵と暗号鍵は必ずペアになる機能を持っています。
それは、「暗号化する機能」と「復号する機能」です。
それぞれ、これ以外のことはできないようになっています。

ここで重要になるのが、「この鍵で暗号化されたものは、ペアの鍵でないと復号できない」ということです。

また、公開鍵から秘密鍵を割り出すことは事実上不可能なため管理を怠らない限りは作成した本人しか持っていないことになります。(とてつもない計算時間を要するため)

暗号化のために使う

この場合は以下の組み合わせになります。

秘密鍵 公開鍵
機能 復号する 暗号化する

実際の流れ

例えば、BさんがAさんに秘密の情報を送りたいとします。
この場合、Aさんの作成した秘密鍵/公開鍵を用いることになります。

f:id:s10akir:20171218111844p:plain 1. Aさんの公開鍵を使ってBさんが送りたい情報を暗号化します。
この時点で、もう暗号化された情報はAさんの秘密鍵でしか復号できません。 2. Aさんの秘密鍵はAさんが厳重に保管しているので、Aさん以外が持っていることはありえません。
ということは、Bさんが暗号化した情報はAさんにしか復号できないということです。
仮に盗聴されたとして、盗聴者はAさんの秘密鍵を持っていないので中身を知ることはできないため安全です。

認証のために使う

今度は暗号化のときと逆になります。

秘密鍵 公開鍵
機能 暗号化する 復号する

実際の流れ

Bさんが通信相手をAさん本人であると認証したいとします。 この場合も、Aさん本人の作成した秘密鍵 / 公開鍵を用いることになります。

f:id:s10akir:20171218111911p:plain 1. Aさんの秘密鍵を使ってAさんが情報を暗号化します。
秘密鍵で暗号化されたものを復号できるのはペアになる公開鍵だけなので、Aさんの公開鍵でなければなりません。 2. Aさんの公開鍵を使ってBさんが情報の復号を試みます。
復号できた場合、この情報はペアになる秘密鍵つまりAさんしか持っていないAさんの秘密鍵で暗号化されたことが確定するためAさん本人からの通信であることが証明できます。
復号できなかった場合、相手はAさんの秘密鍵で暗号化していないため、Aさんで無いほかの誰かということが確認できます。

利点

共通鍵暗号化方式に比べて、管理する必要のある鍵が少なくなります。

n人で相互に通信する場合の全鍵の所要数

公開鍵暗号化方式 共通鍵暗号化方式
n * 2 n(n - 1) / 2

欠点

公開鍵暗号化方式は、暗号化及び復号にかなり時間がかかってしまいます。

通信内容をすべて公開鍵暗号化方式で処理してしまうとレスポンスが悪くなってしまうので、その対策として公開鍵暗号化方式を使用して使い捨ての共通鍵を作るセッション鍵暗号化方式というものが存在します。

まとめ

SSL通信やsshのセキュア性などを理解するために必要となる重要な基礎知識なので再度学び直しました。
そのうち共通鍵暗号化方式やセッション鍵暗号化方式についても触れたいと思います。