あなたのパスワードは安全ですか? | ブロックチェーン技術のハッシュ

今日は、ブロックチェーンの基礎となるテクノロジーの共有、ハッシュに関する最初の問題です。ハッシュとは何かという話はやめましょう。あなたの生活の中で次のような状況はありませんか。

ウェブサイトでアカウントを登録し、パスワード、ID番号、キャッシュカード番号を入力しましたが、機密データが漏洩するのではないかと心配したことはありませんか?

写真

あなたはインターネット製品マネージャーで、プログラマーに要求について尋ねると、「ユーザーがパスワードを忘れた場合、元のパスワードを電子メールでユーザーに送信してください」と答えます。

写真

あなたはプログラマーのリーダーで、ユーザーの機密データをハッシュする必要があると告げていますが、次のような気分ですか。

 

実際、これらはハッシュ関数の適用に関連しており、私たちの生活や仕事のあらゆる側面に存在します。しかし、暗号化やハッシュという言葉をよく聞くと、非常に難解なものだと思われがちですが、それほど複雑ではありません。

01

ハッシュとは何ですか?

ハッシュについて、ユーザーパスワードストレージの開発を例に挙げてみましょう。

1. 簡単なパスワードの保存

ここ数年、「びっくり!某サイトのユーザーアカウントのパスワードが流出した」などのニュースをよく目にしました。実際、インターネット開発の初期に、特定の Web サイトに登録した後、ユーザー名が村で一番ハンサムな男、パスワードが 123456 だったとします。この場合、アカウント番号とパスワードは基本的に保存されます。バックグラウンドでは次のようになります。

写真

 

これは最も初期のパスワード保存方法であり、ユーザーのパスワードは完全に平文でデータベースに保存され、ハッカーがデータベースに侵入すると、ユーザーに関連付けられたすべての情報が盗まれ、ユーザー情報にはまったくセキュリティがありません。

2. アップグレードされたパスワードストレージ

ハッシュ関数は一方向ハッシュ関数とも呼ばれます。この一方向には非常に重要であることに注意してください。一方向とはどういう意味ですか? 取り返しのつかない

まずハッシュ関数の定義を見てみましょう。
一方向ハッシュ関数には入力と出力があり、入力はメッセージと呼ばれ、出力はハッシュ値と呼ばれます。

ハッシュ関数には次の特徴があります。

  • 任意の長さのメッセージに基づいて固定長のハッシュ値を計算します。

  • ハッシュ値を素早く計算できます。

  • 異なるメッセージ (つまり、異なる入力) は異なるハッシュ値を取得します。

  • 一方向性です。一方向とは、ハッシュ値からメッセージを推定できないことを意味します。

ハッシュ関数の特徴を理解するにはどうすればよいですか? 引き続きユーザー登録を例に挙げますと、

ユーザー名: 村で一番ハンサムな男、パスワード: 123456; MD5 ハッシュ関数を使用した後の結果: 49ba59abbe56e057; この時点でデータベースに保存されているデータは:

写真

 

この図から、ユーザーに表示されるパスワードは 123456 であることがわかりますが、データベースには 49ba59abbe56e057 が保存されているため、プログラマはユーザーのパスワードが何であるかを知ることができません。これは、ユーザーが再度ログインすると、ハッシュ値が保存されるためです。パスワードを入力し、パスワードを再度ハッシュし、ハッシュされた値がデータに保存されている値と同じかどうかを比較して、ユーザーのパスワードが正しいかどうかを判断できます。

また、ハッシュ関数は一方向であるため、ユーザーがパスワードを忘れた場合、プログラムのバックグラウンドではユーザーの元のパスワード 123456 から 49ba59abbe56e057 を計算できません。そのため、Web サイトにログインしてパスワードを忘れた場合にのみパスワードをリセットできます。

ハッカー攻撃も同様で、データベースが攻撃された場合、ハッカーが取得できるのはパスワードのハッシュ値のみですが、ハッシュアルゴリズムの特性上、ハッシュ値を逆にしてパスワードを取得することはできません。ハッカーがデータベースを破壊した。役に立たない。

写真

 

ハッカーは菜食主義者ではなく、その後ハッカーが「レインボーテーブル攻撃(レインボーテーブル攻撃)」を発明し、ハッシュアルゴリズムで暗号化されたパスワードを攻撃することを可能にしました。(Rainbow Watchに興味がある方は、バックグラウンドで私にプライベートメッセージを送ってください。人数が多い場合は、Rainbow Watchの記事を書いてください。)

3. パスワードストレージを再度アップグレードしました

物事の発展とはこのようなもので、攻撃と防御の間で技術は進歩します。レインボーテーブルの攻撃に対処するために、技術者たちは「ソルト」を使ったハッシュアルゴリズムを発明しました。

暗号化におけるソルトとは、ハッシュ化する前に、ハッシュ内容 (パスワードなど) の任意の固定位置を特定の文字列に挿入することを指します。ハッシュに文字列を追加するこの方法は「ソルティング」と呼ばれます。その機能は、ソルトを追加した後のハッシュ結果をソルトなしの結果とは異なるものにすることであり、さまざまなアプリケーション シナリオで、この処理によりセキュリティを追加できます。

ソルトを追加するプロセスについては詳しく説明しませんが、ソルトを追加した後のハッシュ値を覚えていれば、ハッカーの攻撃を受けにくくなります。

待って、本題に取り掛かりましょう、今日は何について話しますか? ハッシュ!では、ハッシュとは何ですか。上記の MD5 アルゴリズムは一種のハッシュ関数です。では、ブロックチェーンにおけるハッシュ関数とは何でしょうか?

02

ブロックチェーンのハッシュ関数

ブロックチェーンにハッシュ関数を導入するには、まずいくつかの一般的なハッシュ関数を理解します。

1.MD4、MD5

MD4 は、1990 年に Rivest によって設計された一方向ハッシュ関数で、128 ビットのハッシュ値を生成できます (RFC1186、改訂版 RFC1320)。ただし、MD4 ハッシュ内の衝突を検出する Dobbertin の方法では、もはや安全ではありません。

MD5 は 1991 年に Rivest によって設計された一方向ハッシュ関数で、128 ビットのハッシュ値 (RFCI321) を生成できます。2 つの異なるメッセージがあるため、これもすでに安全ではありません。

MD4、MD5のMDはMessage Digestの略です。

2. SHA-1、SHA-256、SHA-384、SHA-512

SHA-1 は、NIST (国立標準技術研究所、National Institute of Standards and Technology) によって設計された、160 ビットのハッシュ値を生成できる一方向ハッシュ関数です。

SHA は 1993 年に米国連邦情報処理標準仕様 (FIPS PUB 180) として発行され、1995 年にリリースされた改訂版 FIPS PUB 180-1 は SHA-1 と呼ばれます。SHA-1は、「CRYPTREC暗号一覧」において、互換性維持の目的以外での使用が推奨されない「注意して使用できる暗号一覧」に含まれています。

SHA-256、SHA-384、SHA-512はNISTによって設計された一方向ハッシュ関数で、ハッシュ値の長さはそれぞれ256ビット、384ビット、512ビットです。これら一方向ハッシュ関数は総称して SHA-2 と呼ばれ、メッセージ長にも上限があります(SHA-256 の上限は 2^64 ビットに近く、SHA-384 および SHA-512 の上限は次のとおりです)。は 2^128 ビットに近い)。これらの一方向ハッシュ関数は、2002 年に SHA-1 とともに FIPS PUB 180-2 として公開されました。

SHA-1 の強力な衝突耐性は 2005 年に破られました (山東大学の王暁雲教授)。つまり、同じハッシュ値を持つ 2 つの異なるメッセージを生成できるようになりました。下の写真は王暁雲を示しています。

写真

インターネットからの写真

ただし、SHA-2 はまだ破られていません。

3. リペメド -160

RIPEMD-160 は、160 ビットのハッシュ値を生成するために、Hans Dobbertin、Antoon Bosselaers、Bart Preneel によって 1996 年に設計された一方向ハッシュ関数です。 

RIPEMD-160 は、EU RIPE プロジェクトによって設計された RIPEMD 一方向ハッシュ関数の改訂版です。

この一連の機能には、RIPEMD-128、RIPEMD-256、RIPEMD-320 など、このバージョンも含まれています。

RIPEMD-160は、「CRYPTRECパスワードリスト」において、互換性維持の目的以外での使用が推奨されない「使用注意暗号リスト」に含まれています。

RIPEMDの強力な耐衝突性は2004年に破られていますが、RIPEMD-160はまだ破られていません。

ビットコインシステムではSHA-256およびRIPEMD-160ハッシュアルゴリズムが使用されていますが、ライトコインではイーサリアムとは異なるSCRYPTアルゴリズムが使用されているため、ブロックチェーン技術の発展に伴い、異なるアプリケーションで使用されています。変化する。

OK、今日はハッシュ関数について多くのことを共有しました。暗号化の基礎となる数学的知識は深くて興味深いものですが、読者がさまざまな業界に従事していることを考慮して、基礎となる実装についてはあまり説明しませんでした。これらの記事では、さらなるディスカッションのために私たちをフォローしていただけます。次号でお会いしましょう~~

写真

 

おすすめ

転載: blog.csdn.net/koudan567/article/details/120091236