※(外)は自分で作成していない記事
公開鍵暗号方式
-
公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと(外)
※★重要な引用:公開鍵と秘密鍵が「逆に使える」というのはRSAアルゴリズムがたまたま(まあまあ)そうなだけであって、そのような性質を持たない他の公開鍵暗号方式がたくさん存在する。
→これが理由でopenssl(linuxのコマンド)では秘密鍵暗号化→公開鍵復号化はサポートしていないのだと思われる。
ただ、RSA署名の検証は結局、公開鍵で復号したデータと原文を比較してやっているのだと思う(多分)。※要は暗号化のアルゴリズムによって検証の仕組みが違う(多分) -
私は公開鍵暗号方式と電子署名を理解できていなかったようです。(外)
※★重要な引用:公開鍵暗号における秘密鍵は「暗号文を復号」するためのもので、公開鍵は「平文を暗号化」するもの。
電子署名における秘密鍵は「平文を用いて署名」するためのもので、公開鍵は「署名が正しいか検証」するものでした。つまり役割的に全く別物。ただ公開する方を逆にすればいい。ということではありません。 -
公開鍵暗号と電子署名の基礎知識(外)
※秘密鍵からは公開鍵が簡単に作れる。なので相手に渡すのは公開鍵である必要がある。
公開鍵で暗号化→秘密鍵で復号。秘密鍵からは電子署名→公開鍵で検証。 -
OpenSSLコマンドによる公開鍵暗号、電子署名の方法(外)
※公開鍵と秘密鍵の生成&暗号化、復号の方法。秘密鍵での署名&公開鍵での検証 -
公開鍵と秘密鍵の関係(外)
※暗号化:公開鍵⇔秘密鍵(暗号化⇔復号)、署名:秘密鍵→公開鍵(署名→署名検証)
証明書
-
図解 X.509 証明書(外)
証明書の構造の話以外に、デジタル署名、証明書チェーンについて分かりやすく説明してある。
※証明書チェーン
サイトAの証明書="Aの公開鍵そのもの+Aの公開鍵の正当性の証明してくれているBの署名" になる。
で、Bの署名検証にBの公開鍵が必要になり、Bの証明書が必要になる(Cの署名が入っている)。
っていうのを繰り返し、ルート証明書(Dとする)までいくとDの証明書にはDの署名が入る。
Dの証明書はあらかじめブラウザ等に内蔵されているため、Dの証明書はセーフになる。
HTTPS
ポイント
ルート証明書の信頼性確認は、サーバ証明書のルート証明書がクライアント(例えばブラウザ)に登録されてるかどうか。
ルート証明書が信頼できたら、ルート証明書の中にある公開鍵を使って、ルート証明書から署名を受けた証明書を検証する。この流れで、受信したすべての証明書を検証する。
※心に留めておく↓
公開鍵暗号における秘密鍵は「暗号文を復号」するためのもので、公開鍵は「平文を暗号化」するもの。
電子署名における秘密鍵は「平文を用いて署名」するためのもので、公開鍵は「署名が正しいか検証」するもの。