web入門
すばらしきwebの世界

ソルト(salt)とは何かを調べてみた

2017.01.11セキュリティ

パスワードをデータベースに格納する時にそのままのパスワードを登録せず、salt(ソルト)を使用して登録しているのが当たり前のようです。
PHPのフレームワークLaravelやEC Cubeもsaltが使用されています。
名前だけ知っていたので、勉強も兼ねて調べてみました。


パスワードの登録

ソルト(salt)を理解する前に、前知識として昨今よくあるパスワードの登録方法を記載します。

パスワードをデータベースに登録する際、そのままのパスワードを登録するのではなく、ハッシュ関数を利用してパスワードからハッシュ値を生成し、その値をデータベースに格納します。
ハッシュ値を生成する理由は、ハッシュ値からはパスワードを導き出すことが出来ないからです。これを「非可逆処理」と言うようです。


ソルト(salt)とは

本題に戻ると、saltとはパスワードに付与するデータのことです。

パスワードにデータを付与する理由は、パスワードを推測しにくくすることにあります。

先にハッシュ値からはパスワードを導きだせないと述べましたが、レインボー攻撃により無理矢理にでもパスワードを推測することが可能のようです。
そこでパスワードに任意の文字列(salt)を付与し、それをハッシュ化することで推測を困難にさせるのがメリットです。


ソルト(salt)との強度

ここではsaltを使用するとどれだけセキュリティ強度が増すかは検証しません。