ハッシュ関数ってなんぞや
ブロックチェーン技術には欠かせないのがハッシュ関数です。
これは、暗号化分野でよく使われている関数のようで、その出力した値(情報)に対して、唯一無二のハッシュ値を返すというものです。このハッシュ値から参照することで、元のデータが改ざんされていないか、または、すり替えられていないかを検証することができます。
少々複雑なので簡単に図で説明します。
-
値を入れる
-
ハッシュ関数が処理
-
ハッシュ値が出来上がる

例えば、木村さんが鈴木さんにデータを送ろうとしています。
木村さんが値A をハッシュ関数で処理し、ハッシュ値 Z を作成したとします。
このハッシュ値 Z は、唯一無二であるので、たとえ、鈴木さんが同じ値A をハッシュ関数で処理しても、ハッシュ値 Z が求められるはずなのです。
これで、
鈴木さんが求めたハッシュ値 = 木村さんが求めたハッシュ値 Z
であれば問題ないのですが、もし
鈴木さんが求めたハッシュ値 ≠ 木村さんが求めたハッシュ値 Z
となると木村さんの元の値A は変更されていると証明できるのです。
ハッシュ関数の特徴
・長さの違う値でも、常に一定の桁数のハッシュ値が作成される。
・一つの値に対して、常に唯一無二のハッシュ値が作成される
・入力する値は、数値、テキスト、ファイル形式でも可能
・ハッシュ関数を使うことで、その情報が原本と同じであること、改ざんされていないことを保証できる
ハッシュ関数の衝突問題
ハッシュ関数の最大の特徴は、一つの値に対して唯一無二のハッシュ値が作成されることだと記述しました。
しかし、ごく稀に、本当にごく稀に違う値で同じハッシュ値が作成されてしまうことがあり、それはハッシュ関数の衝突問題と呼ばれています。
図にすると、下記のようになります。
異なる値、ABCとBCAを入力した際に、同じハッシュ値 Z が作成されてしまっています。

しかし、これは実際に起きる確率は非常に、非常に低く、故意に起こすことはほぼ不可能です。
1995年にできたハッシュ関数である、"SHA1"というハッシュ関数は、2017年2月にグーグルによって初の衝突が確認されました。しかし、その衝突を発見するのに、グーグルは900京回以上という途方も無い計算を行いました。これは、"SHA1"というハッシュ関数が世に出てから22年後の出来事なのです。
よって、衝突問題は、可能性としては起こりうる問題ではありますが、実際にはそこまで危惧する必要も無い問題のように感じられます。
まとめ
このように、ブロックチェーン技術は、改ざんなどをはじめとする不正に対抗することのできるハッシュ関数により支えられており、今後も、それら不正のない信頼できる取引技術として注目していきたい次第です。
ブロックチェーンに関するブログも運営しておりますので、もしよろしければ、こちらもよろしくおねがいいたします。