2011-01-28 5 views
1

使用への利点があります:グローバル塩は、サーバー上の設定ファイルである間ハッシュ塩複雑

sha1($long_unpredictable_randomly_generated_salt.$password.$global_salt) 

sha1(sha1($username).$password.$global_salt) 

以上のユニークな塩は、明らかに、データベースに格納されます。

私は塩のpurpsoeがちょうどユニークで、事前計算されたハッシュテーブルを防止することを知っている..私はsha1($username)によって生成された長いハッシュの理由は見ていない。しかし、セキュリティが非常に重要であるので、

答えて

4

ユーザー名はほとんど知られているので、誰かがこの「公式」を知っていたら、彼はちょうどsha1(user_to_hack)を計算することができます。私はあなたに有益なアドバイスをお願いします。この部分は追加の利益がありません。実際には、この場合はsha1(username)を使用するか、またはusernameを使用するかはあまり関係ありません。

他のケースでは、公開されていない値を使用しているので、誰かが(今誰もが知っている)あなたの公式を知っていても、それらには、データベースにアクセスする必要があります。あなたは各ユーザーのために独自の塩を作っていると思いますか?

とにかくデータを取得する必要があるかもしれません。したがって、ユーザー名に対してハッシュを計算する必要がないため、固有の塩がおそらく速くなります。

しかし、とにかく、どちらもかなり安全です。ですが、の場合は実際のログイン手順をうまく実装しています。私は今、どちらを使うのか心配しません。

+0

私はusernameとsha1(username)の違いは、サーバーとデータベースの両方がハッキングされた場合には重要だと思います。 たとえば、すべての文字の組み合わせの長さが15までの虹のテーブルが生成された場合(グローバルソルトが追加された場合)、username + passwordの合計長が15以下のすべてのハッシュが解決される可能性があります。私はsha1(username)を使用する場合、これは動作しません、彼らは約30 +の長さまですべての組み合わせのための虹のテーブルを生成する必要があるでしょう(かなりlongeRを取る) – sil

+3

実際には、エントロピーの余分なビットとしてではなく、ルックアップテーブルに対するヘッジとして塩を使用する。個人的には、私は静的に保存されたハッシュを公に知っているものとみなし、とにかくエントロピーには依存しないと考えています。 –

+2

ユーザ名のハッシュは、ユーザ名が秘密でない限り、本当にランダムではありません。 – Marcin