暗号化とは?
暗号化とは、データの通信(やり取り)における安全性を守る仕組みです。
私たちは、ネットワークを通じて日々データをやり取りしています。
例えば、パソコンでインターネットにアクセスして
調べたいキーワードを検索すると、記事が検索結果に表示されます。
その中で、記事をクリックして閲覧しますよね。
この時、あなたのパソコンとWEBサーバー(WEBサイトの情報を提供するサーバー)がインターネットを介してデータ(WEBサイト情報)のやり取りを行っているわけです。
やり取りしているデータを途中で盗み見られてしまう場合があります。
データを盗み見られてしまうと、個人情報が漏洩してしまうリスクがあります。
例えば、あなたがWEBサイト上でパスワードを入力して、あるサービスにログインしようとした際に、パスワードを盗み見られてしまう可能性があるわけです。
パスワードが盗み見らてしまうと、さすがに困りますよね。。
こうした盗み見を防ぐために、データを暗号化して送る仕組みがあります。
暗号化の方法は大きく分けると以下の2つがあります。
- 公開鍵暗号方式
- 秘密鍵暗号方式(共通鍵暗号方式)
データを暗号化する、つまり、データに鍵をかけるイメージです。
逆に、暗号化されていないデータを平文と言います。
公開鍵暗号方式
公開鍵暗号方式は、2種類の鍵を1セットとして用いる暗号化方法です。
2つの鍵の役割は以下の通りです。
- 「データを暗号化すること」専用の鍵=「閉める」専用の鍵
- 「データを複合化(暗号を解く)すること」専用の鍵=「開ける」専用の鍵
「閉める」専用鍵を一般向けに公開し、「私とデータのやり取りをしたい人はこの鍵を使ってくださいね~」という形を取ります。「開ける」専用鍵は手元に隠し持っておきます。
相手は<あなたの「閉める」専用鍵>を使ってデータを暗号化します。
そして、暗号化したデータをあなたに送ります。
<あなたの「閉める」専用鍵>で暗号化されたデータを開けることができるのは<あなたの「開ける」専用鍵>だけですので、送り途中で盗み見られることはありません。
あなたは届いた暗号化されたデータを<あなたの「開ける」専用鍵>で複合化し、確認します。
データの盗み見を防ぐには、鍵を開けられなければいいわけです。
「閉める」専用鍵は秘密にしなくてもいい、ということです。
「開ける」専用鍵を公開鍵と呼びます。
「閉める」専用鍵を秘密鍵と呼びます。
公開鍵暗号方式のメリット・デメリット
メリット:鍵の管理がシンプル
作っておくべき鍵は自分の公開鍵と秘密鍵だけです。
必要に応じて、データを送りたい相手の公開鍵を取得して、データを暗号化するだけです。
また、他の人に隠しておくべき鍵は自分の秘密鍵だけです。
「最初に2つの鍵(秘密鍵・公開鍵)を作り、秘密鍵を守り抜く」、という非常にシンプルな管理です。
デメリット:処理速度が遅い
後述する秘密鍵暗号方式と比べて、暗号化・複合化時に内部で行われる処理が煩雑な為(詳しい内容は難解なため今回は割愛します)、処理が遅いです。大量のデータを送受信するには不向きといえます。
秘密鍵暗号方式(共通鍵暗号方式)
秘密鍵暗号方式は、1種類の鍵を用いる暗号化方法です。
近年では、「共通鍵暗号方式」と呼ばれることが多いです。
データを暗号化することも複合化(暗号化を解く)することもできる鍵をあなたが持つと同時に、同じ内容の鍵(スペアキー)を相手に送ることで、どちらも同じ内容の鍵を持つという形です。
この鍵を共通鍵と言います。
お互いが共通鍵を隠し持ち、共通鍵を使って、どちらからもデータを暗号化でき、複合化できます。
共通鍵は、データをやり取りする2者間でのみ共有する鍵なので、データをやり取りする相手ごとに鍵を用意する必要があります。
秘密鍵暗号方式(共通鍵暗号方式)のメリット・デメリット
メリット:処理速度が速い
前述した公開鍵暗号方式と比べ、暗号化・複合化時の内部処理がシンプルで処理速度が速いです。データ量が多い場合には秘密鍵暗号方式での送受信が向いています。
デメリット:鍵の管理が煩雑・セキュリティがやや脆弱
公開鍵暗号方式は、公開鍵と秘密鍵を1セットのみ用意しておけば、誰とでもデータの送受信が可能ですが、共通鍵暗号方式の場合は、データをやり取りする相手ごとに、共通鍵の作成が必要なため、やり取りする相手が増えるほど、管理する鍵の数が増え管理が煩雑化します。
また、共通鍵暗号方式はやり取りする前に事前に共通鍵を相手に送らなければいけません。この共通鍵を送る途中で共通鍵を盗まれコピーされてしまった場合、その後に送受信する暗号化したデータも解読されてしまう可能性が高いです。
セッション鍵方式(ハイブリット方式)
公開鍵暗号方式と秘密鍵暗号方式は、それぞれメリット・デメリットがあります。そこで、公開鍵暗号方式と秘密鍵暗号方式のメリット部分を融合した暗号方式をセッション鍵暗号方式(ハイブリット方式)と呼びます。
具体的には、セッション鍵暗号方式とは、共通鍵を公開鍵暗号方式で送るという方式です。
実際のデータを「秘密鍵暗号方式」で暗号化し、秘密鍵暗号方式で利用する共通鍵を「公開鍵暗号方式」で暗号化して、暗号化した実際のデータと暗号化した共通鍵を併せて送り届けるという方式です。
セッション鍵暗号方式のメリット・デメリット
メリット:セキュリティ強度が高い・処理速度が速い・鍵の管理がシンプル
セッション鍵暗号方式をとることで、秘密鍵暗号方式で懸念される共通鍵の送付時の盗難を防ぎ、かつ、大量データを高速でやり取りすることができるようになります。
また、鍵の管理についても、共通鍵を送付する際のセキュリティが強化されることで1回ごとに鍵を変えて使うリスクが少なくなるため、共通鍵を全て保管しておく必要がなくなり、シンプルな管理が実現できます。
デメリット:なし
まとめ
データの暗号化方式は、暗号化・複合化するための「鍵」の種類とその「鍵」を誰が持つ必要があるかを覚えておくことが重要です。
データを通信の途中で盗まれないようにするには、どうすればよいか?なぜこのような方式が採用されているのか?を考えながら、一度自分なりに整理してみましょう。