ハッシュ関数
Hash Function
どんなデータも決まった長さの「値」に変換する仕組み。
簡単に説明すると
ハッシュ関数は、入力したデータをルールに基づいて特定の文字列に作り変えるプログラムだよ。 元のデータが少しでも変わると変換後の値が全く違うものになるから、データが改ざんされていないかの確認に利用されるんだ。 また、パスワードの保存にも使われるけれど、その場合は一般的なものとは違い、解析を難しくするために「ソルト」や「計算コスト」を加えた専用のパスワードハッシュ方式を使うことで、安全性を高めているんだ。
名前のヒミツ
ハッシュ関数(はっしゅかんすう)。 Hash(ハッシュ)は「細かく切り刻む」という意味の英単語で、料理のハッシュドポテトと同じ由来だよ。元のデータをバラバラにして混ぜ合わせ、決まった長さのデータに作り変えることからこう呼ばれているんだ。
くわしく見てみよう!
ハッシュ関数とは、どんな長さのデータを入れても、決まった長さの「ハッシュ値」と呼ばれる不規則な文字列を計算して出す仕組みのことだよ。
一度ハッシュ値に変換すると、その値から元のデータを復元することはできないという大きな特徴があるんだ。
ハッシュ関数には、同じデータを入れれば必ず同じ値が出てくるというルールがあるよ。
一方で、元のデータがたった1文字変わるだけで、出てくるハッシュ値は全く別のものに変わってしまうんだ。
この性質を利用して、ファイルがダウンロード中に壊れていないか、あるいは誰かに書き換えられていないかをチェックすることができるよ。
また、パスワードの管理にもこの技術が応用されているけれど、用途によって仕組みを使い分けているんだ。
ファイルの改ざん検知などには一般的なハッシュ関数が使われるけれど、パスワードの保存には「ソルト」というランダムなデータを加えたり、解析を遅らせるために計算コストを持たせたりする専用の方式が使われるよ。
こうして攻撃への対策を強化して保存することで、万が一データが盗まれても元のパスワードを特定されるリスクを最小限に抑えているんだ。