共通鍵暗号と公開鍵暗号


暗号化には大雑把に、共通鍵暗号と公開鍵暗号があります。それぞれの特徴と長所短所を押さえましょう。

前回の記事

暗号化はなぜ必要か

2016.11.25

共通鍵暗号

%e5%85%b1%e9%80%9a%e9%8d%b5%e6%9a%97%e5%8f%b7

共通鍵暗号とはその名の通り、ある鍵で暗号化し、同じ鍵を使って復号します。

別名では対象暗号(Symmetric cryptography)や秘密鍵暗号(Secret key cryptography)とも呼ばれます。

一般的な暗号の方法なのですが、これにはちょっと欠点があり、まず受信者が送信者に鍵を渡す必要があります

これは実は非常に大変な問題でして、受信者が送信者に鍵を渡す際は暗号化されていません。暗号化するための鍵を暗号化して渡すなんて意味わかりませんよね。

これを鍵配送問題といいます。

そのため、企業内でデータのやりとりをするとかで、直接会って鍵を共有するとかならいいんですが、そうでない場合は実用的ではないものなんです。

ただし長所もあり、一般的な暗号技術なので高速であるという長所があります。また、複雑な暗号技術ではないのでわかりやすいという点も。1秒あれば何GBと暗号化できます。

言い換えれば欠点は鍵配送問題しかないんですよね。

この共通鍵暗号を破るための手段としては、確率統計学を使うことが多いです。

また、鍵の長さにもよりますが、ブルートフォースアタックと言われるいわゆる一つ一つ復号できるか確かめるゴリ押しの方法がよく使われます。

他にも特徴を見極めてより少ない回数でチャレンジするショートカット法もあります。

公開鍵暗号

%e7%a7%98%e5%af%86%e9%8d%b5%e6%9a%97%e5%8f%b7

共通鍵暗号で問題視された「鍵配送問題」を解決するべく編み出された暗号技術です。

別名では、非対称暗号化(Asymmetric cryptography)とも呼ばれます。

暗号技術の大事なところは実は暗号化することではなく、それを復号しづらくするところがポイントなのです。

つまり、暗号化するための鍵と復号するための鍵を別々にすればいい。そして復号する鍵だけ秘密にすればいいという考えで編み出された方式です。

そのため、この方式では鍵が2つあります。

  • 公開鍵…暗号化するための鍵。普通にばら撒かれる
  • 秘密鍵…復号するための鍵。これは秘密にされる

という仕組みです。

公開鍵はあくまで暗号化するためだけにある鍵です。この鍵で復号することはできません。
秘密鍵は復号するためだけにある鍵です。この鍵で暗号化しても意味ありません。

と、これだけの話を聞いてもただ魔法としか思いませんよね。仕組みは素数と素因数分解の難しさを使っています。詳しい話はここでは省きますが、数学の周期性を利用したものです。

この暗号技術の長所は、鍵送信問題がないこと。より安全な暗号ができます。
それに対する欠点は、万能な暗号であるせいで低速であることです。

そんだけ小さなデータでも10msぐらいはかかっちゃう。

結局は一長一短ある

万能な暗号技術なんてありません。何事にも一長一短あります。そのため、状況に応じて使い分けるのが賢い選択と言えるでしょう。

まとめ

暗号化の技術としては共通鍵暗号と秘密鍵暗号がある。それぞれ一長一短あるので使い分けるのが大事。

実は他にもいろんな暗号技術があります。次回は一方向ハッシュ関数やメッセージ認証コードを紹介します。

次の記事

暗号技術をさらに安全にする暗号方式

2016.11.25