LoginSignup
78
73

More than 5 years have passed since last update.

Salt と HMAC の違い

Last updated at Posted at 2015-06-09

タイトルの内容について、どちらもハッシュの計算時に使用するアレな値という意味では2つは全く一緒なので、違いを整理しました。
備忘として残しておきたかったので投稿します。

Salt (ソルト)

パスワードを暗号化する際に付与されるデータのことを言います。
例えばメールアドレスとパスワードでアカウント登録を要求されるようなサービスにおいて、メールアドレスをSaltに含め、パスワードをハッシュ化して保存するといった使い方をします。
パスワードを捨ててパスワードハッシュを保存し、さらに保存されたハッシュは非可逆でパスワードを復元できないことが重要となります。
もしサーバーのrootに第三者が侵入したとしてもパスワードの漏洩を防げるからです。
また、この方法は総当り攻撃を阻止することを意図していて、攻撃が意図的に遅くなるように設計されているのが特徴で、ストレッチング(1000回ハッシュ計算を繰り返して計算に時間がかかるようにする)という方法と併せてよく使用されます。
そのため、Saltは秘密であることを重要視していないですが、いくつかの条件があります。

  • ユーザーごとに異なるSaltであること (漏洩時のリスクを最小限にする為)
  • ある程度の長さを確保すること (推測されにくくする為)

HMAC

メッセージ認証符号の一つであり、鍵(メッセージ認証符号のことです)とデータとハッシュ関数を元に計算されたハッシュ値を持ちます。
認証と改竄検出のために使われるアルゴリズムで、HMACにより算出された値をMAC (Message Authentication Code) 値と呼びます。
HMACは基本的に暗号チェックサムであり、攻撃者がメッセージを改竄したことを検出するために使用されます。
なので鍵は秘密である必要があり、可能な限り高速となるように設計されている特徴があります。

78
73
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
73