暗号技術

公開鍵暗号方式・RSA公開鍵暗号と一方向性関数

暗号通貨技術では公開鍵暗号方式である楕円曲線暗号を使っていますがその前に世間で最も幅広く利用されているRSA公開鍵暗号を説明していきます。RSAを知ることで公開鍵暗号方式の基本的な仕組みが理解できる筈。

共通鍵暗号の弱点と公開鍵暗号方式

公開鍵暗号方式は共通鍵暗号方式の弱点を補うために考案されました。

共通鍵暗号の考え方は至ってシンプルでひとつの鍵で情報を暗号化、復号する仕組み。AさんがBさんあてに情報(平文)を送る場合、Aさんが平文をロック(暗号化)してBさんは受け取った情報を解錠(復号)して平文を得ます。この時の鍵が同じなんです。

共通鍵暗号の弱点はこの「共通鍵」を第三者に盗まれると情報を解読される点。離れた2人が鍵を共有するためには必ずどこかで受け渡しが発生します。この時に盗まれたらアウト。

だったら鍵を別にしちゃえよ!が公開鍵暗号方式。暗号化の鍵と復号の鍵が異なる仕組みです。暗号化に使う鍵は別に第三者にばれてもいいので受け渡しに気を使う必要ありません。一方で一旦鍵をかけると解錠(復号)できるのは唯一の別の鍵。この時暗号化に使う鍵が公開鍵、復号に使う鍵が秘密鍵です。

RSA公開鍵暗号

RSA公開鍵暗号は超メジャーでインターネット上で現在も多く利用されています。RSAをざっくり説明すると、1.素数は無限に存在すること、2.掛け算は簡単だが割り算は難しい算数の特性の2点を利用した暗号方式。

例えば35は何と何の数字の掛け算であるかは九九を知っている人であれば誰でも分かるはず。答えは5と7、素因数分解をしています。この時RSA暗号では35が公開鍵、5と7が秘密鍵です。

この場合の具体的なやりとりは以下の流れ。

  1. AさんがBさんに他人に知られたくない大事な情報(平文)を送るとする(A⇒B)
  2. Bさんはその大事な情報(平文)を「公開鍵:35」で暗号化して送ってくれとAさんに依頼する(公開鍵を渡す、第三者に漏れてもいい)
  3. Aさんは貰った「公開鍵:35」で平文を暗号化して情報をBさんに送る
  4. 受け取ったBさんは自分が持っている「秘密鍵:5と7」で暗号化を解錠(=復号という)して平文に戻す

※仕組みを書いているので具体的な鍵の算出はほんとざっくりですのでご注意を。

素因数分解の一方向性

上記の35を公開鍵とするのは危険です。なぜならば小学生でも秘密鍵(5と7)を予測できるから。

では公開鍵221ではどうだろう?これも算数の得意な人なら検討つくかも知れない、秘密鍵は13と17。じゃあ1,754,807は?恐らく即座に答えられる人はいないと思う、正解は1,117と1,571。7桁の素因数分解となるとさすがに暗算は難しい、紙に書いて時間かけて計算が必要でしょう。

実はこれコンピュータでも同じで掛け算はササっと計算できるが割り算は苦手です。この桁が大きい数字の場合には掛け算であれば容易にできるけど逆の割り算は難しい特性を「一方向性」とかその関数自体を「一方向性関数」と呼びます。

RSA暗号方式は無限に存在する素数の一方向性関数を利用した公開鍵暗号方式です。実際に利用される公開鍵の桁数は最低でも155桁なのでコンピュータでも秘密鍵の計算(素因数分解して素数2個の算出=秘密鍵の抽出、パスワードの解読)はもはやリソースが掛かり過ぎて現実的ではないのです。

  • 公開鍵暗号方式は一方向性関数を利用している
  • RSA暗号方式は素因数分解の一方向性を利用している

以上が公開鍵暗号とRSA暗号方式の超ざっくりとした仕組みの説明です。今後随時細かく説明していきます。

-暗号技術

Copyright© 暗号通貨の接し方 , 2020 All Rights Reserved.