CATのゆったりライフ

日々生活の中で興味のある事を書いてます。

仮想通貨革命を読んで3

こんにちわ!CATです!

結構ビットコイン 上がってきましたね!アメリカの上場企業もビットコイン を買うようになったし、風向きが変わってきました。

私はただただ持ってるポジションを放置してるだけなので、黙って勉強します。

 

 

  • 暗号資産の暗号

 仮想通貨革命の末尾に補論として「公開鍵方式と署名」って章があるんですが、この本の中で一番むずかったです。メール送る時って書類にパスワードかけて送信して、また別のメールでパスワード送るって動作を仕事でやってませんか?個人的にはメールを2つに分けたところで意味ないように思ってます。パスワードをどう送るのか?ってのが問題ですよね。第三者に送信中に見られたら危ないですよね。

 次に発明されたのが、送信したパスワードを見られても第三者が解読できない暗号を開発した人がいて、ディフィ=ヘルマン鍵共有って名前で呼ばれてます。簡単な算数で決まった数字をお互いに共有するのですが、秘密の数字をそれぞれお互いに保有します。複雑な計算でお互いに伝えたい数字を伝える事はできますが、第三者がその数字を知るためには秘密の数字を盗むか、膨大な計算をしないといけません。

 このディフィ=ヘルマン鍵共有に刺激を受けて作られたのがRSA暗号RSA暗号は誰にでも知られても良い公開鍵と知られてはいけない秘密鍵にがあります。公開鍵で平文を暗号化しても秘密鍵を持つ人しか復号できません。計算式も見てみましたが、ディフィ=ヘルマン鍵共有と考え方は似てましたが、計算量が膨大で長いメッセージを暗号化するのは不向きなようです。

 

 太郎が花子にデータを送る時に注意することは

  1. データが改竄されていないこと
  2. 確かに太郎が送ったこと
  3. 太郎が送ったことを第三者が確認出来ること

です。これは「ハッシュ公開鍵暗号を組み合わせると解決する事が出来る。ハッシュ関数に求められる性質は

  1. 同じデータからは同じハッシュ値が得られる
  2. 違うデータからは違うハッシュ値が得られる
  3. データを要約して固定長のデータに変換
  4. ハッシュ値から元データを推定できない

だそうです。現在標準はSHA256ですね。ビットコイン やん。流れを書くと

f:id:Blueforesttan:20201018220106p:plain

  1. 太郎が花子にデータを送る
  2. 太郎はデータをハッシュ関数ハッシュ値を算出する
  3. 太郎はハッシュ値秘密鍵電子署名(暗号化)する
  4. 太郎は花子に「暗号化されたハッシュ値」を送付する
  5. 花子は太郎から受け取ったデータでハッシュ関数ハッシュ値を算出
  6. 花子は「暗号化されたハッシュ値」を太郎の公開鍵で復号する
  7. 5と6のハッシュ値が一致していることを確認する

となります。7でハッシュ値が一致している事からデータが改竄されていない事が分かり、6で太郎の公開鍵で復号化出来る事から太郎の秘密鍵で作ったハッシュ値である事が分かり、公開鍵は誰でも手に入れる事が出来るので第三者の確認もできます。

 

 正直、数ページしかないのに一番時間かかってますね。ノートに数字書いて計算して確認してます。RSA暗号の計算をしてみたのですが、計算に時間かかりますね。楕円曲線暗号RSA暗号よりも計算が早く出来るようです。

 楕円曲線暗号は公開鍵と秘密鍵、署名方法はRSAと同じです。公開鍵で暗号化し秘密鍵で復号する事も出来るし、秘密鍵で暗号化し公開鍵で暗号化する事もできます。楕円曲線暗号の仕組みは

 P ✖︎ k = Qとした時、Pとkが与えられた時にQが簡単に計算できるが、PとQからkを算出できないというような一方向性関数です。上記の電子署名を図にしたが、ECDSA暗号も同じ方法で電子署名が行われる。

 一見難しそうに見えますが1日考えてたら分かるかと思います。良いブログを見つけたので添付しておきます。LayerXの中の人がECSDAについて記載してました。

zoom-blc.com

 この方のブログ途中で更新止まってますが、非常に勉強になるので今後読んで勉強しようと思います。仮想通貨革命の内容は今日でおしまいで、次からはマイニングについて書いていこうかなって思ってます。それでは!

  

当ブログではGoogle Analyticsを利用して、アクセス解析を行うためにcookieを使用しております。Google Analyticsで集計したデータは、当ブログのアクセス解析や改良、改善の為に使用させていただくものとします。なお、cookieは個人を特定する情報を含まずに集計しております。


Googleによるデータの使用に関しては「ポリシーと規約」をご覧下さい。

ポリシーと規約