MENU
おすすめプログラミングスクール紹介用バナー
Webpia編集部
Webpiaはプログラミングとノーコードについて紹介するWebメディアです。主に10~30代向けに記事を執筆しております。

共通鍵暗号と公開鍵暗号とは?メリットをわかりやすく解説!

当サイトはページの一部でPR活動を実施し、得られた収益で運営されています。広告費用や収益性を考慮したランキング付けは、一切行なっておりません。詳細は、サイトポリシーWebpiaでコンテンツが出来上がるまでを参照ください。

こんにちは!
今井(@ima_maru)です。

今回は、現在の暗号化通信を支える技術である、「共通鍵暗号」と「公開鍵暗号」についての解説記事となります。

「それぞれがどんな暗号化技術なのか?」「どのようなメリットを持っているのか?」に注目して解説していこうと思います!

それでは解説していきます!

もくじ

共通鍵暗号とは?

共通鍵暗号とは、メッセージの送信者と受信者が「同じ鍵」を使って行う暗号通信のことです。

共通鍵暗号では、メッセージ(平文)を暗号化するにも、暗号文を復号するにも同じ鍵を用います。

つまり、鍵Aを使って暗号化したものを、同じ鍵Aを使って復号できるということです。

共通鍵暗号は「家の鍵」と似ています。
閉じるときに回した方向と逆方向に回せば開きますよね。
開けるときは違う鍵を・・・なんてことはありませんね。

アルゴリズムについては詳しく触れませんが、暗号化と同じ処理を逆順で行い復号するものもあれば、また違った復号方法を使うものあります。

共通鍵暗号の特徴・メリットとしては、「比較的に処理にかかる時間が短い」ということが挙げられます。

つまり、公開鍵暗号よりも処理が軽いわけです。

なので、何回も連続で通信を行う場合は、共通鍵暗号のほうが優れているといえます。

しかし、共通鍵暗号には、ちょっとした問題点があります。

それは、鍵の受け渡し方法が難しいということです。

もちろん現実世界で直接会って鍵情報を伝えるということはできます。

しかしながら、インターネットで世界中どこからでもアクセスができるようになった今、現実世界で直接会うのは得策ではないでしょう。

なので、インターネット上で鍵の受け渡しが行われるということです。

ここで、どちらかが暗号化通信のために共通鍵を生成したとしても、もう片方のペアに対して鍵を送る手段もまた暗号化通信でないといけません

なぜなら、暗号化通信でなければ、鍵を送っている最中に鍵が盗まれてしまう危険性があるからです。(ほかの人に鍵がばれないように鍵の受け渡しを行わないといけない。)

そこで生まれたのが、次の「公開鍵暗号」です。

公開鍵暗号とは?

公開鍵暗号には主に3つの技術「暗号化」「電子署名」「鍵交換」があります。

すべての技術について言えることは、2つの役割が異なる鍵を用いる技術だということです。

2つの鍵の呼び方は異なり、ひとつは「公開鍵」と呼ばれ、もう一つは「秘密鍵」と呼ばれます。

そして名前の通り、「公開鍵」は一般に誰でも使える「公開されている鍵情報」であり、「秘密鍵」はサイトのサーバーやある特定の人物のみが所持している「極秘の鍵情報」です。

公開鍵暗号は「パズル」と似ています。
公開鍵と秘密鍵は同じパズルから作られますが、異なるピース。どちらかのピースのみをいくら持っていようともパズルは一向に完成せず、二つが合わさってこそ初めてパズルが完成します。

「暗号化」「鍵交換」は主に情報の機密性(盗聴できないこと)を保証するため、「電子署名」情報の完全性(改ざんをされていないこと)を保証するための技術です。

公開鍵暗号に分類される3つの技術①「暗号化」

広義で、この「暗号化」の技術が「公開鍵暗号」と捉えられることがあります。

つまり、公開鍵暗号といえばこの暗号化のことを指しているケースがあるということ。

厳密には、「公開鍵暗号の技術の一つの暗号化」ということもできますね。

公開鍵暗号の「暗号化」においての各鍵の役割は、

「公開鍵」:メッセージを暗号化するために用いられる
「秘密鍵」:暗号文を復号するために用いられる

と異なる役割を持っています。

一方、共通鍵暗号では、同じ鍵で暗号化と復号の両方の役割を担っています。

この点で公開鍵暗号と共通鍵暗号は違います。

つまり、暗号化した人が復号できるかできないかが大きな違いです。

公開鍵暗号は、この特徴をうまく使って暗号化通信を行います。

たとえば、自分が秘密鍵を持つ人だとすれば、他の人は自分専用の公開鍵で暗号化をすることになります。

そして、送信中にその暗号文を見られても問題はありません。

なぜなら、その暗号文を復号するのは、暗号化をした公開鍵のほうではなくて、自分だけが持っている秘密鍵だからです。

公開鍵は誰でも簡単に得ることができますが、秘密鍵は暗号の仕組み(RSA問題や楕円曲線問題など)を解かれない限り決して得ることはできません。

なので、公開鍵で暗号化すれば、ほかの人はおろか、暗号化した人でも復号ができない状況になり、結果として秘密鍵を持つ自分のみが復号できる暗号文となるのです。

こうすれば、暗号文をだれに見られても問題ないでしょう?

公開鍵暗号に分類される3つの技術②「電子署名」

公開鍵暗号には「電子署名」の技術があります。(「署名」「デジタル署名」とも)

電子署名とは、「メッセージの送り主が本当にその人かどうかを判別する技術」です。

インターネット上のサインやハンコみたいなものですね。

簡単に言えば、「秘密鍵を持つ人物しか正しい署名ができない」ことを利用して、メッセージの送り主を判別しています。

誤解が多いところで、実際私も勘違いしていたのですが、暗号化とデジタル署名では公開鍵と秘密鍵の役割が大きく異なるというところに注意が必要です。

電子署名での各鍵の役割は、

「公開鍵」:電子署名の情報があっているか確認するために用いられる
「秘密鍵」:電子署名を行うために用いられる

です。これは、前述した「暗号化」の各鍵の役割とは異なります
(単に逆にするだけではない!)

デジタル署名の詳しい解説は以下の2記事がわかりやすいです。
深く理解したい方は是非ご覧ください。

電子署名の基礎知識

私は公開鍵暗号方式と電子署名を理解できていなかったようです。

公開鍵暗号に分類される3つの技術③「鍵交換」

公開鍵暗号には「鍵交換」と呼ばれる技術もあります。

これは、共通鍵暗号の共通鍵の輸送問題を解決した技術で、インターネット上で安全に共通鍵情報を受け渡しできるという技術です。

有名な鍵交換には、「ディフィー・ヘルマン鍵交換」(以下DH)が挙げられます。

DHでは「公開鍵と秘密鍵のペア」が鍵を共有する2人分、つまり計4個の鍵を生成します。

生成したお互いの公開鍵を交換して、自身の秘密鍵と組み合わせて計算することで、お互いが同じ計算結果を得ることができます。

この同じ計算結果を共通鍵暗号の共通鍵として用います

この仕組みはまだ詳しくないので興味がある方は「ディフィー・ヘルマン鍵交換」でお調べください。

これとは別に、「暗号化」の役割を使っても同じことができるのですが、詳しい解説は参考にさせていただいた方の記事にお任せします。

2つの公開鍵暗号(公開鍵暗号の基礎知識) - Qiita

共通鍵暗号と公開鍵暗号のメリットとデメリット

共通鍵暗号のメリットは処理が軽いこと!

共通鍵暗号は、公開鍵暗号の処理が軽いという特徴があります。

つまり、何回も連続して通信を行う場合は共通鍵暗号のほうが優れているといえます。

ウェブサーバとの通信では、初めに「鍵交換」で共通鍵暗号の共通鍵の受け渡しを行ってから、それ以降は処理速度の速い共通鍵暗号での通信を行うということをしています。

共通鍵暗号のデメリットはそれだけでは鍵の受け渡しが難しいこと

しかし、共通かぎ暗号は鍵の受け渡しが非常に難しいということが挙げられます。

鍵の受け渡しの際に、通信を傍受されてはいけないからです。

つまり、鍵の受け渡しは暗号化されていないので、その鍵を盗まれてしまう可能性があるということです。

このため、鍵の受け渡しは「鍵交換」を使って行います。

公開鍵暗号のメリットは鍵の管理が容易で安全なこと

公開鍵暗号では、不可逆性の特徴を持ちます。

例えば暗号化なら、暗号化した公開鍵ではその暗号文を復号することができないので、ほかの同じ公開鍵を持つ人がいても何も問題はありません。

つまり、公開鍵は盗まれても意味がないということです。

現に、公開鍵は公開されており誰もが使える状態です。

秘密鍵は、鍵の生成者の元で公開鍵とともに生成されますが、一度もインターネットを介して誰かに渡すということはしません

なので、生成方法がばれる・解かれる以外には、基本的に秘密鍵は盗まれることがないといっていいでしょう。

これらのことより、公開鍵は簡単に公開でき、秘密鍵は自分で作って自分で保管しておけるので、鍵の管理がとても楽で安全なのです。

公開鍵暗号のデメリットは処理が重いこと

公開鍵暗号は、共通鍵暗号に比べて処理が重いです。

何度も通信を行う場合は、共通鍵暗号に切り替える必要があるでしょう。

なので、うえで書いた通り、公開鍵暗号の技術の「鍵交換」を使って共通鍵を安全に受け渡し、それ以降は共通鍵暗号での通信を行うということをしています。

まとめ

今回は、公開鍵暗号と共通鍵暗号という暗号化通信の技術ついての記事となりました。

どちらも一方にない特徴を持っていて、現在の暗号化通信を支えています。

ふつうは、「共通鍵暗号の共通鍵」を渡すのに「公開鍵暗号の鍵交換」を利用するという暗号化方式「ハイブリッド暗号」を用いています。

今後、共通鍵暗号と公開鍵暗号の仕組みを解説した記事を作りたいと思っています。

あわせて読みたい
RSA暗号とは?仕組みをわかりやすく解説!【プログラム付き】 今回は「RSA暗号」についてです。 RSA暗号は現代の情報通信の要であり、当たり前に使われている暗号化技術です。 しかし、その仕組みは意外と知られていないものです。 ...

以上「共通鍵暗号と公開鍵暗号とは?メリットをわかりやすく解説!」でした!

最後までご覧いただきありがとうございます。
よかったらシェアしてね!
もくじ