情報セキュリティ講座(48) ハッシュ関数
ハッシュ関数は一方向の関数で、暗号化させることができますが、復号化ができません。平文からハッシュ値を求めることはできますが、ハッシュ値から平文を求めることが出来ないのです。
平文が一部でもちがうと、全然違うハッシュ値が出力されます。だから前後の文字で推測することもできません。逆に、同じ平文からは、必ず同じハッシュ値が出力されます。
平文が異なるのに、同じハッシュ値が出力されることも、理論上ありえます。このことをハッシュ値の衝突といいます。衝突の起きにくさを衝突発見困難性といい、ハッシュ関数の強度の指標となります。
ハッシュ値の代表的な用途は、改竄検出です。平文とハッシュ値を同時に送れば、平文が改竄されたかどうかは、送られてきた平文のハッシュ値を計算して、送られてきたハッシュ値と比較すればよいのです。
また、サーバとクライアントでパスワードを照合する際、サーバ側でパスワードを保存してクライアントから送られるパスワードと比較すると、パスワードのやりとりが盗聴されるリスクもあるし、サーバ側でのパスワード流出リスクもあります。これを、パスワードから出力されたハッシュ値同士の比較とすれば、リスクを低減することもできます。
また個人情報の観点から購買データなどを匿名化する際に、個人情報部分をハッシュ値に置き換えれば、個人情報がなくなり、統計化して購買傾向をデータ分析するなどの利用ができます。
ハッシュ関数は、情報セキュリティにおいて、欠くことのできない技術ですので、理解することは大切だと思います。