blockchain

【図解】公開鍵暗号方式をわかりやすく直観的に!

投稿日:11月 29, 2018 更新日:

わかりそうでわからない「公開鍵暗号方式」

ビットコインとかブロックチェーンについて調べてると

「秘密鍵」

という言葉によく出会います。

 

秘密鍵って何?って感じで調べると、

秘密鍵、公開鍵、公開鍵暗号方式

なんかに行き当たります。

 

Wiki曰く、

暗号文を送るには、送りたいメッセージと、そのメッセージの送信先(受信者)の公開鍵を、入力として暗号化アルゴリズムを実行する(公開鍵は公開情報なので、暗号文の送信者は受信者の公開鍵を手に入れる事ができる)。

それに対し、受信者は復号アルゴリズムに自分の秘密鍵と暗号文を入力して、もとのメッセージを復元する。

wikipedia 「公開鍵暗号方式」より引用

ふむふむ。

公開鍵で暗号化して、秘密鍵で復元するのね。

 

…。

いや、よくわからないです。

そんなことできんの??

 

 

ということで、

この記事では公開鍵暗号方式の本質について、

図を用いて直観的に理解できるようにわかりやすく説明します。

 

公開鍵暗号方式のアイデアをわかりやすく

まずは何をしたいのか考えましょう。

AさんからBさんにメッセージを送ります。

しかし、途中で誰に見られるかわからないので、

Bさん以外の人に中身を見られないようにしたいのです。

 

共通鍵暗号

一つのアイデアとして、南京錠でカギをかけてから

①カギを送り

②カギのかけられたメッセージを送る

というものがあります。

これでメッセージは途中で誰かに見られることはありません。

 

本当にそうでしょうか?

 

実はこの方法では

カギを送るときに誰に見られているかわからない

という問題があります。

 

メッセージが誰に見られているかわからないのと同じですね。

悪い人にカギをコピーされてしまうかもしれません。

Bさん以外の人もカギを持ってたら途中で見られ放題です。

これでは安全ではありませんね

 

これが共通鍵暗号方式です。

最初に送るカギが共通鍵です。AさんとBさんに共通のカギということです。

 

公開鍵暗号方式のアイデア

共通鍵暗号では送るカギが誰にでも見られてしまう(=コピーできる)という問題がありました。

 

それならカギではなくて、

南京錠の方を送ればいいのでは?

というのが公開鍵暗号方式です。

①まずBさんはカギと南京錠を用意

②Aさんに南京錠を送る

③Aさんは送られた南京錠でメッセージにカギをかけ、Bさんに送る

 

当然、送る南京錠は誰に見られているかわからないので

コピーされてしまうこともあるでしょう。

しかし、南京錠を持っていてもカギは開けられません

 

最初にBさんが用意したカギが秘密鍵、それに対応する南京錠が公開鍵です。

公開鍵は誰に知られてもいいが、秘密鍵はBさんだけの秘密にしなければなりません。

 

これが公開鍵暗号方式のアイデアです。

なるほど、アイデアはわかりました。

でも、どうすれば実現できるんでしょうか??

 

実現方法を直観的にわかりやすく

要するに何がしたいかというと、

AさんとBさんだけが知っている情報を作りたいのです。

 

突然ですが、絵の具を使います。

AさんとBさん、Cさんがいる状況で、Cさんには知られずに

AさんとBさんだけが知っている色をつくりだすこと

を目標にします。

 

手順は4ステップです。

  1. Bさんは秘密の色と公開する色を決める
  2. Bさんは秘密の色と公開する色を混ぜ、公開する
  3. Aさんは秘密の色を決め、Bさんが決めた公開する色と混ぜ、公開する
  4. BさんはAさんが公開した混ぜた色とBさんの秘密の色を混ぜる。AさんはBさんが公開した混ぜた色とAさんの秘密の色を混ぜる。2つの色は同じになる。

うーん。長いし複雑…。

順番に図を使いながら見ていきましょう。

 

1.

まず、Bさんは

自分だけが知っている秘密の色

皆に公開する色

を決めます。

 

今回は秘密の色を黄色、公開する色を赤としましょう。

 

2.

次に、Bさんは秘密の色と公開する色を混ぜた色を作ります。

そして、もとの公開する色と混ぜた色を公開します。

混ぜた色はオレンジっぽくなりました。

ここで重要なのは

混ぜた色からは秘密の色が何なのか正確には分からない

ということです。

秘密の色がだいたい黄色っぽいというのはわかっても、

何対何で混ぜたのか、など正確なことは分かりません。

 

3.

続いて、Aさんが秘密の色を決めます。

Aさんは秘密の色とBさんが作った公開する色を混ぜ、公開します。

Aさんは青を秘密の色に決め、公開されている赤と混ぜた色は紫色っぽくなりました。

 

4.

最後に、

Bさんは公開されている混ぜた色Aと自分の秘密の色を、

Aさんは公開されている混ぜた色Bと自分の秘密の色を

それぞれ混ぜます。

これで2人だけの秘密の色が完成します。

 

 

本当に完成したAさんとBさんの色は同じ色なのでしょうか?

Aさんから見ると

(完成した色)=青+オレンジ

=青+赤+黄色

Bさんから見ると

(完成した色)=黄色+紫

=黄色+赤+青

なので確かに同じ色になっています。

 

 

また、本当にAさんとBさんの二人だけの秘密になっているのでしょうか?

Cさんには公開されている色が見えています。

真ん中の3色ですね。

この3色だけでは秘密の色を作ることはできません

試しに公開されている、混ぜた色A,Bを足してみましょう。

(混ぜた色A)+(混ぜた色B)

=(赤+青)+(赤+黄色)

というように、AさんとBさんの持っている完成した色とは違った配合になってしまっています。

紫と赤から秘密の色である黄色をつくれないと

完成した色は作れないのです。

 

実現方法をもう少しだけ詳しく

絵の具を使って2人だけの秘密を作り出せることはわかりました。

では、実際、インターネット上ではどうするのでしょう

絵の具なんて使えません。

 

絵の具の例を少し思い出してみましょう。

なんで例として絵の具が出てきたのでしょうか?

それは、絵の具の

混ぜた色からは秘密の色が何なのか正確には分からない

という性質を使いたかったからです。

 

もっと簡単に言うと

「戻れない」

という性質を使いたいのです。

 

ここで登場するのが「素因数分解」やです。

中高生のころに素数や素因数分解が暗号に利用されていることをきいたことがあるかもしれません。

2つの大きな素数の積を素因数分解するのは難しい

という性質を利用します。

 

4291を素因数分解しろって言われても、すぐにはできないですよね。

まあ、そんな感じです。

 

絵の具の例で言うと

秘密の色や公開する色というのが大きな素数、

混ぜるというのがかける(積)に相当します

 

これ以上の詳しいところはもう疲れてしまったので、

ご自分で調べていただくか、

本であれば

「世界でもっとも強力な9のアルゴリズム」

がおすすめです。


数学やコンピュータについての知識が無い人でもわかるように丁寧にアルゴリズムの説明がなされています。

(modとか出てきません!)

 

まとめ:公開鍵暗号方式

公開鍵暗号方式について直観的に分かるように、絵の具の色を使って説明しました。

これで秘密鍵の重要さもちょっとはわかるんじゃないかと思います。

 

公開鍵暗号方式は現在のインターネットにおける通信の中でも非常に重要な役割を担っていて、出てくるのはビットコインとかブロックチェーンの領域に限りません。

どこにでも使われているのです。

 

しかし、量子コンピュータが実現すればこの暗号も破られてしまうことになります。

量子コンピュータについてはこちらの記事ご参照ください。

 

オシマイ。

-blockchain

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

WindowsでGethをインストールしてマイニングを体験![初心者向け]

Geth(Go Ethereum)をインストールしてイーサリアムで遊んでみたい! けど自分windowsだし、パソコン詳しくないし難しそう…ってな方向けに ・Windows10で ・gethをインスト …

Segwitによって解決されたトランザクション展性(マリアビリティ攻撃)とは?

ビットコインについて調べていると「segwit」という言葉をよく目にします。 その目的として以下の2つが挙げられています。 スケーラビリティ問題の解決(改善) トランザクション展性(マリアビリティ攻撃 …

マイナーのジレンマ(The Miner’s Dilemma)

■目次 ・「マイナーのジレンマ」の内容を一言でいうと ・前提知識(知ってたら飛ばしてください)  →マイニングプールとは  →囚人のジレンマとは  →(無限)繰り返し囚人のジレンマとは  →Block …

ブロックチェーンってなに?~①簡単な特徴(長所)~

  ブロックチェーンを布教していると すぐにある難題に直面します。   「ブロックチェーンってなに??」   この純粋無垢な質問に僕はタジタジになってしまうのです。 &n …

量子コンピュータの実現でビットコインはオシマイ⁉

■目次 ・量子コンピュータがビットコインを破壊する!? ・量子コンピュータがビットコインに与える影響 ・そもそも量子コンピュータとは? ・量子コンピュータがビットコインに与える影響についての見解 ・量 …