hatoのプログラミング

IT関連の学習記録です。

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

はじめに

今回はセキュリティの話です。データを通信でやりとりする際、漏洩を避けるため、データを暗号化して受け渡しされることがあります。その暗号化技術に共通鍵暗号方式公開鍵暗号方式があります。これら両方の暗号方式ついて書いていきます。

共通鍵暗号方式

共通鍵暗号方式は、名前の通り共通の鍵を使って暗号化する方法です。下のようなイメージです。

BさんがAさんにデータを渡す例
  1. Aさんは鍵aを作り、Bさんに渡す(鍵aを共有する)
  2. Bさんはデータを暗号化して鍵aでロックする
  3. BさんはデータをAさんに渡す
  4. Aさんは鍵aを使ってデータのロックを解除して復号する

公開鍵暗号方式

公開鍵暗号方式は、公開鍵と秘密鍵というペアの鍵を用意して、公開鍵を使って暗号化し秘密鍵を使って復号する方法です。共通鍵暗号方式よりもなんだかややこしいです。南京錠のようなもので公開鍵が「鍵穴」で秘密鍵が「その鍵」だと考えるとわかりやすいと思います。共通鍵暗号方式と同じく、下に例を書きました。

BさんがAさんにデータを渡す例
  1. Aさんは公開鍵aと秘密鍵aを作り、Bさんに公開鍵aを渡す
  2. Bさんはデータを暗号化して公開鍵aでロックする
  3. BさんはデータをAさんに渡す
  4. Aさんは秘密鍵aを使ってデータのロックを解除して復号する

どちらが安全か?

共通鍵暗号方式の場合、鍵が盗まれてデータが漏洩するリスクがあります。鍵を共有するためには、まず初めに一方が他方に鍵を渡す必要があり(上の例だとAさんがBさんに渡していました)、この時に盗まれる可能性があります。鍵が盗まれると暗号化されたデータが復号されてしまいます。

公開鍵暗号方式でも、公開鍵を渡す時に盗まれるリスクがあります。しかし公開鍵は盗まれても問題はないです。公開鍵は暗号化することはできますが、復号することができないからです。復号するためには秘密鍵が必要であり、秘密鍵は受け渡ししないので盗まれる心配はありません。

ですので公開鍵暗号方式のほうが安全性が高いと言われています。

まとめ

共通鍵暗号方式は、共通の鍵を使って暗号化する方法。

公開鍵暗号方式は、公開鍵を使って暗号化し、秘密鍵を使って復号する方法。こちらのほうが安全性が高い。

参考

きたみりゅうじ(2011) 『キタミ式イラストIT塾 基本情報技術者 令和02年』技術評論社