2011-07-29 8 views
2

私はDjangoフレームワークの初心者です。 djangoのデフォルト認証システムを歩いているうちに、djangoはユーザーのパスワードをalgorithm$salt$hashed形式で保存しています。そして塩はすべての単一のユーザーのために同じではありません。 djangoはユーザごとに新しい塩を生成します。djangoフレームワークのパスワードハッシングに 'ランダムソルト'を含めることの意味は何ですか?

私はいくつかのWebページを作っていて、他のオープンソースソフトウェアを使用して多くのチャンスを得ていますが、ハッシングのために常に1つの塩ストリングがありました。

だから、私の質問は:「1」塩文字列の横に

  1. なぜジャンゴ用途「ランダム」塩?
  2. djangoがパスワードハッシュを使用して同じ列に格納する理由を教えてください。

答えて

6

なぜdjangoは 'one' salt文字列の横に 'random' saltを使用するのですか?

塩が1つあれば、ランダム塩がある場合よりもデータベースのために虹のテーブルを作成することができます。

djangoハッシュを解読するためにレインボーテーブルを生成したい場合は、データベース内の異なるソルトごとにテーブルを生成する必要があります。レインボーテーブルの生成には非常に時間がかかりますが、それは単なるブルートフォースや辞書攻撃です。

djangoがパスワードハッシュを使用して同じ列に格納する理由を教えてください。

具体的に何を尋ねているのか分かりませんが、おそらく2つの回答があります。

誰かがそのように設計したため保存されています。塩田にいる可能性があり、それは問題ではないでしょう。

- ユーザーがフォームdjangoでパスワードを送信するときにsaltをstringに結合し、sha1を計算してdbの値と一致するかどうかを確認します。

+0

本当にありがとうございます。私はno.1の理由を理解していなかったのでno.2に尋ねた。ありがとう! – lqez

1

パスワードの塩練習は、攻撃者があなたが保存したパスワードを強要するのをより困難にするためのものです。 More info

+0

回答ありがとうございますが、私はハッシュの塩の目的を知っていました。私の質問は塩だけではない。 – lqez

3

ランダムな塩は、虹のテーブルを使用してテーブルのすべてのパスワードを迅速に復号化することを防ぎます。代わりに、それぞれ別々に行う必要があります。

+0

ありがとうございます。 – lqez

関連する問題