ブロックチェーン理解の肝!「ハッシュ」って何?|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  ブロックチェーン理解の肝!「ハッシュ」って何?

ブロックチェーン理解の肝!「ハッシュ」って何?

2018.10.11

コラム

ブロックチェーン理解の肝!「ハッシュ」って何?

ブロックチェーンに用いられるハッシュ関数を知る
暗号通貨の基盤技術として、また真に民主的な非中央集権型のWeb環境を生み出す次世代技術として、多方面での活用が見込まれるブロックチェーンですが、その原理や仕組み、技術概念を学ぶ際、必ず登場するワードに「ハッシュ」があります。

ハッシュやハッシュ関数は、ブロックチェーンの特性を支えるきわめて重要な役割を果たしているものですが、これについて正しい理解をもっている人は、まだまだ少数にとどまっているように見受けられます。

ブロックチェーンベースのサービスを利用したり、今後のWeb動向について考えたりする上で、欠かせない基礎知識となりますから、初めて触れる人から、専門用語の多さなどから内容が理解できず途中で断念した人、“分かったつもり”で確認するタイミングを逸してきた人まで、ぜひここであらためて、ブロックチェーンとハッシュについて学んでいきましょう。

ハッシュとは?その特徴と働き
「ハッシュ」とは、ある任意のデータを入れ、アルゴリズムを通して得られた暗号変換結果の固定長データのことで、英数字の羅列でできています。インプットする任意データは、どのような大きさ・内容の情報でもよく、理論上は無限に対応可能で、数値データでもドキュメントのような文書データでも、決まった長さの数値に変えることができます。この変換処理で用いるのが、ハッシュ関数です。

“ハッシュドポテト”でおなじみのように、英語の“ハッシュ(hash)”には“細かく切り刻む”といった意味があり、その名が示す通り、ハッシュ関数はさまざまなかたちの元データを切り刻んで、長さ(大きさ)の決まった全く別の文字列値として変換、出力してくれる関数になります。

暗号関数とも似ていますが、暗号関数がデータの暗号化や復号に対応するのに対し、ハッシュ関数は逆算不可能性をもち、データを一方向にしか変換できない特徴をもっています。そのためハッシュ化された文字列から元データを導くことは基本的に不可能となっています。

また、元データの要素がほんの少しでも変わると、ハッシュ化した結果は全く異なるものになるため、推論や予測を立てることがきわめて困難なほか、いったんハッシュを押さえておけば、元データの不正改ざんを防ぐことができる性質もあります。異なるデータの入力を行ったのに、同じ出力が偶然得られてしまうことを「衝突」といいますが、この衝突が起こりにくい点もハッシュ関数の優れた点です。

これらから、暗号化したデータのやりとりにおいて、ハッシュを用いておくと、たとえ悪意のある第三者が不正にハッシュ値を手に入れたとしても、元データを復元して得たり、内容を書き換えたりすることはできなくなります。

データ送信者が、送りたいデータによって算出されるハッシュとともに任意の相手へデータ送信を実行、受信した側は受け取ったデータをハッシュ関数により変換して、送信者から送られたハッシュと同じになっているか確認するという方法をとれば、やりとりの間もデータが間違いなく安全に保全され、改ざんなく届いたことが確実に分かります。

短いメッセージでも、さまざまな音声や文書など複合的なまとまりをもつ大きなデータでも、画像データでも、すべては固定された長さの英数字からなる文字列に変換でき、データが同じならば何度やっても同じ出力結果になること、効率よく計算・確認が行えること、そして出力結果からの逆算は行えないこと、これらがハッシュの高い活用可能性につながる大きなポイントとなっています。

ブロックチェーンで働くハッシュ
ブロックチェーンでは、このハッシュがブロックに格納されたデータの現在状態を示すものとして用いられています。鎖状につながったブロックのひとつひとつには、一定期間内に発生した取引のデータと、前のブロックのハッシュ値などが収められます。

そのブロックに入ったデータのすべては、次のブロックに収めるハッシュ値の元データとなり、ハッシュ関数を通じた入れ子構造で、ブロックが連結されていくのです。

これにより、どの取引データも改ざんされておらず、正しく維持されていることが保証され、不特定多数の参加者が出入りするオープンな環境でも、互いに高い透明性と信頼性を確保した安全な取引が可能となります。

もしどこかで不正な改ざんが行われれば、ハッシュに変化が起こりますから、連なりの中で異常がすぐに見つけられ、互いに持ち合っているブロックチェーン全体のデータから、正しい元のチェーン状態を復元することもできます。

ハッシュ関数は複数存在し、たとえばよく知られるビットコインでは、SHA-256とRIPEMD-160と呼ばれる2種類のハッシュ関数が用いられています。

いかがでしたか。ハッシュ、ハッシュ関数について概要が理解できたでしょうか。ブロックチェーンにおけるハッシュは、その利用における安全性を担保し、改ざんの検出を容易にしたり、正しく時系列で連結していったりする重要な役割を担っています。ブロックチェーンの特性における根幹部分と密接に関わるものとして、よく理解を深めておきましょう。

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