作記録

記憶代わり

公開鍵(public key)と秘密鍵(private key)の仕組みについて

公開鍵と秘密鍵の仕組みの面白さがようやく分かったので抽象度を上げてメモする。

前提定義

  • 公開鍵と秘密鍵...公開鍵と秘密鍵は、1対1の関係で紐づけられる。
  • 公開鍵(public key)...公開鍵で暗号化したモノは、紐づけられた秘密鍵でのみ復号することが出来る。また紐づけられた1つの公開鍵は複数の人が持つことを前提としている。
  • 秘密鍵(private key)...秘密鍵で暗号化したモノは、紐づけられた公開鍵でのみ復号することが出来る。また秘密鍵は1人だけが持つことを前提としている。

前提

さくらさん、おいちゃん、おばちゃんは、共通の公開鍵を持つ。
寅さんは、1つの秘密鍵を持つ。
ひろしさん、タコ社長は、鍵を持たない。

公開鍵を使った暗号化

さくらさんが、公開鍵で暗号化した手紙の文章は、寅さんしか読むことが出来ない。
おいちゃん、おばちゃん、ひろしさん、タコ社長は手紙を受け取っても文章を読むことが出来ない。

一方で、寅さんは手紙の文章を読むことが出来ても、さくらさんが公開鍵で暗号化したものなのか、おいちゃん、おばちゃんが公開鍵で暗号化したものなのかは分からない。
なぜなら、さくらさん、おいちゃん、おばちゃんは共通の公開鍵を持つからである。

つまり、公開鍵による暗号化は文章の内容を1人だけに読ませることが出来ることに特化していると言える。
しかし、誰が暗号化したのかまでは分からない。つまり書いた人を特定することは出来ない。

秘密鍵を使った暗号化

寅さんが、秘密鍵で暗号化した手紙の文章は、さくらさん、おいちゃん、おばちゃんしか読むことが出来ない。
ひろしさん、タコ社長は手紙を受け取っても文章を読むことが出来ない。

さくらさん、おいちゃん、おばちゃんは寅さんが秘密鍵で暗号化した手紙の文章を公開鍵で復号して読むことが出来れば、それは寅さんが暗号化したもの = 寅さんが書いた手紙であるということが分かる。
なぜなら、秘密鍵で暗号化したモノは、1対1で紐づけられた公開鍵でのみ復号すること出来るが、その秘密鍵は1人しか持っていないからである。

つまり、秘密鍵による暗号化は、文章を誰が書いたのかを特定することに特化していると言える。
しかし、文章の内容は公開鍵を持っている人であれば読むことが出来るため、文章の内容の開示を1人だけに特定することは出来ない。

誰が書いたのかを特定するという事は、誰であるかを証明する事であり、これを 認証 と言う。
よって、秘密鍵により暗号化して、公開鍵で復号することにより誰であるかを特定するという方法で 認証 されるユースケースがある。
その例が SSHの公開鍵認証 である。

参考

https://milestone-of-se.nesuke.com/sv-advanced/digicert/public-private-key/