ハッシュ関数は、任意のサイズのデータを固定サイズの値にマッピングします。同じ入力に対しては常に同じ出力が生成されます。1ビット変更するだけで出力は完全に変わります。この特性により、ハッシュはデータの整合性チェックに役立ちます。ファイルをダウンロードし、そのハッシュ値を公開されている値と比較します。一致すれば、ファイルは破損なく届いたことになります。一致しない場合は、何らかの変更が加えられたことになります。
ハッシュ関数は一方向です。ハッシュから元のデータに逆算することはできません。そのため、パスワードの保存に役立ちます。システムはパスワード自体ではなく、パスワードのハッシュを保存します。ログインすると、システムは入力した内容をハッシュ化し、保存されているハッシュと比較します。データベースが漏洩した場合、攻撃者はパスワードではなくハッシュを取得します。弱いパスワードはレインボーテーブルやブルートフォース攻撃で解読される可能性があるため、ソルトが重要になります。ソルトはハッシュ化の前に各パスワードに追加されるランダムなデータであり、同じパスワードでも異なるハッシュが生成されます。SHA-256とSHA-3は一般的な暗号化ハッシュです。MD5とSHA-1は脆弱性があり、セキュリティ目的で使用すべきではありません。ハッシュ関数は、ブロックチェーン、デジタル署名、ファイル重複排除にも利用されています。
ハッシュ関数のプロパティ
- 決定論的 — 入力が同じであれば出力も同じ
- 高速 — 計算が速い
- 原像耐性 ― 反転不可能
- 衝突耐性がある ― 同じハッシュ値を持つ入力が2つ見つかることは難しい
ハッシュは暗号化ではなく、指紋のようなものです。データの完全性を証明するものであり、データを隠蔽するものではありません。
Comments
No comments yet. Be the first to share a thought.
Leave a comment