
図解で分かる!暗号化の仕組みや種類について
皆さまこんにちは。2020年に新卒として株式会社コンピュータマネジメントに入社し、Webマーケティングを担当している入社4年目のMです。
先日、YouTubeを徘徊していたところ、QuizKnock (クイズノック)が主催する面白そうな動画を見つけました。なんと、QuizKnock内で初の1000万回再生を記録した超人気動画だそうです。
QuizKnockは、クイズ王として知られる伊沢拓司氏率いる東大発の知識集団で、TBS系列で放送されているクイズ番組「東大王」にも度々出演しており、ご存知の方も多いのではないでしょうか。
動画では、細田守監督の映画「サマーウォーズ」序盤で主人公・健二がいとも簡単に解いてしまった「RSA暗号」の解読に、QuizKnock精鋭の理系2人組が「あ゛あ゛あ゛~~~」とうなり声を上げながら挑戦しています。
結果的に、世界最先端のコンピューター技術をもってしても解読が難しいとされる暗号を、紙とペンだけでたった一晩で解いてしまった健二は、化け物レベルの頭脳を持っていることが判明したそうです。わぁぁお。。。
・・・前置きが長くなってしまいましたが、劇中に出てくる「RSA暗号」は、現代社会に幅広く普及している暗号化技術の一種であり、今でも世界中のあらゆるセキュリティ対策に役立っているとされています。
そこで今回は、私たちの生活やビジネスで使用する大切なデータを守るために欠かせない「暗号化」の仕組みやその種類について、図解で分かりやすく解説していきたいと思います。
暗号化とは?
「暗号化」とは、元のデータ(平文)を違う文字列のデータに変換し、第三者が容易に解読できない状態にすることです。
一般的に、メールやインターネット上において機密データを送受信する際に用いられます。
仮に暗号化されたデータが流出したとしても、そのままでは意味のないランダムな文字列が表示されることから、第三者によるデータの悪用防止に役立ちます。
一方で、暗号化されたデータを元に戻すことを「復号」と言います。
復号しないと元のデータの内容を知ることができないため、暗号化と復号は必ずセットで行われます。
暗号化の仕組み

暗号化は、ある一定のルールに従って行われます。
このルールのことを「アルゴリズム」と言い、実に様々な種類があります。
例えば、「一文字後ろにずらす」というアルゴリズムに従って暗号化を行うなら、「あいうえお」という文字列は「いうえおか」と変換されます。
復号の際も、暗号化と同じアルゴリズムを用いれば、元の「あいうえお」という文字列を得ることができます。
しかし、この「一文字後ろにずらす」というアルゴリズムを、データ送信者・受信者以外の人物が知っていたとしたらどうなるでしょうか。
第三者によってデータを簡単に復号されてしまい、暗号化によるデータ保護はもはや意味を為さなくなります。
そのため今では、暗号化の際はアルゴリズムのほかに「暗号鍵」を使う方法が主流となっています。
暗号鍵を使えば、同じ暗号化アルゴリズムを用いながら利用者によって暗号化の手順を異なるものにできるため、たとえ第三者がアルゴリズムを知っていたとしても、暗号鍵を持っていない限りデータは復号できません。
ですが逆に言えば、「鍵」を盗まれてしまったら最後、暗号化したデータが不正に解読されてしまうことになるため、暗号鍵が決して第三者の手に渡らないよう、厳重に管理する必要があります。
暗号化方式の種類
暗号鍵を使った暗号化方式には、「共通鍵暗号方式」「公開鍵暗号方式」「ハイブリッド暗号方式」の主に3種類があります。
共通鍵暗号方式

「共通鍵暗号方式」とは、データの暗号化と復号に同じ鍵(共通鍵)を用いる方式です。共通鍵を「少人数」で安全にやり取りできる環境が整っている場合に有効な方法といえます。
手順は以下のようになります。
1. 送信者:共通鍵でデータを暗号化する
2. 送信者:共通鍵と一緒に、暗号化したデータを受信者へ共有する
3. 受信者:受け取った共通鍵でデータを復号する
共通鍵暗号方式はPCへの負荷が軽く、暗号化・復号の処理が高速で行えるのが主なメリットです。複雑な工程もなく方法がシンプルなため、分かりやすいのも特徴です。
一方で、鍵の受け渡し途中で第三者に鍵を盗まれるリスクが存在します。
また、正規の受信者以外が復号できないよう、データのやり取りを行う相手ごとに異なる共通鍵を用意する必要があるため、人数が多くなればなるほど鍵の管理が大変になるというデメリットもあります。
公開鍵暗号方式

「公開鍵暗号方式」とは、データの暗号化と復号に異なる別々の鍵を用いる方式です。
「大人数」での暗号化データのやり取りが必要な場合に有効な方法とされ、暗号化に用いる鍵を「公開鍵」、復号に用いる鍵を「秘密鍵」と呼びます。
手順は以下のようになります。
1. 受信者:公開鍵と秘密鍵を作成する
2. 受信者:公開鍵のみを送信者に共有 or 一般公開
3. 送信者:公開鍵を使用してデータを暗号化する
4. 送信者:暗号化したデータを受信者へ共有する
5. 受信者:自身だけが持つ秘密鍵でデータを復号する
公開鍵暗号方式では、「公開鍵」で暗号化したデータは対となる「秘密鍵」でしか復号できません。
データの復号に必要な「秘密鍵」は受信者だけが持っているため、公開鍵を広く世の中に公開したとしても、秘密鍵の情報が外部に漏れさえしなければ、第三者がデータを解読できる術はありません。
そのため、用意する「公開鍵」は1つでOKで、「共通鍵暗号方式」のようにやり取りする相手ごとに鍵を用意する必要がないため、鍵の盗難リスクが低く安全性が高い・鍵の管理がラクというメリットがあります。
一方で、共通鍵暗号方式に比べると暗号化・復号の処理に時間がかかり、PCへの負担が大きくなりやすい点がデメリットとなります。
ちなみに、冒頭で出てきた「RSA暗号」は、桁数の大きな数字の素因数分解が非常に困難であることを利用した、公開鍵暗号方式の代表的な暗号化アルゴリズムです。
ハイブリッド暗号方式

「ハイブリッド暗号方式」とは、共通鍵暗号方式と公開鍵暗号方式の「良いとこ取り」をした方式です。
データの暗号化・復号には処理スピードの速い「共通鍵暗号方式」を用い、鍵の受け渡しは安全性の高い「公開鍵暗号方式」で行います。
「共通鍵暗号方式」の鍵盗難によるセキュリティリスクと、「公開鍵暗号方式」の処理速度の遅さという弱点を、お互いにカバーし合っている感じですね。
データ受け渡しにおける全体の流れは以下の通りです。
1. 受信者:「公開鍵」と「秘密鍵」を作成する
2. 受信者:「公開鍵」を送信者へ共有する
3. 送信者:「共通鍵」を作成し、データを暗号化する
4. 送信者:受信者から送られてきた「公開鍵」で、「共通鍵」を暗号化する
5. 送信者:暗号化した「共通鍵」とデータを受信者へ送る
6. 受信者:送信者から送られてきた「共通鍵」を、「秘密鍵」で復号する
7. 受信者:復号した「共通鍵」でデータを復号する
少々複雑なので、もう少し簡単にまとめるとこのような感じになります。
1. 送信者:「共通鍵」でデータを暗号化
2. 送信者:「公開鍵」で「共通鍵」を暗号化
3. データ送信:送信者 ⇒ 暗号化したデータ・共通鍵 ⇒ 受信者
4. 受信者:「秘密鍵」で「共通鍵」を復号
5. 受信者:「共通鍵」でデータを復号
データそのものの暗号化・復号には「共通鍵」を、共通鍵の暗号化・復号には「公開鍵」「秘密鍵」を用いる、と覚えていただければ分かりやすいかと思います。
この「ハイブリッド暗号方式」の登場により、セキュリティの安全性と高速処理を両立しつつ、暗号化と復号を行えるようになりました。
まとめ
今回は、映画「サマーウォーズ」に登場する「RSA暗号」にちなんで、暗号化の仕組みや種類について詳しく解説しました。
特に、「ハイブリッド暗号方式」が中々ややこしいですが、
・データの暗号化&復号:処理速度が速い「共通鍵」
・共通鍵の暗号化&復号:受け渡しの安全な「公開鍵・秘密鍵」
を使う、と覚えておくと、全体の流れもきっとイメージしやすくなると思います!
それでは今回はこの辺で。次回のnoteもお楽しみに!
ここまで読んでいただき、ありがとうございました!