Mímisbrunnr知恵の泉

← サイバーセキュリティ 一覧

🎓 レベル:標準 | 重要度:A(必須) 📎 前提:対称鍵暗号とハッシュ

要点(BLUF)

概念:鍵を2つに分ける発想

対称鍵暗号(対称鍵暗号とハッシュ)の弱点は、通信前に同じ鍵を安全に渡さねばならないことでした。公開鍵暗号はこれを鍵を2つに分けることで解きます。

公開鍵で施錠したものは、対の秘密鍵でしか開けられません。だから公開鍵は名刺のように配れます。盗み見られても、復号には秘密鍵が要るので安全です。

仕組み:一方向の数学的「落とし戸」

公開鍵暗号は「片方向は簡単、逆は困難」な数学関数(落とし戸付き一方向関数)に基づきます。

数学的な土台(素因数分解・離散対数・楕円曲線群)は数理分野で深掘りします。ここでは「逆計算が現実時間で不可能だから安全」という使う側の理解にとどめます。

⚠️ 将来:十分に強い量子計算機は RSA/ECC の困難性を崩しうるため、**耐量子暗号(PQC)**への移行が標準化中(要最新確認)。設計時は移行のしやすさ(クリプトアジリティ)も考慮します。

図解:公開鍵で施錠、秘密鍵で解錠

flowchart LR
    A["送信者"] -->|"受信者の公開鍵で暗号化"| C["暗号文"]
    C -->|"ネットワーク(盗聴されてもよい)"| B["受信者"]
    B -->|"自分の秘密鍵で復号"| P["平文"]
    note["公開鍵は配ってよい・秘密鍵は本人だけ"]

仕組み:実務はハイブリッド暗号

公開鍵暗号は対称鍵暗号よりずっと遅いので、大きなデータをそのまま暗号化しません。実際はハイブリッドにします。

  1. 通信用の使い捨て対称鍵(セッション鍵)を生成する。
  2. その鍵を相手の公開鍵で暗号化して渡す(鍵配送問題の解決)。
  3. 本文は速い対称鍵暗号(AES)で暗号化する。

つまり「鍵の受け渡しは公開鍵、本文は対称鍵」。これが TLS(TLSと安全な通信)の基本構造です。

防御側の使い方/設定

なぜ安全か:非対称性が配送を不要にする

公開鍵暗号の安全性は「公開鍵から秘密鍵を逆算できない」という非対称性にあります。暗号化に必要な情報(公開鍵)を全公開しても、復号に必要な情報(秘密鍵)は導けない。だから事前の安全な共有路がいらず、対称鍵暗号で困っていた鍵配送問題が消えます。

仕組みの直観

公開鍵暗号は南京錠を大量にばらまくイメージです。誰でも手に入る開いた南京錠(公開鍵)で箱を閉められますが、その鍵(秘密鍵)はあなたしか持っていません。だから知らない相手からでも、あなた宛ての箱に安全に施錠して送れます。RSA や ECC は「閉めるのは簡単、鍵なしで開けるのは天文学的に大変」な錠前です。

⚠️ よくある誤解・設定ミス

対応 lab

公開鍵の「署名/検証」側の実証は次トピックの security-study/labs/digital_signature_demo.py(Ed25519)で行います。本トピックは鍵配送の概念整理が中心です。

関連