見出し画像

公開鍵暗号方式を美味しく学ぼう!#例えて学ぶセキュリティ

はじめまして、駆け出しセキュリティエンジニアの浅羽です。
突然ですが、「共通鍵暗号方式」と「公開鍵暗号方式」を正しく説明できますか?
この2種類の暗号方式はITパスポートにも登場するので耳なじみのある方も多いかと思います。
しかし、違いや仕組みを説明するとなると、混乱する方が多いのではないでしょうか。(私は混乱しました)

中でも共通鍵暗号方式はわりと単純なのですが、公開鍵暗号方式については、「受信/送信どちらが鍵を用意するのか」、「なぜ鍵を2つ用意する必要があるのか」や、「公開鍵と秘密鍵どちらで暗号化するのか」など、複雑ですよね。
ということで、2つの方式の解説に加え、特に曲者である公開鍵暗号方式については面白おかしく例えながらお勉強していきましょう!

ただし書き
今回のお勉強範囲はITパスポート出題レベルの基本的な流れまでとなっています。
実際にはこれらの技術を応用することで、より強度の高い暗号通信を実現しています。

そもそも共通鍵暗号方式と公開鍵暗号方式はどのような仕組みなのでしょうか?
まずは、教科書的な図解と説明です。

共通鍵暗号方式の解説

「共通」という名の通り、暗号化と復号を同じ鍵で行う方式のことを指します。

やり取りの流れ

➀ A(データ受信者)が双方で暗号化、復号のできる鍵(共通鍵)を用意★
➁ AがB(データ送信者)に共通鍵を送る★
➂ Bが共通鍵を受け取る★
➃ Bが、Aから受け取った共通鍵でデータを暗号化
➄ Bが暗号化したデータをAへ送る
➅ Aが、Bから受け取った暗号化データを共通鍵で復号
★鍵のやり取りは、Bが作った共通鍵でも成立します。

事前に共通鍵を作り、それを2人の間でシェアする形になります。

メリット

  • 暗号化/復号の処理速度が速い
    →暗号化に伴う計算がシンプルなため、早い速度での処理が可能です。

デメリット

  • やり取りをする人の組み合わせ分、それぞれ鍵を用意する必要がある
    →1つの鍵で暗号化と復号が可能なため、他の人との使い回しができません。

  • 双方が鍵を適切に管理する必要がある
    →共通鍵は暗号化と復号が両方できるため、鍵が第三者に盗まれてしまうと情報漏えいの恐れもあり、受け渡し時や、管理には双方どちらも注意が必要です。

というように、データのやり取りのする上で、暗号化と復号を同じ鍵でやり取りをするのが「共通鍵暗号方式」です。

公開鍵暗号方式の解説

公開鍵暗号方式は公開鍵、秘密鍵のセットの鍵を使用しており、公開鍵で暗号化したデータはセットの秘密鍵でのみ復号できます。

やり取りの流れ

➀ A(データ受信者)が秘密鍵と公開鍵のペアを作成
➁ AがB(データ送信者)に公開鍵を送る
➂ Bが公開鍵を受け取る
➃ Bが、Aから受け取った公開鍵でデータを暗号化
➄ Bが暗号化したデータをAへ送る
➅ Aが、Bから受け取った暗号化データを秘密鍵で復号

受け取る側が、事前に「自身の秘密鍵」と「自身の公開鍵」を作って、「自身の公開鍵」のみをシェアする形となります。

メリット

  • やり取りする人の組み合わせ分、それぞれ鍵のペアを用意する必要がない
    →復号できる鍵(秘密鍵)は自分だけが持っているため、他の人とのやり取りでも同じ鍵のペアを利用できます。

  • 複号用の鍵(秘密鍵)を外部に渡さないことにより、共通鍵と比べてセキュリティ強度が高い
    →鍵のやり取りでは暗号化用の鍵(公開鍵)のみの送付になるため、第三者に復号されてしまう心配がありません。よって、機密性を確保することが比較的容易となります。

機密性って?
データ等を見られたくない人に見せないこと

デメリット

  • 暗号化/復号の処理速度が遅い
    →共通鍵に比べ、複雑な計算や処理が必要なため、処理に時間を要します。

秘密鍵と公開鍵を用意して、その中から送信者に公開鍵のみを送付して、送信者は公開鍵を使用して暗号化し、受信者は暗号化したデータを受け取ったあと自身の秘密鍵で復号して・・・う~~んやっぱりややこしいですね!笑
ちょっと例えてみましょう。

チョコで例える公開鍵暗号方式

# 執筆中、おなかが空いたのでチョコに例えることにしました♡

まず、彼女であるAさんからの手作りチョコを誰にもつまみ食いされたくないB君がいるとします。最愛の人からのチョコ、ひとり占めしたいですよね。

そんなB君は試行錯誤の上、特製の下剤(公開鍵)と、特製下剤の中和剤(秘密鍵)を開発することに成功しました。
B君は意気揚々とAさんへ、「この薬(特製下剤)をチョコに混ぜてほしい」とお願いします。
お願いを受けたAさんは言われるがままにチョコ(特製下剤入り)を作り、B君に渡します。誰かが少し口に入れようものなら大変なことになってしまうため、つまみ食いをする悪の手から逃れられますね。
これを「B君の公開鍵で暗号化」とします。

B君は貰ったチョコ(特製下剤入り)を食べる前に先ほど開発した特製中和剤を摂取し、特製下剤を中和できるようになるのを待ちます。
これを「B君の秘密鍵で復号」とします。
中和された後、B君はチョコを美味しく食べることができました。
めでたしめでたし。

こう見てみると、下剤入りチョコを安全に食べるための術がないB君以外の人々は、誰も食べることができませんよね?
もし、特製下剤が盗まれてしまっても、セットの中和剤が無ければ中和できません。お腹を下すヤバいチョコのままなので、第三者に美味しく食べられてしまうことはないのです。安心ですね。

それに、B君の手元にある中和剤さえ盗まれないようにすれば、下剤と中和剤のセットを使い回して、他の女の子からも他の人につまみ食いされることのないチョコをもらう事ができます。罪な男ですね。

例えのまとめ

この流れを書き表すと以下のようになります。
① B君が、下剤(公開鍵)と中和剤(秘密鍵)を開発
② AさんにB君の下剤(公開鍵)を渡し、チョコに混ぜてもらうようお願い
③ Aさんが下剤入りチョコを作成(暗号化)
④ 周りから恐れられており、手を付けられることのない下剤入りチョコをB君が貰う
⑤ B君自身で発明した中和剤(秘密鍵)を飲み、無毒化されたチョコを食べる(複号)

「受信/送信どちらが鍵を用意するのか」、「なぜ鍵を2つ用意する必要があるのか」や、「公開鍵と秘密鍵どちらで暗号化するのか」などのややこしさがなんとなくわかったのではないでしょうか?

さいごに

例えて学ぶ公開鍵暗号方式はいかがでしたか?
難しい用語でも、例えることで見方を変えれば少しだけわかりやすくなることがあります。
ぜひ、皆さんも面白おかしく例える学習法を試してみてくださいね!
ご高覧ありがとうございました。

執筆:浅羽 美和子