MENU

【PKI 基礎④】公開鍵暗号方式について解説【初心者向け講座】

「暗号」と聞くと、難しい数学や専門用語が出てきそうで、ちょっと身構えてしまいますよね。

でも、実は私たちが毎日使っているインターネットの通信や SNS、ショッピングサイトの裏側でも、暗号技術はあたりまえのように使われています。

例えば

  • LINEのトーク内容を第三者に見られないようにする
  • クレジットカードの番号を安全に送る
  • 学校の Wi-Fi の通信を盗み見られないようにする

こういった「情報を守る」ために欠かせないのが暗号のしくみです。

別記事では、「共通鍵暗号方式」について説明しました。暗号化方式には、もう一つ、「公開鍵暗号方式」と呼ばれる種類があります。本記事では、「公開鍵暗号方式」について、ネコでもわかるように、やさしく解説していきます。

目次

公開鍵暗号とは?

公開鍵暗号とは、暗号化(データを読めなくする)と復号(元に戻す)に別々の鍵を使う暗号方式です。

使う鍵はセットになっていて、そのセットのことを「キーペア」と呼ばれます。キーペアの鍵は、片方の鍵で暗号化したものは、もう片方の鍵でしか復号できないという特徴があります。

キーペアの2つの鍵は、以下のように呼ばれます。

  • 🔑 秘密鍵(ヒミツにして自分だけが持つ。絶対に誰にも渡さない)
  • 🌍 公開鍵(ネットに公開して誰でも使える)

秘密鍵は「自分専用の鍵」で、絶対に他の人に見せたらダメです。一方、公開鍵は「みんなに配ってOKな鍵」で、ネット上で公開して使ってもらいます。

公開鍵と秘密鍵はセットで動きます。

  • 公開鍵で暗号化したデータは、キーペアの秘密鍵じゃないと復号できない
  • 秘密鍵で暗号化したデータは、キーペアの公開鍵じゃないと復号できない

例えば、

  • 「ねこねこ」が「ねこまる」の公開鍵で暗号化 ⇒ 「ねこまる」だけが復号できる🔓🔑
  • 「ねこまる」が自分の秘密鍵で暗号化 ⇒ 公開鍵を使うと誰でも読める🔓🔑

このような仕組みなので、公開鍵暗号は、相手と「安全な鍵の受け渡し」を事前にしなくても、暗号化できるのが特徴です。

また、公開鍵暗号の仕組みは、「秘密鍵は持ち主しか使えない」ってことが大前提です。だから、ねこまるの公開鍵で復号できたということは、ねこまる本人が秘密鍵で暗号化したって証拠になります。つまり公開鍵は、「暗号化」だけじゃなくて、「この人が送ったって証明する=本人確認」にも使えるんです!

公開鍵暗号は、公開鍵秘密鍵キーペアを使って暗号化・復号します

公開鍵暗号のメリデメ

公開鍵暗号のメリット・デメリットをみていきましょう。

公開鍵暗号のメリット

公開鍵暗号は暗号化と復号を別々の鍵を使う暗号方式で、便利な仕組みです。

  • 🔑 鍵を事前に共有しなくてもOK!
    ⇒ 公開鍵を相手に渡すだけで、インターネット上でも安全に暗号化できる
  • 🌍インターネット上でも安全に使える
    ⇒ 公開鍵は秘密鍵を逆に計算して求めることができないので、ネット上で公開しても問題なし。
  • 🧾本人が作ったことを証明できる
    ⇒秘密鍵で暗号化したデータは、公開鍵でしか復号できない
    つまり、秘密鍵を持っている本人が作ったデータであるということの証明になる

公開鍵のメリットは、「鍵の事前共有が不要」「本人確認」です。

公開鍵暗号のデメリット

公開鍵暗号は鍵交換が不要な便利な仕組みですが、アルゴリズムが複雑です。

  • 処理が重い・時間がかかる
    → 暗号化や復号の計算がすごく複雑で、共通鍵暗号の100〜数千倍の時間がかかることも。
  • アルゴリズムが難しい
    →仕組みが複雑なため、理解したり実装するのが大変

公開鍵暗号は処理に時間がかかるため、大量のデータを暗号化・復号するのには向いていません。そのため、実際の利用では、公開鍵暗号と共通鍵暗号のそれぞれの利点を活かして組み合わせて使うことが多いです。

公開鍵のメリットは、「処理が重い・時間がかかる」です。

よく使われる公開鍵暗号の種類

代表的な公開鍵暗号のアルゴリズムを紹介します。

アルゴリズム名鍵の長さ(ビット)特徴
RSA2048~4096最も広く使われている。仕組みはシンプルだが、鍵が長くなると処理が重くなる。
ECC(楕円曲線暗号)256鍵が短くても安全性が高い。軽量でスマホやIoT機器でも使いやすい。
ElGamal1024理論的に有名な方式。実用面では改良された形式(例:DSA)で使われることが多い。
DSA1024~3072電子署名向けに設計された。暗号化には使わず、署名・認証専用。
RSA-OAEP2048RSAをより安全に使うための改良方式。TLSなどでよく使われる。

それぞれの公開鍵暗号のアルゴリズムの仕組みを覚える必要はありません。

覚える必要があるのは、それぞれのアルゴリズムがどんな特徴を持っていて、どこで使われているか、そしてどのくらい安全性があるかという点です。

上の表をもう少しだけ、解像度を上げてみてみましょう。

RSA:最も有名な公開鍵暗号

  • 現在も広く使われている定番の公開鍵暗号。WebサイトのHTTPSなどでも活躍中!
  • ただし、2048ビット以上の長い鍵が必要で、処理が重いのが難点。

📌 今も現役で活躍中のド定番のアルゴリズム。ちょっと重いけど、信頼性はピカイチ!

ECC:短い鍵で高い安全性!

  • ECC(楕円曲線暗号)は、RSAと同じレベルの安全性をもっと短い鍵で暗号化を実現!
  • 処理が軽くてスマホやIoT機器にも向いている。今どきの主力。

📌 ECC=次世代の本命!RSAより軽くて安全!

ElGamal:理論は大事、でも実用ではあまり見ない

  • 暗号学の教科書ではよく出てくるけど、実運用ではあまり使われない。
  • ランダム性が多くて出力が大きくなりがち。現場では改良版(例:DSA)などが使われることが多い。

📌 実用より理論寄り。名前だけ知っていればOK

DSA:電子署名に特化したアルゴリズム

  • アメリカ政府が標準化した署名専用のアルゴリズム。暗号化には使わない。
  • 使い方が限定されていて、最近は ECDSA(楕円曲線版)の方が種類になりつつある。

📌 DSA=署名専用。名前を見たら「暗号じゃなくて署名」と思おう!

RSA-OAEP:RSAを安全に使うテク

  • RSA にパディング処理を加えて、安全性を高めた使い方。TLSなどでも使われる。
  • 「RSAと別のアルゴリズム」ではなく、RSAの改良版的な位置づけ

📌 RSAの“安全強化バージョン”と思えばOK!

まとめると

公開鍵暗号にはいろんな種類があるけど、まずは「RSA=定番」「ECC=次世代」「ElGamalやDSA=理論・署名系」くらいに押さえておけばOK!

ハイブリッド暗号とは

共通鍵暗号と公開鍵暗号のいいとこ取りをしたのが「ハイブリット暗号」です。

この仕組みでは、公開鍵暗号で「共通鍵」だけを安全にやりとりに、その後のデータ通信は処理が速い共通鍵暗号で行うという方法が使われます。つまり、「鍵のやりとりは安全に」「データのやり取りは高速に」という、両方のメリットを活かしてデメリットを補完しあった構成になっています。

ざっくりとハイブリット暗号の流れを見ていきましょう

STEP
「ねこまる」が自分の公開鍵をネットに公開

ねこまるは自分の公開鍵をインターネットに公開して、誰でも使えるようにします。

また、キーペアの秘密鍵は外部に漏れないよう厳密に管理します。

STEP
「ねこねこ」が共通鍵を作って、「ねこまる」の公開鍵で暗号化して送信

「ねこまる」と通信をしたい「ねこねこ」は暗号化用の共通鍵を作ります。

安全に送るために、「ねこまる」の公開鍵で共通鍵を暗号化して送信します。

STEP
「ねこまる」は自分の秘密鍵で復号して共通鍵をゲット

「ねこねこ」から受け取ったデータを復号し、共通鍵を入手します。

「ねこまる」の公開鍵で暗号化されたデータを復号できるのは、キーペアの秘密鍵をもつ「ねこまる」だけです。

STEP
あとは、共通鍵を使って高速な共通鍵暗号でサクサクと通信

「ねこまる」と「ねこねこ」は共通鍵を共有できた状況になっています。

この共通鍵を使って、お互いにメッセージを暗号化しながら通信を行います。

このように、ハイブリッド暗号は通鍵暗号で必要な鍵交換を、公開鍵暗号で行う仕組みです。LINE やクレジットカードのオンライン決済などの身近な通信でも使われています。

ハイブリッド暗号とは
🔐 公開鍵で「共通鍵を安全に渡す」
🚀 共通鍵で「高速に通信する」

公開鍵って本当に安全なの?

公開鍵はインターネット上に誰でも使えるように公開しますが、ここで気になるのは「その公開鍵って本物?」という点。

もし、悪い人がなりすましてニセの公開鍵をネットに出しており、それを使って暗号化すると、全部その人に内容がバレてしまいます!クレジットカード番号などの個人情報が入っていたら大変ですね。

対策:デジタル証明書

そこで登場するのが、「デジタル証明書」という仕組みです。

これは「この公開鍵は〇〇さんのものだよ」と信頼できる第三者が証明してくれる仕組みです。この証明書があることで、

  • 正しい相手の鍵かどうかを確認できる
  • なりすましを防げる

という安心安全に公開鍵暗号の仕組みが利用できるようになります!

まとめ

今回の記事のまとめです。

  • 公開鍵暗号とは、別の鍵を2つ(公開鍵と秘密鍵)を使って暗号化・復号を行う方式
  • 公開鍵はみんなに配って OK、秘密鍵は自分だけがもつ
  • アルゴリズムが複雑なので、処理が重い・時間がかかる
  • 処理が速い共通鍵暗号と組み合わせるハイブリッド暗号がよく使われている
  • 公開鍵が「本当に本人のものか?」を確認するための仕組みがデジタル証明書

公開鍵がホンモノかどうかを確認するには、「デジタル証明書」っていう仕組みを知っておく必要があります。このデジタル証明書の中では、「ハッシュアルゴリズム」と「デジタル署名」という技術が使われているので、まずはそれぞれがどういうものかを見ていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

フルリモートで働いているセキュリティ系エンジニアです。

このブログでは、技術・在宅ワーク・副業・旅行などについて、 ゆるっと発信しています。猫好き&コーヒー好き。

コメント

コメントする

目次