スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.4816
パスワードのハッシュ化を行う際に付加されるデータである「ソルト」に関する記述として不適切なものはどれか。

【正解の解説】

ソルトはパスワードごとに異なるランダムな値を使用する必要はなく、システム全体で共通の固定値を用いることで十分なセキュリティ上の効果が得られる。

料理に例えると、ソルト(塩)はカレーの隠し味のようなものです。全員の鍋に全く同じ量の塩をただ入れるのではなく、ユーザーごとに違う隠し味をプラスするからこそ個性が出て破られにくくなります。もしシステム全体で共通の固定値にしてしまうと、攻撃者がその固定値を見破った瞬間にすべてのパスワードの対策が無効化されてしまうため、必ずパスワードごとに異なるランダムな値を使うのが大原則です。

スポンサーリンク

【その他の選択肢の解説】

ソルトを付加してハッシュ化を行うことで、同一のパスワードを設定したユーザ間であっても、データベース上のハッシュ値が一致しなくなる効果がある。

もしソルトを使わずに「password」という同じ文字列をハッシュ化すると、データベースには全員同じハッシュ値が並んでしまい、「この人とあの人は同じパスワードを使っているな」とバレてしまいます。しかし、ユーザーごとに異なるランダムなソルトを混ぜてからハッシュ化すれば、たとえ同じパスワードであってもデータベース上では全く異なる値として記録されるため、推測されにくくなります。

ソルトの主な目的はレインボーテーブルを用いたオフライン攻撃に対する耐性を高めることであり、ハッシュ値の逆算を困難にする効果がある。

レインボーテーブルとは、よく使われるパスワードとハッシュ値の変換結果をあらかじめ大量にリスト化した「辞書」のようなものです。これを使えば攻撃者は一瞬で元のパスワードを見つけ出せますが、ソルトという独自の調味料を混ぜておくことで、攻撃者が用意した汎用の辞書が全く役に立たなくなり、ハッシュ値の逆算や解析を圧倒的に難しくすることができます。

ソルトはパスワードとともにデータベースへ平文で保存されることが一般的であり、ソルトが漏洩してもパスワードの安全性に影響はない。

「隠し味」という名前から、ソルト自体も秘密の合言葉のように厳重に隠さなければいけないと勘違いしがちですが、そうではありません。ソルトはあくまでハッシュ化の計算を複雑にするためのランダムなデータであり、たとえ攻撃者にデータベースから平文のまま見られてしまったとしても、それ単体では元のパスワードを復元できない仕組みになっているため安全性が保たれます。