共通鍵暗号方式と公開鍵暗号方式

暗号

はじめに

暗号化の方法ってどんなのが有名なんですかね??1つも聞いたことねえよって方は普通だと思います(笑)

文字を1体1に対応する別の文字に置き換える置換や、前後の文字にずらす(例えば3つ前にずらすならeがbになる)シーザー暗号などは知っている人はいるかも。もちろんもっと高度な暗号化方式知ってるぜって人がいるかもしれないけど、そんな人はこの記事読む必要はないかもね(笑)

実は暗号方式ってのは、タイトルにもなってるけど、共通鍵暗号方式ってのと公開鍵暗号方式ってのに分類できるんです。どう違うのか、それぞれのメリット、デメリットをこの記事では書いていきます。

共通鍵暗号方式

仕組み

まずは例から見てみましょう。最も簡単な例はシーザー暗号です!

例えば”Hello”という文字を暗号化しましょう。シーザー暗号はいくつか文字を前後にずらす暗号です。例えば5つ後にずらす場合、”H”は”M”に、”e”は”j”に、”l”は”q”に、そして最後の”o”は”t”に変換されるので暗号文は”Mjqqt”となります。もちろん復号するときは、5つ前にずらせば元の”Hello”という文章を得ることができます。

 

このように暗号者と復号者がお互い5という共通の鍵を持っているために暗号化、復号することができる暗号方式を共通鍵暗号方式と呼びます。そしてこの例でいう5を共通鍵と呼びます。

 

ちなみにですが、この例のシーザー暗号はすぐに解読されちゃいますよ。なんせローマ字は26文字しかないので26文字、大文字を合わせても52文字なんてコンピュータを用いると簡単にすべて調べることができます。手作業で調べる場合は、英文に出やすいaやeが1番多く出てきている文字に変換されているんじゃないか?なんて風に調べます。

だから現在ではもっと解読されにくい公開鍵暗号方式が使用されています。DESというただでさえややこしい共通鍵暗号方式を3度も行うトリプルDESや、比較的シンプルで強固なAESといった共通鍵暗号方式が使用されています。

どちらもややこしいですが、AESなんかはまだ理解しやすいので暇があるときに調べてみてください!説明が長くなるのでここでは取り上げない予定ですよ(笑)

メリット

  • 高速

これにつきますね。後に解説する公開鍵暗号方式と比べるとかなり速く暗号化、復号が可能です。

デメリット

  • 鍵の共有ができない!!!

これが最大のデメリットですね。まず鍵をどうやって共有すればいいのか。直接渡せばいいじゃんって思うかもしれませんが、そんなことができるなら暗号で通信なんて必要ありません。だから事前に鍵を共有しているなどをしていない限り、共通鍵暗号方式は使用できません!

  • 複数人とやり取りする場合、必要な鍵の数が膨大になる。

例えば\(n\)人がそれぞれ暗号通信を行う場合、必要となる鍵は1人あたり\(n-1\)個、合計では\[_nC_2 = \frac{n(n-1)}{2}\]となります。これは多すぎますね。

こんなデメリットを解消してくれたのが以下の公開鍵暗号方式です!発想がすごすぎてまさに感動ものです!どんなアルゴリズムなのか。乞うご期待です↓

公開鍵暗号方式

仕組み

発端は共通鍵暗号方式のデメリットです。暗号通信を行うのに事前に鍵を共有しておく必要があるなんて大変不便です。だってインターネットで暗号化して通信を行うために、事前に会って鍵を交換しますか??まず知らない人に会うのが怖いですよね(笑)

そこである人は提案しました。(詳しくはWikipedia

「1つの鍵を常に公開しておいて、1つの鍵を自分だけの秘密にする。そして暗号化は公開している鍵を使って行い、復号は秘密にしている鍵だけで行う。そうすれば誰もが暗号化できるが、復号できるのは受け取った人だけとなる。」

おぉ、素晴らしい提案。これを公開鍵暗号方式と呼びます。でもこれを言ったことはそんなにすごいとは思わない。んじゃ、どうやってこれを実現するのよ。

ところが人間はこれを実現しちゃったんです。それがRSA暗号。まじで天才的な発想だと思います。これを思いついた人たちには頭が上がりません。

RSA暗号については以下で詳しくまとめてます!!

RSA暗号ってなに?
歴史 1977年に発明され、発明者であるロナルド・リベスト、アディ・シャミア、レオナルド・エーデルマンの原語表記の頭文字をつなげてこのように呼ばれる。 Wikipediaより引用 RSAというのは3人の頭文字を繋げて付けられた名前なん...

他には楕円曲線暗号などが流行っています。それもいつかまとめるね。

メリット

  • 鍵を堂々と公開できる!!!

共通鍵暗号方式のようにコソコソと鍵を共有する必要はないですからね。

  • 保持する鍵が秘密鍵1つだけ!

安全に保持するべき鍵は、自分の秘密鍵1つだけで済みます!人の鍵は必要あれば取得すればいいですからね。

デメリット

  • 暗号化、復号に時間がかかる。

唯一の欠点ですね。しかしこれを補う方法を今から解説します!

ハイブリット暗号方式

仕組み

2つの暗号方式を紹介しましたが、両者それぞれメリットとデメリットが存在しました。そこで、これらの暗号方式を組み合わせてデメリットをできるだけ小さくしたハイブリットな暗号方式が考案されました。それがハイブリット暗号方式です!

具体的にどうするのかというと、送りたい文章は共通鍵暗号方式で暗号化し、その共通鍵を公開鍵暗号方式で暗号化してから送信するだけです!

これでなぜデメリットが小さくなるのでしょうか。一般的に鍵は本文と比べるとサイズは小さくなっています。そこで本文をそのまま公開鍵暗号方式で暗号化するのではなく、鍵だけを暗号化することで、暗号化、復号にかかる時間を小さくすることができるのです!

もちろん共通鍵は公開鍵暗号方式で暗号化して送信するので、共通鍵暗号方式のデメリットである鍵の事前共有もする必要もありません。

ちなみに現在のインターネットの暗号化でもこの方式が用いられています。

おわりに

今回は暗号入門者向けの記事となりました。なぜこの記事を書いたかというと、私は公開鍵暗号方式を初めて知ったときにめちゃくちゃ感動したので、ぜひ他の方々もぜひ感動してほしいと思ったからです(笑)

RSA暗号や楕円曲線暗号についてもまとめてる予定なので、興味を持った人は是非読んでね!

コメント

タイトルとURLをコピーしました