【公開鍵暗号方式とは】公開鍵と秘密鍵をざっくり分かりやすく説明してみる【public key】【private key】

こんにちは、3年間のエンジニア経験を経て、現職ではデザイナ・コーダーをやっています、オッコです。

本番環境に接続する「公開鍵」「秘密鍵」を作成する機会に何度か直面してきたのですが、これが何かずっとふわふわしたままだったので、一旦言語化を試みることにしました。

実際の具体的な状況を想定しつつ、すごく簡単な例えで説明してみたいと思います。

・暗号方式について勉強を始めたばかりの方

・専門用語が多すぎて何を言っているのかいまいちよく分からない挫折しかけの方

が、まずざっっっくりと公開鍵暗号方式についての概要をつかむための一助になれば、大変嬉しいです。

なお、先に言っておきますが、正確性より初手の分かりやすさを優先しています。

基本情報の勉強だとか、細かい知識を覚えるのには参考にならないかもしれません。頭パンク気味の意気消沈エンジニア向けです。

まず一応、定義から確認します。

定義

公開鍵とはなんぞ

公開鍵とは、通信を暗号化するときに使うキーのことです。公開鍵暗号方式で使われる2種類の暗号鍵の一つで、誰でも利用できるように広く公開されています。

秘密鍵から作られ、その秘密鍵と対となることで高い秘匿性を実現し、電子署名(デジタル署名)にも活用が可能です。

https://it-trend.jp/encryption/article/64-0089

秘密鍵とはなんぞ

秘密鍵とは、対になる公開鍵で暗号化された通信を復号化するために使うキーのことです。特定のユーザーのみが持つため、公開鍵によって暗号化された電子メールなどの通信は、第三者に読み取られる心配がありません。

https://it-trend.jp/encryption/article/64-0089

私が鳥頭なのが悪いのですが、明日には忘れてしまいそう。鳥に謝ります。

もっと簡単にイメージしましょう。

公開鍵暗号方式とは何か? イラストでイメージ

まずあなたのパソコンから、お客さんの本番サーバーにアクセスしたいとします。

そんなときに公開鍵暗号方式を採用した場合の鍵の登録の流れは以下です。

  • ①あなたが公開鍵、秘密鍵を両方とも作る
  • ②お客さんのサーバーの管理者の人に、公開鍵をあげる
  • ③あなたはいつでも、秘密鍵を使ってサーバーにアクセスできるようになる

個人的には、両方鍵と言っているから分かりにくいのではと思います。(※正確性に欠けるであろうガバガバポイント)

なので、図に置き換えてみましょう。

lock_nankinjou.png (320×321)

↑これが公開鍵(南京錠)

↑これが秘密鍵

これらがセットになって、「鍵」として使えるようにするのですね。

重要なのは、これらを両方ともあなた(ローカル側)が作るということです。

鍵を用意する、と聞くと、サーバー側に鍵穴が既についてて、解除するためのキーを用意するのかと思いがちですが、そうではありません。

※大丈夫です、いざ、実際に作るぞ!となったときは、両方ワンセットでちょいちょいっと作ってくれるサービスがあります。(PuTTYgenとかね)

そして、南京錠(公開鍵)をサーバー管理者に渡すと、サーバー管理者があなたの公開鍵をサーバー側に登録してくれます。こんな風に↓

computer_lock.png (800×642)

パソコンがお客さんのサーバーだと想像してください。

もともとあったサーバーに、あなたが作った公開鍵を登録することで、あなたがそのサーバーにアクセスできるようにしてくれるというわけです。

※細かいことを言うと、南京錠と鍵に例えてしまうと、サーバーにアクセスできる人数分の南京錠がサーバーに巻き付いていて、ぜんぶ解除しないといけないように思えてしまいますが、実際は自分の鍵ペアだけあればサーバーに接続できます。ガバガバポイントその2です。

あなたの公開鍵も、先輩の公開鍵も、上司の公開鍵も、全部サーバーに登録されています。みんなそれぞれの鍵ペアを使って、サーバーに接続しているのです。

ここで担保! セキュリティ性

なんか、私が一番疑問だったのは、「あまりにも鍵作るの簡単じゃね?」ということでした。ほんとにすぐ作れるんですよ。(PuTTYgenとかね)

それに、「公開鍵は誰に見られても大丈夫」とよく書かれているじゃないですか。

こんなんでいいの? これでセキュリティをどう担保しているの? とずっと疑問をいだいたまま、先輩に言われるがままに設定していました。

けど、「誰でも公開鍵をサーバーに登録してもらえるわけではない」ということが、セキュリティ性担保に繋がっていたのですね。

つまりあなたの気をつけるべきことは、これです

・生成した秘密鍵は、ローカルPCのめっちゃ大事なところに保管する

保存場所の作り方はググったら出てきます。

泥棒が秘密鍵を手に入れて、複製して、かつサーバーの基本的な情報を知っていて、あなたの秘密鍵のパスワードがデスクトップの隅にメモされていたら、アウトですからね。

その場合はサーバー管理者に連絡して、公開鍵を無効にしてもらいましょうね。

また、企業によっては、先輩が公開鍵と秘密鍵をセットで作って、あなたに秘密鍵だけくれるとか、そもそも先輩の秘密鍵を複製してあなたにくれるとか、上記①~③の手順の一部だけあなたが知っている可能性もあります。

そんなガバ企業ないと信じたいですが、全貌は①~③になるので、ぜひこれを前提に考えてみてください。

分かりにくい箇所があればコメントをいただけたら、改訂します。

以上です。

参考文献

https://it-trend.jp/encryption/article/64-0089

https://www.irasutoya.com/search?q=%E5%8D%97%E4%BA%AC%E9%8C%A0

AIを導入しリーズナブルで確実と信頼があるホームページ制作はアピステクノロジーへ

アピステクノロジーでは、特注システム開発をはじめ、AIを導入したHPの制作にも力を入れています。

WordPressはもちろん、ShopifyのECサイトもご要望に応じて制作いたします。

詳しくは弊社HPをご覧ください。

アピステクノロジーの実績紹介はこちら

システムの入ったパッケージ「ITツール」紹介ページはこちら

アピステクノロジーでは、IT専門家としておすすめPCの販売も行っています!