ハッシュ化 【hashing】 ハッシング
概要
ハッシュ化(hashing)とは、元のデータから一定の計算手順に従ってハッシュ値と呼ばれる規則性のない固定長の値を求め、その値によって元のデータを置き換えること。パスワードの照合や保管などでよく用いられる。任意長の長さのデータから固定長のデータを得る計算手順を「ハッシュ関数」(hash function)という。これは同じデータからは必ず同じハッシュ値が得られる一方、元のデータが少しでも異なれば規則性無くまったく異なる値になるという性質がある。ハッシュ値から元のデータを効率よく割り出したり、同じハッシュ値を持つ別のデータを生成することは極めて難しい。
この性質を利用して、元の値をハッシュ値に置き換えて利用することをハッシュ化という。例えば、パスワードなどの秘密のデータを安全に保管したい場合、パスワード本体は破棄してハッシュ化した値のみを保管しておけば、認証時には利用者の入力値から得たハッシュ値と比較すれば照合できる一方、攻撃によってデータが漏洩してもパスワードそのものは攻撃者に渡ることはない。
また、信頼できない伝送経路を用いて認証データを送受信しなければならない場合も、平文のパスワードをそのまま送ると途中で攻撃者に覗き見される恐れがあるが、ハッシュ化したものだけを送れば、受信側ではハッシュ値同士の比較で照合可能な一方、データが覗き見されてもパスワード自体は分からない。この方式は「Digest認証」「チャレンジ/レスポンス認証」などに利用されている。
なお、パスワード保管時に単にハッシュ化しただけでは、別のシステムやサービスから流出してしまったパスワードとの照合が容易になってしまうなどの弱点があるため、「ソルト」というランダムな値をパスワードに連結して全体をハッシュ化するという手法が用いられることが多い。同じパスワードでも保管されるハッシュ値はソルトによって毎回異なる一方、認証時には入力値に同じソルトを付けてハッシュ値を算出すれば容易に照合できる。
(2024.1.12更新)
関連用語
他の辞典による解説 (外部サイト)
この記事を参照している文書など (外部サイト)
- 富士通 FMWORLD セキュリティレポート「LINEからFacebookまで。乗っ取りの手口と対策
」にて参照 (2016年2月)