公開鍵暗号方式 – 公開鍵と秘密鍵の仕組み




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

公開鍵暗号方式とは?

ビットコインの電子署名やインターネットのSSLに公開鍵暗号方式が使われています。公開鍵暗号方式は1970年代に発明され現在も使用されている信頼ある暗号方式です。

名前からだと公開されている鍵と秘密な鍵という情報しかわかりませんね笑 これだけ見るとすごく難しそうな印象を受けます。

実際、これらの詳細な理論については数学の知識がないとなかなか理解できません。けど、どうやって鍵ができて、どこでどんな風に使われるかは誰でも簡単に理解できます。

今回は数学の理論なしに伝わるように説明したいと思います。

公開鍵と秘密鍵はどこからやってくるのか

まず基本となる2つの鍵がどうやって作られているかについてですが、公開鍵は秘密鍵から作ります。

なので、公開鍵は何個でも作成できるので失くしても問題ありません。じゃあ秘密鍵はどうやって作るのかというと、無作為に数字を選ぶだけです。

しかし、1から10の中から数字を選ぶというような規模ではなくめちゃくちゃ大きな桁数の中から無作為に数字を選ぶということです。

どのくらい大きい数字から選ぶか

どのくらい大きな数字かというと、ビットコインで使われる秘密鍵は0が77個続く大きさ10^77の桁の数字から無作為に選びます。想像もつかない大きさですが、宇宙にある原子の数は10^80個らしいので途方もなく大きな数字ですね。

ここで大事なのがこれだけ大きい数字の中から選ぶので世界中の誰とも同じ数字を選ぶ確率が非常に少ないということです。これは自分の他にも同じ秘密鍵を持つ可能性が限りなく少ないので安全と言えます。

公開鍵はどうやって作るのか

公開鍵は秘密鍵から作ります。どうやって作るのかというとハッシュ関数というものを使います。

ハッシュ関数は任意の入力に対して決まった値を出力してくれます。これは入力する値が同じであれば何度でも同じ出力を得ることができます。

このハッシュ関数に秘密鍵である数字を入力して出力されるものが公開鍵となります。ハッシュ関数は同じ入力に対して必ず同じ結果を出力するので公開鍵を失くしてもまた作ることができます。

しかし、ハッシュ関数の特徴として出力結果からどんな値が入力されたかを知ることができません。なので、秘密鍵をなくす失くすともう二度と手に入れることができなくなります。

鍵を使った暗号化と復号化

ここから鍵を使った暗号化の話になります。まず暗号化と復号化についてですが、暗号化とは文章や数字をそのままでは意味のない読めないものに変換することを言い、復号化はその読めなくなったものを元の読める状態に戻すことを言います。

この暗号化と復号化はどっちの鍵でもできるのですが1つだけ条件があります。それは、暗号化されたデータは暗号化で使ってない方の鍵でしか復号化できないというものです。

例えば、秘密鍵で暗号化したものは公開鍵でしか復号化できないし、公開鍵で暗号化したものは秘密鍵でしか復号化できません。

これが公開鍵暗号方式になります。一番最初に紹介したSSLはこの公開鍵暗号方式と共通鍵暗号方式の2つを利用して実現されています。

ビットコインでは公開鍵からビットコインアドレスを生成しています。秘密鍵はビットコインアドレスに紐づけられたビットコインを自分のものと証明するときに秘密鍵を使っています。

公開鍵暗号方式は現代のセキュリティや仮想通貨の仕組みを知る上でも非常に重要な分野となるのでしっかりと理解しておきましょう。

おすすめ書籍

ビットコインとブロックチェーンの詳細な解説からなる理論をしっかりと学びたい方には下記書籍が非常におすすめです。ブロックチェーンの基礎からPythonによるサンプルコードまで非常に濃い内容となっています。

こちらはブロックチェーンの初学者向けになります。ブロックチェーンの応用例の紹介から基礎的な理論まで分かりやすく図解で解説されています。また、ビットコインやEthereum、HyperLdger Fabricを実際に稼働させてみて動作を理解するためのサンプルコードの解説もあります。







コメントを残す

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