アカデミー用語集詳細
ハッシュ
ハッシュとは何か?
ハッシュとは、ハッシュ関数と呼ばれる数学的関数によって生成される、文字と数字の独自の組み合わせです。これはパスワード、ファイル、あるいはブロックチェーントランザクションなど、あらゆるデータのデジタル指紋のように機能します。例えば、「 Blockchain 」という単語をSHA-256アルゴリズムでハッシュ化すると、12a8f...71b3(分かりやすく省略)のような固定長の文字列が生成されます。一文字でも変更すると(例:「blockchain」)、まったく異なるハッシュが生成されます。
ハッシュは、暗号技術、ブロックチェーン、ソフトウェア開発全体でデータの整合性を検証し、システムを保護するために不可欠です。
どのように機能するのか?
ハッシュ化には3つの基本ステップがあります:
- 入力: あらゆるデータ(テキスト、数字、ファイル)がハッシュ関数に送られます。
- 処理: 関数は複雑な数学を使用してデータをスクランブルし、独自の出力を作成します。
- 出力: 入力サイズに関係なく、固定長のハッシュが生成されます。
ハッシュの主な特性:
- 一方向プロセス: ハッシュから元のデータをリバースエンジニアリングすることはできません。
- 速度: 関数は入力を素早く処理します(例:SHA-256はマイクロ秒単位で処理)。
- 雪崩効果: 入力のわずかな変更(例:ピリオドの追加)で、まったく異なるハッシュが生成されます。
実世界の例:
ビットコインマイナーは、ブロック内のランダムな数値(ノンス)を調整することで、複数のゼロ(例:0000000000...)で始まるハッシュを見つけるために競争します。このパズルを最初に解いたマイナーがビットコインの報酬を獲得します。この「プルーフ・オブ・ワーク」と呼ばれるプロセスがネットワークを保護しています。
ハッシュ関数の説明
ハッシュ関数は、データの整合性を検証するためのハッシュを作成するように特別に設計されています。ブロックチェーンにおけるこのような関数の要件には以下が含まれます:
- 決定論的: 同じ入力は常に同じ出力を生成することを意味します。入力データが変更されない限り、ハッシュ結果に変動があってはなりません。
- 高速計算: ハッシュ関数は入力データのハッシュを迅速に返すことができなければならず、これにより処理速度が向上します。
- プリイメージ耐性: 関数を逆算することは計算上不可能であるべきで、つまりハッシュから入力データを再構築できないようにする必要があります。
- 入力の小さな変更でハッシュが大きく変わる: 入力のわずかな修正でも、まったく異なるハッシュ出力が生成されるべきで、これは雪崩効果と呼ばれます。
- 衝突耐性: 2つの異なる入力が同じハッシュ出力を生成してはなりません。
暗号通貨で一般的なハッシュ関数:
- SHA-256: ビットコインや従来のシステム(例:TLS/SSL証明書)で使用されています。
- Keccak-256: イーサリアムがスマートコントラクトとウォレットアドレスに選択しています。
- Scrypt: ライトコインがASICマイニングの優位性を抑制するために設計しました。
実用的なユースケース:
暗号通貨を送信する際、トランザクションの詳細がハッシュ化されてブロックに追加されます。各ブロックは前のブロックのハッシュを参照し、破壊不可能なチェーンを作成します。過去のトランザクションを誰かが改ざんすると、それ以降のすべてのハッシュが変更され、ネットワークに改ざんが即座に警告されます。