ハッシュとは
この記事は約 2 分で読めます
ハッシュ (Hash) とは、任意の長さのデータを固定長の値に変換する一方向関数です。 パスワードの保存において重要な役割を果たし、元のパスワードを復元できない形で 安全に保管するために使用されます。同じ入力からは常に同じハッシュ値が生成されますが、 ハッシュ値から元のデータを逆算することは計算上困難です。
パスワード保存での活用
安全なシステムでは、パスワードを平文で保存せず、ハッシュ化した値を保存します。 ログイン時には入力されたパスワードをハッシュ化し、保存されたハッシュ値と比較します。 代表的なハッシュアルゴリズムには SHA-256 や bcrypt、Argon2 があり、 パスワード用途には bcrypt や Argon2 のような計算コストの高いアルゴリズムが推奨されます。暗号学とハッシュ関数の入門書 (Amazon)で基礎から学べます。
ハッシュの弱点と対策
単純なハッシュ化だけではレインボーテーブル攻撃に脆弱です。この対策として ソルト (ランダムデータ) を付加してからハッシュ化する手法が標準的です。 パスつく.com で生成した長くランダムなパスワードは、ハッシュ化された状態でも ブルートフォース攻撃に対して高い耐性を持ちます。セキュリティエンジニアリングの書籍 (Amazon)も参考になります。