August 10, 2021

暗号化ハッシュ関数

5 MIN READ – TEAM XSL LABS

Share on twitter
Share on telegram
Share on email
Share on linkedin
Share on facebook

実は、ハッシュ関数は私たちの日常生活の一部です。私たちが気づかないところで、インターネットでパスワードを作成するデータに電子署名する、または特定のファイルをダウンロードするときなどハッシュを使用します。XSL Labsで使用されるテクノロジーについての多くの記事で、特にIPFS、非対称暗号、暗号ハッシュ関数の概念について説明しました。

今号では、この概念に焦点をあて、暗号化ハッシュ関数の有用性とプロパティを解説したいと思います。また、までに使用された主な関数について振り返ってみましょう

ハッシュ関数は、あるデータから指紋(ハッシュ値)を計算できる関数である。

上記の例で、青色テキストはハッシュ関数(ここではSHA-1)を経由して、緑色フレーム内の文字列「指紋(ハッシュ値)」になります。

詳しくいうと、暗号化ハッシュ関数は一方向性関数である。つまり、この関数を元に戻すことがほぼ不可能です。

したがって、指紋から元のテキストを見つけることはできません。

さて、この関数と指紋はなんのために使われているかを考えてみましょう。なぜなら、この文字列を見ると、意味をなさず、理解しにくいです。

最初の答え – – このハッシュ値は、該当データ識別することを容易にするわけです

分かりやすくになるため、インターネットでパスワードを保存する例をみてみましょう。ブログでのデータベースのハッキングについて数回言及しましたが2021年いまだに、一部のWebサイトは「明確な」パスワードを保存していることをご存知でしたか?アカウント作成やパスワード変更時に、パスワードがそのサイト / サービスのデータベースに直接送信されて記録されることを意味します

データベースに保存されている明確なパスワードはとてもハッキングしやすいです。なぜなら、識別子IDとパスワードのペアを読み取り可能になり、直接見つけることができるわけです。

この問題を解決するための解決策はいくつか存在しております。例えば、特定のによる暗号化の使用、また安全度の高い暗号ハッシュ関数の使用などは解決として考えられています。この手段では、パスワードはハッシュ関数により指紋(ハッシュ値)へと変換され、この指紋情報が保存されます。

ここでは「明確」なパスワードではないため、ハッキングしにくいです。

ユーザーによって、アカウント作成後のログインはとても簡単です。登録IDとパスワードの入力後、パスワードは同じくハッシュ関数により指紋となり、データベースに既に保存されている指紋は取得した指紋を比べます

これらの指紋(ハッシュ値)が合致すれば、ログインが成功します。合致しなければ、パスワードが間違っていることを意味しますので、ログインが拒否されます。

暗号学的ハッシュ関数は、いくつかのプロパティに反映されます。

•1つ目は、ハッシュ値の長さです。ハッシュ関数によって取得されるハッシュ値は、元ファイルのサイズに関係なく、ビット単位で計算され固定長の文字列に変換されます。

•2つ目は、「プレイメージ耐性」と呼ばれ、不可逆性のプロパティに関係します。これは、ハッシュ値から初期データを見つけることがほとんど不可能であることを意味します。これが一方向性関数について言及している理由です。


•3つ目のプロパティは、ハッシュ関数の決定論と呼ばれます。このプロパティは、同じファイルにハッシュ関数を適用すると、常に同じハッシュが生み出されることを意味します。この特性は、上記のパスワードの場合に加えて、たとえば、ファイルをダウンロードした際に、ファイルにエラーや変更が加わることなく完全に送信された事を確認する面で非常に役立ちます。たとえば、オペレーティングシステムがダウンロード可能なUbuntuは、ダウンロードしたファイルのハッシュ値と元のハッシュ値とを比較できる「SHA256チェックサム」形式の検証システムを提供しています。

取得したメッセージが最後の行と一致し、ハッシュ値が同じであれば、ファイルのダウンロード時にエラーがなかったと判断でき、OSのインストールで破損の問題が発生することはありません。

  • 同様に、4つ目のプロパティは、初期データの僅かな変化でも指紋が大きく変化することを意味し、ハッシュ関数の雪崩効果とも呼ばれています。

SHA-256アルゴリズムによる指紋作成を例を使用して次の文章をみてみましょう

この文章に一文字を追加すると(この場合はコンマを追加)、根本的に異なるハッシュ値になります。

従って、このプロパティにより、初期データが偽造防止され、変更の場合変更されたデータの指紋新しくなり、元の指紋と一致することができません。

  • 最後に、衝突耐性に関する5のプロパティについて説明していきます。「誕生日のパラドックス」の例を使ってみましょう。これは、リチャードフォンミーゼス氏が考案した数学的確率問題で、あるグループの中に同じ誕生日の人が2人いる確率を計算するというものです。

確率の計算により、3651(誕生日365可能とのこと)に2人が同じ誕生日を持っている確率が50以上になるため、グループの中に23がいたら十分です。実際、この確率ははるかに低いと考えるかもしれませんそのため、この問題は「パラドックス」と呼ばれています。 さらに、57人以降では、2人が同じ誕生日を持つ可能性が99%以上になると計算されています。

の表は、人の数の中で2人が同じ誕生日を持っている異なる確率を表しています。

これは「衝突」のリスクになります。確率に抵抗するために、および、暗号化関数を作成するために、このリスクの重要性を考慮に入れる必要があります。 異なるデータは、同じハッシュ値にならないように確認しないといけないです。そうしないと、同じ指紋キープしながらイニシャル・データを変更できるようになる可能性があります。つまり、ハッシュ値(指紋)を使用してデータの整合性を検証できなくなります。

実際、まで、衝突が見つかるまでデータとデータの指紋を生成することは事実上可能です。 誕生日の例を使ってみましょう1年に365日に制限されているため、グループ(人数)がその数を超えた場合、少なくとも1回の衝突が発生することが確実です。 ハッシュ値について同じくなります:可能なハッシュ値よりイニシャルデータの方が多いはずです。

そのため、同じハッシュを持つ異なるデータを見つけることが不可能であるということは、既存の重要なリソースに関して、不可能であると理解されています。

信頼性の高い暗号化ハッシュ関数のおかげで、最もスーパーコンピューターと計算機が衝突を計算するのを防ぎます。これは時間とリソース的にに非常にコストがかかるため、計算してみても意味がありません。信頼できる暗号化ハッシュ関数のおかげで、最もスーパーコンピューター衝突を計算できなくなります。 時間とリソースにコストがかかるため、そうしようとしても意味がありません。

暗号化ハッシュ関数のさまざまなプロパティについて説明しましたので、次に一般的な関数を見てみましょう

1つ目はMD5」(Message Digest 5 と呼ばれ、128ビットのハッシュ値を生成できます。 この暗号化ハッシュ関数は、1991年にロナルドリベストによって発明され、1992年に標準化されましたが、現在、安全ではないとは見なされていました2004、攻撃したおかげで1時間以内に衝突が検出され、2006年には、数分だけでノートパソコンで衝突を作成できました。ファイルをコピーするときのエラーを見つけること以外(ハッカーが同じ指紋(ハッシュ値)キープしながら簡単にファイルを変更できるから)現在、データ保護のためMD5もう使用されていません。

1995年、アメリカ国立標準技術研究所(National Institute of Standards and Technology, NISTは、MD5ついての問題を解決するためにNSAが作成したSHA-1(セキュアハッシュアルゴリズム用)を発表しました。 この暗号化ハッシュ関数はよく攻撃に耐えてきましたが、2011からNIST十分に安全ではないと判断しました。

2017年、Google Research研究部門の研究者は、SHA-1機能を介して同じハッシュ値(指紋)を生成する2つのPDFファイルを作成できるようになりました。 この自発的な衝突は、機能の脆弱性を明確に示しています。

2002年、NSAは、SHA-2と呼ばれる2つの新しいハッシュ関数を標準化しました。これにより、256ビットと512ビットのハッシュを作成できます。 現在、このSHA-2標準はまだ安全であると見なされており、ビットコインネットワークトランザクションを検証するためにSHA-256機能使用しています。

XSL Labsホワイトペーパーで説明した通りVCトレースの文脈でこのハッシュ関数を使用する予定ですSDIサブジェクトへの検証可能なリファレンスを送信するときに、発行者がVCトレース作成する必要があります。

VCトレースはSDIスマートコントラクトに入れるため、タイムスタンプと発行者のアイデンティを確認できます。このように、パブリックプロファイル確認できます。また、SYLエコシステム内の信頼の連鎖のため、送信されたデータの整合性認証検証することが可能になります。

Copyright © 2020 XSL Labs – All rights reserved