ブロックチェーン理解に欠かせない「ハッシュ関数」とは?|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  ブロックチェーン理解に欠かせない「ハッシュ関数」とは?

ブロックチェーン理解に欠かせない「ハッシュ関数」とは?

2018.10.23

コラム

ブロックチェーン理解に欠かせない「ハッシュ関数」とは?

 

よく目にする“ハッシュ”って何?

ブロックチェーン技術やそれを基盤とする暗号通貨、また広くインターネットセキュリティなどについて学んでいると、「ハッシュ(Hash)」や「ハッシュ関数」という言葉を目にする機会が多くあります。しかし、あまり説明なく使われていて、それが何を指しているのか、どういう仕組みのものなのか、いまいち理解できないまま、先へ進んでしまっている方も少なくないのではないでしょうか。

何となくはイメージできても、やはり大事な基礎の部分ですから、ここが整理して理解されていないと、ブロックチェーンや暗号通貨の詳しい仕組みを考えたり、問題点を議論したりする際に、たちまち困ることになってしまいかねません。

そこで今回は「ハッシュ関数」や「ハッシュ」について、それが何を意味し、どういう仕組みで働いているものなのか、わかりやすく解説していきます。

情報を値に!固定長で要約

そもそもハッシュ(Hash)という英語は、細かく切るという動詞、また細切れになったもの、その寄せ集めといった名詞の意味をもっています。ハッシュ関数も、そこから生まれた用語であることから、ある全体を細切れにしてひとつにしたもの、そしてその結果は元に戻せないものという特徴があります。

日本語では“要約関数”と呼ばれることもあるハッシュ関数は、任意の大きさ(長さ)の入力情報から、規則性のない固定された一定の大きさ(長さ)の値をビット列で出力させて得る関数で、この関数にかけて得られた値のことをハッシュ値または、単にハッシュといいます。

入力情報はどんなものでもよく、大きさも問いませんが、同じ入力情報に対しては、必ず同じ数値が出力結果として出てきます。一方で、入力する元の情報データが少しでも変化すると、値は全く異なるものとなり、たまたま別のものと一致することはあり得ません。

そのため出力結果のハッシュは、多様なかたちや大きさをしている元の入力情報を、あらかじめ決められた一定の桁数データに要約、暗号化した状態で示す電子指紋のようなものとして利用することができます。

ハッシュ関数のもつ特殊で重要な特性

ハッシュ関数は、それにかけられるどんな大きさや長さの入力データでも、必ず一定の桁数による不規則な数列データとして出力するという特徴があります。また、入力データが同じで、使用するハッシュ関数が同じなら、誰が実行しても必ずその結果は同じになる、同じハッシュ値が得られるという特性ももっています。

そしてとくに重要な特性として、一方向関数と呼ばれるように、出力結果であるハッシュ値からアルゴリズム(ハッシュ関数)や元の入力情報を逆算、推定することはきわめて困難で、ほぼ不可能であるという点が挙げられます。

さらに元の入力データがほんの1ビット、ごくわずかに変化しただけでも、出力されるハッシュ値は大きく異なる結果になり、より推測が困難となっていること、改ざんがないかチェックする際に有用であるという特徴もあります。

ハッシュ関数の種類とその活用

ハッシュ関数にはいくつかの種類が存在し、代表的なものとしてMD5(Message Digest Algorithm 5)やSHA(Secure Hash Algorithm)の0、1、2、3規格が知られています。MD5やSHA-0、SHA-1などは脆弱性や求められる特性における弱さなどの観点で、問題ありとされるようになり、現在ではあまり用いられていません。

これらに続き、多くの改良を加えて開発されたハッシュ関数の活用が進んでおり、ユーザーがパスワードをサーバーに保存するシーンや、ネットワーク上のデータ送受信時における改ざん検出のシーンなどで使われています。

ブロックチェーンでも、取引の真正性を担保し、高い耐改ざん性を発揮させる、ブロック間の連携、連続性を正しく検証する目的や、Proof of Workによるブロックチェーンの生成にかかるシーン、マイニングと、運用の根幹にかかる部分でハッシュ関数が活用されています。

いかがでしたか。特殊な関数であるハッシュ関数は、オープンなネットワークであるインターネットの世界で、セキュリティ面を中心にさまざまなシステムを支える重要なものとして機能しており、ブロックチェーンもこれなくしては成り立たないものとなっています。幅広く応用できる基礎知識であり、基礎用語ですから、ぜひこの機会に覚えておきましょう。

(画像は写真素材 足成より)

DApps総研 https://dapps-info.com/