0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【公開鍵暗号方式】応用情報 令和6年春問38【解説】

0
Posted at

問題

公開鍵暗号方式を使った暗号通信をn人が相互に行う場合、全体で何個の異なる鍵が必要になるか。 ここで、一組の公開鍵と秘密鍵は2個と数える。
ア: $2n$
イ: $\frac{n(n-1)}{2}$
ウ: $n^2$
エ: $2^n$

そもそも公開鍵暗号方式とは

「誰でも暗号化できるけど、特定の1人しか解読できない」という仕組みの暗号方式です。
Webエンジニアにとって一番身近な例は、GitHubなどに接続するときの「SSH接続」や、Webサイトの「HTTPS通信」の裏側で動いている仕組みです。
南京錠(暗号化)と、そのカギ(復号)が別々になっている、とイメージすると分かりやすいです。

※補足:実際のHTTPS通信では、最初に公開鍵暗号方式を使って安全に「共通鍵」を受け渡し、その後のデータ通信は処理の速い共通鍵暗号方式で行う「ハイブリッド方式」が採用されています。

公開鍵と秘密鍵とは

この方式では、必ず「ペアとなる2つの鍵」をセットで作ります。(例えば id_rsa.pub と id_rsa のような関係です)

公開鍵(Public Key):

南京錠のようなもの。みんなに「私に秘密のメッセージを送るときは、この南京錠でガチャンとロックしてね!」とバラまいてOKな鍵。

秘密鍵(Private Key):

南京錠を開けるための、世界に1つしかない本物のカギ。絶対に誰にも見せてはいけない、自分だけが持っておく鍵。

解き方

この問題の最大のポイントは「1人が何個の鍵を持てばいいか?」を考えるだけ、という点です。
公開鍵暗号方式では、相手が何人いようと、「自分の公開鍵(バラまく用)」と「自分の秘密鍵(自分用)」の 1セット(2個) さえ作っておけば、世界中の誰とでも安全に通信できます。
つまり、通信する人が $n$ 人いる場合……全員がそれぞれ「自分のペア(2個)」を作るだけなので、計算式はシンプルです。

$$2 \times n = 2n$$

全体で必要な鍵の数は $2n$ 個 となり、正解は ア になります。

⚠️ おまけ:「共通鍵暗号方式」の場合

共通鍵の場合は、通信する相手ごとに「2人だけの専用の合鍵」を作る必要があります。
したがって、鍵の数は「$n$人の中から通信する2人のペアを選ぶ組み合わせ(数学の ${}_nC_2$)」と同じになり、公式は $\frac{n(n-1)}{2}$ となります。(総当たり戦の試合数を求める計算と同じです。)

・公開鍵暗号方式: $2n$ (みんな自分のペアを作るだけ)
・共通鍵暗号方式: $\frac{n(n-1)}{2}$ (相手ごとに合鍵を作るので大変)

🍌NanoBanana君による解説漫画

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?