ハッシュ関数とは!ビットコインの仕組みを理解するために
初心者向けにビットコインの仕組みを理解するために知っておきたいハッシュ関数について解説しています。ハッシュ関数、ハッシュ値とは何なのか、どういった役割があるのか一般的なWebサービスでも使われている事例も紹介しています。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、ハッシュ関数について解説します。
仮想通貨ビットコインの仕組みを理解する上では必ず知っておきたい知識です。ビットコインだけでなく、Webサービスのセキュリティ面にも関わる内容なので、ぜひ読んでみてください。
今回はハッシュ関数について勉強してみよう。
田島メンター!ハッシュ関数というのは何ですか~?
入力した値から、長さの決まったまったく別の値を生成する技術だよ。まずはどういう目的で用いられるものなのかというところから見ていこう。
お願いします!
ハッシュ関数とは
ハッシュ関数とは入力した値に対して、まったく別の値が出力されるという暗号方式です。
ブロックチェーンでは、様々なところでハッシュ値を使用することで暗号化を行っています。
ハッシュ値とは、あるデータを変換して別の文字列や値に変換されたもので、ECサイトなどのWebサービスでは一般的にパスワードはハッシュ化されています。
そうすることで、事業者もパスワードを知ることはできないため個人情報の漏洩に耐えることができます。
ハッシュ関数の特徴
同じ値が出力
同じ値の場合は同じ値が出力されます。
つまり、1文字でも異なれば、原則全く無関係の値が出力されます。
ただ、SHA-1というハッシュ関数で異なる入力値から同じ出力値が出力されたことがあります。
その為、ハッシュ関数は、より強い暗号化ができるものを利用する方がよいです。
一方向関数
ハッシュ値から元の値を探し出すことは難しいです。
このことを不可逆性と呼びます。
つまり、一方向にしか作用しない関数ということです。
この性質により強い暗号化が可能となります。
固定出力値
入力値の長さにかかわらず、固定の出力値が出力されます。
1文字の入力値でも100文字の入力値でも同じ長さの出力値になります。
ハッシュ関数の主な特徴だね。
同じ値からは同じハッシュ値、ハッシュ値から逆算するのは困難、出される値の長さは決まっているという辺りでしょうか。
次に、ハッシュ関数のいくつかの種類について紹介しよう。
ハッシュ関数の種類
SHA-256
SHA-256とは、NIST(アメリカ標準技術局)によって定義された規格です。
SHA-256はSecure Hash Algorithm 256-bitの略称です。
256ビット長という強力なハッシュ値を利用することができます。
このビット数が大きければ大きいほど強力な暗号化が可能です。
SHA-256でハッシュ化
ハッシュ元入力値
a
ハッシュ化出力値
CA978112CA1BBDCAFAC231B39A23DC4DA786EFF8147C4E72B9807785AFEE48BB
RIPEMD
RIPEMDとはRACE Integrity Primitives Evaluation Message Digestの略です。
ビットコインネットワークでは、公開鍵をSHA-256をハッシュ化したものを、再度RIPEMD-160でハッシュ化しています。
これにより、SHA-256でハッシュ化したハッシュ値よりも短いハッシュ値を利用することができます。
具体的には160ビット長の長さになります。
RIPEMD-160でハッシュ化
ハッシュ元入力値
a
ハッシュ化出力値
0BDC9D2D256B3EE9DAAE347BE6F4DC835A467FFE
ブロックチェーンのハッシュ値
ブロックチェーンでは、取引を示すトランザクションの中でもハッシュ関数を使用します。
現在のトランザクションから見て、1つ前のトランザクションが存在します。現在のトランザクションの中には、ハッシュ値が存在します。
このハッシュ値は、1つ前のトランザクションの一部をハッシュ関数により暗号化した値になります。
トランザクション自体がブロックとなり、次のブロックとチェーンで結ばれるような構成のためブロックチェーンと呼ばれます。
このチェーンとなるのがハッシュ値です。
最後に、ブロックチェーンで用いられるハッシュ関数についても解説したよ。
ハッシュ値によってデータを暗号化したり、値に間違いがないか確認したりできるんですね。
ハッシュの技術はブロックチェーンでも重要な役割を持っているので、ぜひ頭に入れておこう。
分かりました。ありがとうございました!
以上、ハッシュ関数について解説しました。
仮想通貨の口座開設
Ethereum上で実装されたアプリケーションの利用をするためには、イーサリアム(ETH)で売買するサービスもあるため、仮想通貨の口座開設をしておきましょう。口座開設後、ビットコインやイーサリアムの売買が可能です。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |