いまさら聞けないITの常識

仮想通貨の「ブロックチェーン」 鎖つなぐハッシュ値の不思議 中央大学国際情報学部教授 岡嶋 裕史

記事保存

日経BizGate会員の方のみご利用になれます。保存した記事はスマホやタブレットでもご覧いただけます。

 であれば、いっそすべてを公開して衆目に晒してしまうことが、解決策になり得ます。誰かがおかしな振る舞いをすれば、とても目立ちます。それによって利益を逸失したり損を被る可能性のある人が、血眼になって不正を探してくれるかもしれません。

 また、ビットコインには一定の管理者が存在しません。全参加者の多数決によって、ブロックチェーンが承認され、機能しています。これによって、管理者が不正をしたり、不当に利益を得る可能性を極小化できます。

 こうした理念を技術面で支えているのが、ハッシュマイニングです。

ハッシュ値という不思議な数字

 すべての利用者にデータを配布すると、第三者が不正なデータを追加するかもしれませんし、お金を使った人も「使った覚えはない」などと言い出すかもしれません。これらを防止するために、ブロックチェーンではハッシュ値が使われています。

 ハッシュ値は、あるデータをハッシュ関数(いろいろ種類があります)にかけると出力される値で、たとえば「日本経済新聞出版社」というデータを、MD5ハッシュ関数にかけると、こういうハッシュ値が得られます。

d0ee5d01c5811b0eda648cdd8ba899f4

※注 16進数で表示しています。16進数では10をa、11をb、...15をfで表します。

ハッシュ値の特徴は、

・同じデータを同じハッシュ関数にかけると、必ず同じハッシュ値が出てくる

・ちょっとでもデータをいじると、似ても似つかないハッシュ値になる

・ハッシュ値から、もとのデータを推測することは事実上不可能

確かに、d0ee5d01c5811b0eda648cdd8ba899f4から、「おお、これはもとのデータは『日本経済新聞出版社』に違いない」と判断できる人はいませんし、もとのデータを「日本経済新聞出版」と1文字削ってみると、

88382fd6651e98be881677408f8a70fd

と、全然違う値が出てきます。この特性があるので、ハッシュ値はよくデジタルデータのサイン代わりに使われます。あるデータからハッシュ値を取得しておくと、そのデータが改竄(かいざん)されたときにハッシュ値も変わってしまうので、改竄に気付けるのです。

 もちろん、もとのデータとハッシュ値の両方が改竄されると、不正に気付けません。

 また、パスワードをそのまま保存しておらず、ハッシュ値にして保存しているから大丈夫、と説明しているサイトがあります。

 確かにパスワードをそのまま保存するよりは、ずっと安全です。そして、利用者がパスワードを入力してきたときには、そこからハッシュ値を作り、保存してあったハッシュ値と比較することで、正しいパスワードかチェックすることもできます。

 とはいえ、実はハッシュ値を推測する方法はあります。たとえば、

aのハッシュ値 0cc175b9c0f1b6a831c399e269772661

bのハッシュ値 92eb5ffee6ae2fec3ad71c777531578f

 と、繰り返していけば、理屈の上ではすべての文字列に対するハッシュ値が得られることになり、合致するハッシュ値を見つけ出すことで、「ああ、このハッシュ値は××だったんだな」とわかってしまいます。

 もちろん、それは「可能性がある」だけで、任意のパスワードを見つけるには無限に等しい試行錯誤が必要なので、事実上不可能=安全という理屈です。

 ただ、ありがちなパスワード、たとえば「123456」のハッシュ値は「92eb5ffee6ae2fec3ad71c777531578f」などと結果を蓄積しておけば(レインボーテーブルという手法です)、弱いパスワードを使っている人のハッシュ値はすぐに特定できてしまうかもしれません。

閲覧履歴

    クリッピングした記事

    会員登録後、気になる記事をクリッピングできます。