FC2ブログ

鎖つなぐハッシュ値の不思議

日経BizGate/いまさら聞けないITの常識:仮想通貨の「ブロックチェーン」 鎖つなぐハッシュ値の不思議 中央大学国際情報学部教授 岡嶋 裕史、2019/9/30より

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


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

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

 

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


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


ハッシュ値の特徴は、・同じデータを同じハッシュ関数にかけると、必ず同じハッシュ値が出てくる。・ちょっとでもデータをいじると、似ても似つかないハッシュ値になる。・ハッシュ値から、もとのデータを推測することは事実上不可能


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


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


もちろん、もとのデータとハッシュ値の両方が改竄されると、不正に気付けません。また、パスワードをそのまま保存しておらず、ハッシュ値にして保存しているから大丈夫、と説明しているサイトがあります。 確かにパスワードをそのまま保存するよりは、ずっと安全です。そして、利用者がパスワードを入力してきたときには、そこからハッシュ値を作り、保存してあったハッシュ値と比較することで、正しいパスワードかチェックすることもできます。


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

aのハッシュ値 0cc175b9c0f1b6a831c399e269772661

bのハッシュ値 92eb5ffee6ae2fec3ad71c777531578f

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


もちろん、それは「可能性がある」だけで、任意のパスワードを見つけるには無限に等しい試行錯誤が必要なので、事実上不可能=安全という理屈です。ただ、ありがちなパスワード、たとえば「123456」のハッシュ値は「92eb5ffee6ae2fec3ad71c777531578f」などと結果を蓄積しておけば(レインボーテーブルという手法です)、弱いパスワードを使っている人のハッシュ値はすぐに特定できてしまうかもしれません

記事分類
BlogPeople
INポイントランキング
ブログパーツ
リンク
内村鑑三の言葉
日本に欠乏しているものは何か。それは富ではない。知識ではない。才知ある計略でもない。愛国心でもない。道徳でもないだろう。欠けているのは「生きた確信」である。真理そのものを愛する「情熱」である。この確信、この情熱からくる無限の歓喜と満足である。
武者小路実篤の言葉
何のためにあなたたちは、生きているのですか。国のためですか、家のためですか。親のためですか、夫のためですか、子のためですか。自己のためですか、愛するもののためですか。愛するものを、持っておいでですか。
プロフィール

佐藤蓼丸

Author:佐藤蓼丸
オリジナルのブログを目指して鋭意更新中