はじめに
この記事は、株式会社スピードリンクジャパン Advent Calendar 2025 の9日目の記事です。
情報処理の資格を取ろうと勉強していると必ずと言っていいほど出てくる公開鍵暗号方式について、簡単な図を使った初心者向けの説明を以前作成したので、この機会にQiitaにも公開しようと思います。
公開鍵暗号方式とは
そもそも鍵を使って暗号化を行う方式には、以下の二つがあります。
- 共通鍵暗号方式 暗号化と復号に同じ鍵を使う方式
- 公開鍵暗号方式 暗号化と復号に別々の鍵を使う方式
共通鍵暗号方式は現実と同じように一つの鍵を使いますが、公開鍵暗号方式は使用する人ごとに 公開鍵 と 秘密鍵 の2つの鍵(鍵ペア)を使います。
公開鍵と秘密鍵には次の性質があります。
- 公開鍵で暗号化したデータは、ペアとなる秘密鍵で復号できる。
- 秘密鍵で暗号化したデータは、ペアとなる公開鍵で復号できる。
これらの性質を使って、 守秘の実現 と 署名(認証) を行います。
公開鍵暗号方式による守秘の実現
AさんとBさんの間でデータをやりとりする場合、以下のような手順で行います。
-
鍵ペアの作成
Aさん、Bさんそれぞれに自分の鍵ペア(秘密鍵と公開鍵)を作成します。 -
公開鍵を相手に送付
お互い相手に自分の公開鍵を渡します。
この時、通信を傍受されたとしても公開鍵が流出するだけで、秘密鍵は自分だけが持っています。 -
公開鍵で暗号化し、秘密鍵で復号する
データを送信する時は相手の公開鍵で暗号化して送り、受け取った側は自分の秘密鍵で復号します。
データを途中で傍受されたとしても、公開鍵では復号できないので読むことはできません。
公開鍵暗号方式による署名(認証)
デジタル署名等では、秘密鍵を持っていることで「自分であること」を証明する、という方法で公開鍵暗号方式を使います。
例として FIDO UAF (生体認証等によってパスワードレス認証を実現する方式)を説明します。
-
認証デバイスが鍵ペアを作成し、公開鍵を認証サーバに送付
Aさんが使用する認証デバイスで鍵ペアを作成し、公開鍵を「Aさんの公開鍵」として認証サーバに渡します。
また、デバイスでは生体認証(指紋認証、顔認証)等でAさんを識別できるようにしておきます。 -
Aさんが認証デバイスで認証を行う
Aさんが認証を行いたいと思った時、まず認証デバイスで生体認証等を行います。
デバイスがAさんであると識別した場合のみ、次のステップに進みます。 -
認証デバイスがサーバに認証要求を行い、サーバが認証する
認証デバイスが秘密鍵で認証情報を暗号化し、認証サーバに送ります。
サーバは受け取った情報が「Aさんの公開鍵」で復号できた時、認証要求したのは「Aさんです」と認証します。
おわりに
現実では「施錠する鍵と開錠する鍵が違う」なんてことはないので、どうにも分かりにくい公開鍵暗号方式をなるべく分かりやすく解説してみました。
みなさんのお役に立てば幸いです!

