オルタナティブ・ブログ > IT雑貨屋、日々のつづり >

IT業界につとめる「雑貨屋(なんでも屋)」が、業界の事、情報セキュリティの事、趣味や日々雑感を綴っていきます。お暇な方はおつきあい下さい。

【暗号化技術.005】ハッシュ

»

 佐藤@IT雑貨屋です。

 次に「ハッシュ」について書いていきます。ハッシュとは一方向性の関数で、メッセージの改竄を干出します。また他のアルゴリズムと組み合わせて、認証など様々な事に利用されます。

◆ハッシュとは
 ハッシュとは、一方向性の関数であるハッシュ関数を用いる方法を言います。データに対してハッシュ関数を用いてハッシュ値を求めます。ハッシュ値の長さは、データの長さによらず一定長となります。
 ハッシュは暗号化(ハッシュ化)は出来ても、元に戻せないという性質があるため、メッセージを復元させたくない時に役立ちます。
 ハッシュの代表的な用途ですが、送りたいデータと併せてハッシュ値を送る事で改竄を検出すう事です。改竄とはデータを書き換える事ですが、元のデータが少しでも異なるとハッシュ値が変わってしまいます。またハッシュ値が同じ別のデータを探す事も難しい事から、改竄を検出する事が可能になります。
 ハッシュ関数において、ハッシュ値が一致する二つのメッセージを発見する事の困難さについては、衝突発見困難性と言います。またメッセージと、そのハッシュ値が与えられたときに、同一のハッシュ値となる別のメッセージを計算する事の困難さを原像計算困難性と言います。いずれもハッシュ関数の強度を示す指標となります。

◆ハッシュ関数の用途
 このハッシュ関数ですが、改竄検出の他にも様々な場面で使われています。パスワード認証を行うときのチャレンジ・レスポンス方式などでは、このハッシュ関数は良く利用されています。
 またパスワードを保管する時には、一般にパスワードをハッシュ関数で変換し、ハッシュ値のみ保管します。受け取ったパスワードをハッシュ関数で変換し、保管してあるハッシュ値と一致するか確認します。ハッシュ値は盗聴されても、元のメッセージが復元できないので、盗聴防止にも役立ちます。

◆ハッシュ関数の種類
 代表的なハッシュ関数を以下にまとめます。

MD5(Message Digest Algorithm 5)
 与えられた入力に対して128ビットのハッシュ値を出力するハッシュ関数です。

SHA-1(Secure Hash Algorithm 1)
 NISTが規格化した、与えられた入力に対して160ビットのハッシュ値を出力するハッシュ関数です。脆弱性があり攻撃手法がすでに見つかっているので、利用は推奨されません。しかし普及している事から継続利用が容認されています。

SHA-2(Secure Hash Algorithm 2)
 SHA-1の後継で、NISTが規格化したハッシュ関数です。それぞれ224ビット、256ビット、384ビット、512ビットのハッシュ値を出力するSHA-256、SHA-384、SHA-512の総称です。SHA-256以上は電子政府推奨暗号リストにも登録されています。

◆ソルト
 ソルトとは、パスワードをハッシュ値に変換する際に付加されるデータです。ハッシュ関数のアルゴリズムは公開されているため、同じメッセージから同じハッシュ値を求める事が出来てしまいます。そのために、ハッシュ値が同じデータをみつけることで、元のメッセージが推測出来てしまう可能性があるため、メッセージに付加するデータです。
 ソルトを付加する事で、お味メッセージから異なるハッシュ値が求められる事になり、メッセージの推測を困難にする事が出来ます。そのため、レインボー攻撃といった攻撃への対策として有効です。

◆HMAC
 メッセージに秘密鍵を付加したものをハッシュ関数で変換した値をHMAC(Hash-based Message Authentication Code)と呼びます。秘密鍵を加えることで、暗号的なハッシュ値となります。鍵付きハッシュ関数と言われ、内容認証などメッセージ内容を認証する場合によく用いられます。

Comment(0)