改ざんをすぐ検出できる!ハッシュ関数の有用性|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  改ざんをすぐ検出できる!ハッシュ関数の有用性

改ざんをすぐ検出できる!ハッシュ関数の有用性

2018.10.25

コラム

改ざんをすぐ検出できる!ハッシュ関数の有用性

 

利活用の広がるハッシュ関数

ブロックチェーンの仕組みを支える、重要な暗号技術のひとつとして知られる暗号学的ハッシュ関数は、私たちの身近なところで活躍している有用なアルゴリズムです。どんなところに利便性があり、どのように活用されているのか、その特性に注目してみてみましょう。

まずハッシュ関数について簡単にさらっておくと、元の多様な入力データをこの関数にかけると、どんなものも、そのアルゴリズムで決められた固定長のビット列で表現されるようになります。単純なテキストデータでも、画像や音声を含む複合的で大きなデータでも、出力結果であるハッシュ値は同じサイズです。

ハッシュ関数と入力データがあれば、誰が計算しても同じハッシュ値をすぐに得ることができますが、逆にハッシュ値からアルゴリズムや元データを推定することはほぼ不可能で、逆算不可能という性質をもっていること、また元データが異なるのに同一のハッシュ値となってしまう「衝突」と呼ばれる現象が起こることはきわめて稀で、まずあり得ないことが特徴としてあります。

そして、元の入力データが少しでも改変されると、計算結果のハッシュ値は大きく変化するという特性があり、この点が大きなポイントになっています。

データのやりとりで重要な同一性チェックに有用

たとえば「Hello」をSHA-1のハッシュ関数にかけると「F7FF9E8B7BB2E09B70935A5D785E0CC5D9D0ABF0」という文字列が得られます。ここまでの記事内容すべてを、同様に処理しても「59F460FDC701E5D79C5DB4C928F332DDD90CD257」となり、同じ長さの文字列で表現できます。マルセル・プルーストの膨大なページ数からなる長編小説『失われた時を求めて』であっても、処理結果は同じ桁数の数列になります。

しかし、「Hello」が「hello」に変化しただけでも、そのハッシュ値は「AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D」となり、先ほどの「F7FF9E8B7BB2E09B70935A5D785E0CC5D9D0ABF0」とは全く違う結果になっていることが分かります。このように、頭文字が大文字が小文字かというわずかな変化でも、ハッシュ値は大きく変わるのです。

膨大なファイルやテキストのデータについて、その中に含まれたごくわずかな改変・偽造を、人の目で見つけ出すことは非常に困難です。ですがこのハッシュを用いれば、たとえ1ビットの変化でも、大きな違いになって出力されますから、すぐに異変を検出できます。同一性が保たれているか、そのデータは真正なものか、すぐに確認できるのです。

オープンなネットワークであるインターネット上で公開・配布されているプログラムやファイルを入手する際、それが正規に配布されているもので、改ざんがなされていないか、破損・欠落がないか、チェックするのは非常に重要なプロセスです。

万が一、問題性に気づくことなく作業を進めると、インストールや実行が行えないばかりか、悪意のある攻撃者がしかけたウイルスに感染してしまうこともあります。

そこでハッシュ値による同一性の確認を導入すれば、ファイルに異常がなく正しいものであるか、ダウンロードは正常に成功したか、容易に判断できるようになり、とても便利です。

データの転送時における確認でも、ハッシュ値の照らし合わせは有用で、不正・改ざん対策として活用されています。ブロックチェーンでも改ざんの検出に利用されており、ブロックの生成やトランザクションの識別、正しい連結の維持・検証が、ハッシュ関数で支えられているのです。

改ざんの検出以外にも、ハッシュ値は、電子署名における証明書の真正性担保や、マルウェアの検知、各種ID認証のプロセスなどで活用されています。

やりとりの前後でハッシュが一致すれば、データは完全に保持されていると確認され、通信が正常に行われたとすぐに判断できる、これがハッシュ関数を用いる大きなポイントであり、多岐にわたる有用性を支えるもとになっているのです。

 

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

 

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