とってもやさしいビットコイン

とってもやさしいビットコイン

ビットコインや仮想通貨の知識が全くない初心者の方でもビットコインや仮想通貨がどういうものなのか分かりやすく理解できるブログを目指してます。

SHA-256とビットコイン<初心者向け>

f:id:jyutakugyoseiku:20170630182848p:plain

 

ビットコインは「ハッシュ関数」という関数を多く用いられ作られております。そしてハッシュ関数の中でも「SHA-256」という言葉をビットコインについて調べていると多く目にすると思います。ここではSHA-256について初心者でも理解ができるよう、概要を解説したいと思います。このようなシステムを理解する事でビットコインや仮想通貨についての理解はぐっと深まり、仮想通貨についての様々な事柄を考察する時に役に立ちます。(ハッシュ関数についてはこちら⇒ハッシュ関数って何?

 

 

 bitFlyer ビットコインを始めるなら安心・安全な取引所で

 

SHA-256とは

 

SHA-256について理解をする為にまずは「SHA」が何の略かを知っておきましょう。「SHA」とは「Secure(セキュア) Hash(ハッシュ) Algorithm(アルゴリズム)」の略です。

 

「安全な(セキュア)ハッシュ関数の方法(ハッシュアルゴリズム)」という意味です。「ハッシュ関数」の安全な(セキュリティの高い)ものの定義が「SHA」という事です。

 

その「SHA」の256が「SHA-256」という事になります。


スポンサー

 

 

ハッシュ関数の「安全」とは

 

ハッシュ関数において「安全」とされるのは

・唯一のハッシュ値を出す(ハッシュ値が重複しない)

・ハッシュ値から元のデータを推測できない

などの特性を持つハッシュ関数です。

 

ハッシュ関数は元のデータから異なる数列を導き出す関数の事で、導き出された数列を「ハッシュ値」と言います。

 

仮にqwehgfrciupoiubgというデータをハッシュ関数にかけて「213e243」というハッシュ値が得られたとします。

 

この時元のデータqwehgfrciupoiubg以外に「213e243」を導き出せてしまうデータがあるとそのハッシュ値は唯一のものではないので暗号としては安全ではなくなります。例えばqwehgfrciupoiubgを知られたくない為にハッシュ化して213e243にしておいたのに他のデータからも213e243が得られてしまうとそのハッシュ値213e243は元のデータを指すとは言えなくなってしまうからです。(つまりハッシュ化しておく意味が無くなる)

 

また、213e243から元のデータを推測できてしまうとすればハッシュ化して213e243を持っていてもそれは元のデータqwehgfrciupoiubgを持っているのと同じになってしまいます。

 

これらの特性をしっかりと叶えるハッシュ関数を「セキュアな」ハッシュ関数と言います。

 

SHA-256は何をするか

 

SHAがどのようなものを定義するか分かれば「SHA-256」を理解するのはあと一歩です。

 

SHA-256はある任意の長さのデータから「256ビット」のハッシュ値を得ます。ここのSHA-256の「256」の由来があります。一定以下の長さのデータであればSHA-256を通せば256ビットのハッシュ値に変換をしてくれるのです。(一定以下の長さとは2の64乗マイナス1ビット)

 

実際にSHA-256を行います。

「hello,bitcoin」

をSHA-256でハッシュ化すると

「71089675D7361F82A65B1E54BB1AAA33AE0FF7EF9A2A24BAA77A191629FB1C3C」

という256ビットの文字列になります。

 

これがSHA-256の正体です。

 

実際にどんなデータでも(一定以下の長さであれば)ハッシュ化は可能ですので一度試しに行ってみましょう。こちらのサイト(SHA256ハッシュ - オンラインSHA256ハッシュジェネレータ)で実際に試す事ができます。

 

ビットコインとSHA-256

 

SHA-256はビットコインのどのような場所で使用されているのでしょうか?

 

最も身近な例は「ノンス(ランダムな文字列。よく出てくる単語「ノンス」とは)から秘密鍵を作成」「公開鍵からビットコインアドレスを作成」する時です。(秘密鍵から公開鍵を作成する時は異なる演算方式が利用されます。ビットコインの公開鍵と秘密鍵とは?

 

上記の

「hello,bitcoin」

をSHA-256に通した

「71089675D7361F82A65B1E54BB1AAA33AE0FF7EF9A2A24BAA77A191629FB1C3C」

というハッシュ値。秘密鍵を見たことがあれば何となく見たことのある文字列ではないでしょうか?

 

ランダムな文字列をSHA-256に通す事によって256ビットのハッシュ値を得て、それが秘密鍵になりますので実際の秘密鍵と同じビット数になっているのです。

 

ちなみに公開鍵はSHA-256に通した後異なる演算をするので更に小さな値になってビットコインアドレスとなります。

 

まとめ

 

他にもSHA-256は「マイニング」の際にも利用されます。実際にSHA-256を知らなくてもビットコインを扱う事はできますが知っておいた方が確実に良い知識です。なぜならビットコインやその他の仮想通貨は「暗号通貨」と呼ばれるほど暗号技術が使われており、その内容を知ろうと思えば必ず必要になる知識だからです。

 

今流行のICO(仮想通貨のICOとは?)に参加する場合は必ずその投資対象コインお仕組みを知っていた方が損をしません。その時に「SHA-256を利用」という文言をホワイトペーパー(仮想通貨プロジェクトの設計書)で見た時に理解できるのとできないのでは投資リスクに差が出ます。

 

このように仮想通貨全体や投資の事を考えてもなるべく知識をつけて保有したりするのが良いと私は考えます。

 

関連記事

ビットコインと暗号技術 ~偽造防止とスパムメール~

ビットコインのシステムが崩壊する時 ~ハッシュ関数編~

ビットコインマイニングの簡単な歴史「CPU~ASICまで」

 

 bitFlyer ビットコインを始めるなら安心・安全な取引所で

最初に手に取るビットコインの教科書

最初に手に取るビットコインの教科書