中級者用語を調べる
ハッシュ関数とは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 4 分
結論
ハッシュ関数は、どんな長さのデータを入れても決まった長さの値を返す計算です。入力が1文字変わるだけで出力が全く別物になるため、データが書き換えられていないことの確認に使えます。ブロックチェーンが改ざんを検知できるのは、この性質が土台にあるからです。
要点
- 同じ入力からは必ず同じ出力が出る
- 出力から入力を逆算することはできない
- 入力の僅かな違いで出力が全く変わる
- ブロック同士をつなぐ鎖の役割を果たす
定義
任意長のデータを固定長の値に変換する一方向の計算。同じ入力からは同じ値が得られ、値から元のデータを復元することは現実的にできない。
ビットコインではSHA-256という関数が使われ、入力が1文字でも1テラバイトでも、出力は必ず256ビットになります。「hello」と「Hello」では出力に共通点がまったくありません。この性質は雪崩効果と呼ばれ、改ざんを隠すことを困難にします。
ブロックチェーンでは、各ブロックが1つ前のブロックのハッシュ値を含んでいます。過去のブロックの中身を1バイト書き換えると、そのブロックのハッシュ値が変わり、それを参照している次のブロックとのつながりが壊れます。以降のブロックすべてを計算し直さない限り、矛盾が残ります。これが「後から書き換えられない」と言われる理由です。
Proof of Work のマイニングも、この関数の使い道の一つです。出力が特定の条件(先頭にゼロが一定個数並ぶなど)を満たすまで、入力の一部を変えながら総当たりで計算します。答えを見つけるには膨大な試行が必要ですが、見つかった答えが正しいかどうかは1回の計算で確かめられます。
注意点
- · ハッシュ化は暗号化ではないため、元に戻す用途には使えない
- · パスワードのように候補が少ないデータは、総当たりで推測されうる