TOP
51.64score

裏技君_

スポンサーOvertex

なぜなにハッシュアルゴリズム

今日はものっそいシンプルなタイトルで攻めます。
みんな大好き仕事証明。簡単な統計によって少ない通信量で効率的な仕事の証明が可能、それが仕事証明です。
ビットコイン界隈ではProof of Workとか呼ばれてます。そのまんまですね。
それは一体どんなシステムか。ちょっと長くなるので二分割です。

まずハッシュアルゴリズムについて、少しお話をしましょう。
ハッシュ関数とは、入力Aから出力A’を得ることは簡単ですが、この逆であるA’からAを得る事が出来ない関数を指します。
大抵の場合は入力Aが膨大な大きさのファイルになりますが、出力A’はとても小さなファイルに収められることが多いです。

このA’は、主にAのファイルの整合性確認のために使われます。
例えばAのファイルを適当な何処かのサイトから拾って来ました。このファイルの正確さを確認するにはどうすれば良いでしょうか。
これを完全に行うには、他のサイトで同じデータをダウンロードし、それを比較するくらいしかありません。
最初に拾ったファイル単体では、正確さを確認するための標本ファイルが存在しないからです。
また、同じファイルをふたつ比較して、そのどちらも違うものであると分かったとしても、どちらが正しいファイルなのか分かりません。
そもそも通信路を毎回圧迫するので全くスマートじゃありません。

そこでこのハッシュアルゴリズムですよ奥さん!
標本となるファイルと、ハッシュ出力結果のファイル、このふたつを併設して置けば問題ありません。
データをダウンロードしたい人は、まずデータをダウンロードし、それを一意のハッシュ計算機に通し、
そして出たハッシュ出力を持って落としたサイトのハッシュ値を比較、確認を取れば良いのです。
その後、同じファイルをアップロードしている他のダウンロードサイトのハッシュ値も確認しましょう。
これでなんとファイルの整合性確認が取れちゃうんです。すごいでしょ。
各サイトは自分の持っているファイルのハッシュデータを併設して置いておくだけ。

AからA’を得るのは簡単ですが、A’からAを得るのはほぼ不可能です。
逆に言えば、Aとは全く関係の無いBからA’のハッシュ値を作り出すことが困難になります。これが俗に言う強衝突耐性です。
A’となるようなBを無理矢理作成したい場合、ハッシュアルゴリズムごとに決められた「そのようなファイルが存在した可能性」を全て調べなければなりません。
例えばハッシュA’の容量が10bitだった場合、1024分の1の確率で存在するA’のハッシュを持ったBを作らなければなりません。
これを作るのにはBをちょっと弄ったファイルを1000個作り、ハッシュ結果がA’になるファイルを見つけなければならないのです。
続くよ!

.

最終更新日:2016-03-25 05:51

コメント (0)