ハッシュ関数
読み:ハッシュかんすう
外語:hash function
データよりハッシュ値を得るために使われる関数。日本語で要約関数という。
概要
認証や検索の効率化等に用いられている。
例えばログイン処理を考えたとき、パスワードをそのままはデータベースに保持すると、クラッカーに侵入された際にログイン情報が全部漏れてしまうため望ましくない。
そこで、パスワードはハッシュ値として保持し、ログイン処理のたびハッシュ値を計算して照合する方が安全であるため、そうすることが多い。
特徴
機能
特に多く使われるのが一方向性ハッシュと呼ばれるものである。
これは入力した値を処理し、別の値を作り出すことができ、次のような特徴を持つ。
- 入力のデータの長さに関わらず、出力の長さは常に一定
- 出力の内容からは入力が分からない
- 入力が1ビット変更されただけでも、全く違った値を返す
- 異なる入力を与えて出力が同じになる確率は極めて低い
これらの特徴は、公開鍵の偽造などの判定に使うのに適している。
選択肢
様々なハッシュ関数が考案され、使われてきた。
コンピューターの性能が高まると、力業で計算し続けることで、目的のハッシュ値が得られる元のデータ列を計算できてしまう恐れがでてきた。このため、計算が煩雑になるハッシュ関数が作られ、そちらへと移行する運用が続けられている。
また用途ごとに使い分けもされており、通信の認証によく使われるSHAは高速性を重視した仕様であるが、このためあまりセキュアではないと言うことができ、パスワードのハッシュ化には向いていない。パスワードはBCryptなど、より適したハッシュ関数が使われる傾向にある。
主な実装
有名なものとして次のようなものがある。派生アルゴリズムは、その親にぶら下げて記載する。
- Message Digest
- Secure Hashing Algorithm
- 軽量ハッシュアルゴリズム
- BCrypt
再検索