ハッシュ値 (hash value)
ハッシュ値(英:hash value)とは ハッシュ関数から返される値 であり 元のデータをあれやこれやして作られた一見すると適当に見える値 です。
ハッシュ関数は「適当な値を中に放り込むと適当な値を返してくれる関数」です。例えば「愛媛みかん」を入れると「3」が返ってきます。「青森りんご」を入れると「4」が返ってきます。「栃木苺」を入れると「とちおとめ」が返ってきたりします。
何を入れると何が返ってくるか、入れたものからは分かりません。返ってくるのは適当な値です。ただし、同じ物を入れれば、必ず同じ値が返ってきます。「愛媛みかん」を入れると、必ず「3」が返ってきます。何回入れても「3」が返ってきます。
1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる
これががハッシュ関数の特徴です。
以上を踏まえて、ハッシュ関数から返ってくる値(戻り値)が「ハッシュ値(ハッシュチ)」です。
入力されたデータをもとにして作られた適当な値(適当に見える値)です。
ハッシュ値には、
1.ハッシュ値から元のデータを特定するのは、ほとんど無理
2.元のデータが同じなら生成されるハッシュ値も同じ
3.元のデータが変わると生成されるハッシュ値は(ガッツリと)変わる
といった特徴があります。
「元データ→ハッシュ値」はお手軽だけど「元データ←ハッシュ値」はすっごい大変だよ、ということです。
ハッシュ関数
ハッシュ関数 あるいは要約関数とは、任意のデータから、別の値を得るための操作、または、その様な値を得るための関数のこと。ハッシュ関数から得られた値のことを「要約値」「ハッシュ値」または単に「ハッシュ」という。
ハッシュ関数は、主に検索の高速化やデータ比較処理の高速化、さらには改竄の検出に使われる。
ハッシュ関数は非可逆変換であるため、ハッシュ値から元の値を容易には復元できないという特徴がある。そのため、認証サーバは、パスワードをハッシュ化して保存することが推奨される。このようにすれば、サーバ内の認証情報を窃取された場合であっても、キーを知られるリスクを減らすことができる。
MD5/SHA-1/SHA-256ハッシュ値を計算してファイルの同一性を確認する
Webサイトなどで配布されているファイルは、ダウンロード時に破損したり、悪意のある攻撃者によって改ざんされていたりすることがある。ダウンロードしたファイルの「ハッシュ値」を計算して、正しいファイルであるかどうかをチェックする方法を解説する。
ハッシュ値を使うと、ファイルの内容や長さ、ファイル名、更新日付などにかかわらず、常に、短い固定長のデータとして簡単に比較できるようになる。内容がたった1bit違っているだけでも結果のハッシュ値は大きく異なる(ことが多い)ため、人間が見ても異なるファイルであることを簡単に判別できるようになる。
ファイル(データ)の同一性をチェックするための計算アルゴリズムには、さまざまなものがある。以下によく使われているものを挙げておく。
・MD5(Message Digest Algorithm 5)
公開暗号システムを開発したRonald Rivestが開発したハッシュアルゴリズム。現在ではあまり推奨されていないが、ファイルの同一性チェックという用途ではまだ使われている。主なbit数は128bit。
・SHA-1(Secure Hash Algorithm 1)
アメリカの標準暗号化規格として当初採用されたハッシュアルゴリズム。これも現在では非推奨だが、ファイルの同一性チェックという用途ではまだ使われている。主なbit数は160bit。
・SHA-2/SHA-256/SHA-512
SHA-2はSHA-1の改良系。SHA-2にはbit数の異なる複数の規格があり、256bitと512bitのものは特にSHA-256/SHA-512と呼ばれる。
この記事へのコメントはありません。