ハッシュ値とハッシュ関数|ブロックチェーンに使用される暗号技術

ハッシュとは、ブロックチェーンにおける安全な取引に利用されている技術の1つです。本記事ではブロックチェーンの仕組みについて理解を深めるためにも、ハッシュの概要や関係性、種類などを徹底解説!
現在も研究や開発が進められているブロックチェーンを今後活用したい方、必見です。

BLOCK CHAIN

    必須会社名
    必須 お名前
    必須メールアドレス

    ブロックチェーンと「ハッシュ」の関係性

    ブロックチェーンと「ハッシュ」の関係性

    ビットコインの基幹技術であるブロックチェーンには「ハッシュ」がいたるところに使用されています。ブロックチェーンとは、情報をブロック単位でまとめて暗号化し、過去から1本の鎖のようにつなげることで、取引履歴を維持する技術のことです。

    特に、新たなブロックを生成し、その報酬として暗号資産(仮想通貨)を入手するマイニングには、このハッシュの計算が大きく関係しています。ここでは、ハッシュに関する理解を深めるためにも「ハッシュ値」と「ハッシュ関数」の意味について確認しましょう。

     

    ハッシュ値とは

    ハッシュ値とは、あるデータから所定の計算手順によって算出される値のことです。ハッシュを日本語に訳すと「細切れ」や「寄せ集め」といった意味になります。

    わかりやすくいえば、小学校などで利用される出席番号に近いといえるでしょう。多くの場合、出席番号は名字の五十音順で割り振られます。

    では、名字が同じ生徒が複数いた場合はどうでしょうか。この場合は「名字の2文字を参考に五十音順で割り振る」「名前の1文字を参考に五十音順で割り振る」など、何らかの規則によって、必ず生徒全員に個別の数字を割り振るはずです。

    もし、生徒全員が「高橋」という名字であったとしても、それぞれを識別するために生成され、割り振られる数字が「ハッシュ値」です。

     

    ハッシュ関数とは

    ハッシュ関数とは入力したデータを一定の手順で計算し、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。前述のハッシュ値は、このハッシュ関数によって生成されます。

    先ほどの出席番号で考えてみましょう。例えば、1年A組の出席番号「1番」を「安藤さん」に割り振られ、出席簿に記載されたとします。

    この時、出席簿が手元にある状態であれば、たとえ外部の人であっても「1年A組の出席番号1番は安藤さんである」と理解できます。しかし、出席簿が手元に無い状態で「1年A組の出席番号1番は誰ですか?」と外部の人に聞いても「安藤さん」と答えることは不可能です。

    このように「一方向の演算は簡単なのに逆方向の演算は難しい」といった状態の値を生成するのがハッシュ関数なのです。

     

    ブロックチェーンのブロックに格納される3つの値

    ブロックチェーンのブロックに格納される3つの値

    ブロックチェーンでは、ネットワーク内で行われる取引の記録を「ブロック」に格納します。そのブロックに格納する値は、次の3つです。

    • トランザクションデータ
    • 1つ前のブロックにあるハッシュ値
    • ナンス値

    これらの値を合成し、ハッシュ関数に入力することでハッシュ値が生成されます。つまり、ハッシュ値がブロック同士を繋ぐジョイントの役割を果たすのです。ここでは、ブロックに格納する各値の詳しい内容を解説します。

     

    1.トランザクションデータ

    トランザクションデータとは、一定期間内にシステム上で発生した取引などをまとめたデータのことです。例えば、ビットコインのトランザクションデータには、送金額などの取引情報が含まれます。

    トランザクションデータは次々にブロックに記載され、一定量を超えると新たなブロックが生成されます。そして、また新たなブロックにトランザクションデータが記載されていくのです。このプロセスに沿ってブロックが連なり、ブロックチェーンを形成していきます。

     

    2.1つ前のブロックにあるハッシュ値

    ブロックチェーンのブロックには、1つ前のブロックにあるハッシュ値も格納します。1つ前のブロックにあるハッシュ値を利用して、取引の整合性を証明するのです。この取引の整合性を確認する作業を「マイニング」と呼びます。

    たとえば、Aブロックで算出されたハッシュ値が「1」だったとしましょう。次のBブロックには、ブロックAのハッシュ値である「1」を加えて計算され、まったく異なる「1-2」というハッシュ値が算出されます。

    その後もCブロックには「1-2」を加え、新たな「1-2-3」のようなハッシュ値が算出されます。このように、新たなブロックが生成されるたびに過去のハッシュ値を引き継ぐ新たなハッシュ値が作られ、ブロック同士を時系列でつないでいるのです。

    マイニングについては次のページで詳しく解説しています。

    マイニングとは?ブロックチェーンと仮想通貨の仕組みを解説します

     

    3.ナンス値

    ナンス値とは「一度だけ使用される使い捨ての数字」を意味します。ブロックチェーンでは、このナンス値に応じて、新たなブロックで使用されるハッシュ値が変化します。

    新たなブロックを生成する際、「トランザクションデータ」と「1つ前のブロックにあるハッシュ値」はすでに決まっています。よって、後続のブロックに影響を与えられるのは「ナンス値」のみとなります。

    さらに、ビットコインは新たなブロックの追加に「ハッシュ値の最初に一定以上のゼロが続いていること」という条件を設けています。そのため、新たなブロックの生成にはマイニングによって、この条件を満たす「ナンス値」を割り出す必要があります。

     

    ハッシュ関数における4つの種類

    ハッシュ関数における4つの種類

    ハッシュ関数にはいくつかの種類が存在し、その違いは計算方法にあります。ハッシュ関数における主な種類として、次の4つが挙げられます。

    • MD5
    • SHA-256
    • SHA-512
    • RIPEMD-160

    ここでは、種類ごとの特徴について詳しく解説します。

     

    1.MD5

    MD5(エムディーファイブ)は「Message Digest 5」の略です。128ビット(16進数では32桁)のハッシュ値を生成できます。

    1991年にマサチューセッツ工科大学の「ロナルド・リベスト」によって開発され、前身の「MD4」の安全性を向上させた規格といえます。ただし、MD5から生成されたハッシュ値にはいくつかの脆弱性が発見されており、安全性には不安が残ると言われています。

     

    2.SHA-256

    SHA-256(シャーニゴロ)とは「Secure Hash Algorithm 256-bit」の略で、256ビット(32バイト)のハッシュ値の生成が可能です。

    SHA-256は、アメリカ国立標準技術研究所によって標準化された「SHA-2」という規格に分類されます。ビットコインにもこのSHA-256が採用されており、SHA-1からSHA-2への移行がさまざまな分野で進んでいます。

     

    3.SHA-512

    SHA-512(シャーゴーイチニー)は、「Secure Hash Algorithm 512-bit」の略で、512ビット(64バイト)のハッシュ値を生成できます。

    SHA-512もSHA-256と同様に「SHA-2」の規格に分類され、その中で最もハッシュ値が長く、暗号学的に最も安全とされています。ただし、ハッシュ値の長さは負荷を高めるため、SHA-256が一般利用されているのが実状です。

     

    4.RIPEMD-160

    RIPEMD-160(ライプエムディー160)は「RACE Integrity Primitives Evaluation Message Digest」の略です。160ビットのハッシュ値を生成できます。

    1996年にルーヴェン・カトリック大学の「Hans Dobbertin」らによって開発されたハッシュ関数です。ハッシュ関数の一種である「MD4」の設計原理に基づいて開発されており、SHA-1と同クラスの性能を有します。

    RIPEMD-160はSHA-256とともに、ビットコインのブロックチェーンにも用いられているハッシュ関数です。

     

    ハッシュへの理解がブロックチェーン活用の幅を広げる

    ハッシュへの理解がブロックチェーン活用の幅を広げる

    ブロックチェーンの耐改ざん性に大きな影響を与えているハッシュ。ハッシュ関数の不可逆性に由来する耐改ざん性は、暗号資産(仮想通貨)以外の分野にも活用できます。

    高いセキュリティを求められる金融分野でのパスワード管理や近年多くの企業で普及が進む電子署名などにもハッシュの技術が用いられています。まずは、ハッシュへの正しい理解を深め、自社における活用の方法を検討してみてください。

    次のページでは、2022年最新のブロックチェーン活用事例を紹介していますのでご参考ください。

    【2022年最新ブロックチェーン活用事例】中央集権型のデメリットを分散型のブロックチェーンどのように解決するのか

     

    全記事一覧 連載記事 アクセス上位記事 おすすめ記事