2

私のデータベースには、ユーザーパスワード (User.UserPassword) のフィールドがあり、SHA1 アルゴリズムを使用してユーザー入力をハッシュし、それをソルトでハッシュしています。OK、それは大丈夫です。

しかし、今は CIFS ユーザーも認証しています。CIFS の 1 つのプロトコルは NTLMv1 です。これは、私の Samba Java サーバーに MD4 16 ビット (非常に安全でない) を使用します。

MD4 を SHA1 に変換したり、それらのハッシュ結果を比較したりできません。したがって、2 つのハッシュを保存するか、それらを比較する必要があります。だから、私はできる:

  • MD4 ハッシュを User.UserPasswordMD4 に保存します。

  • MD4 ハッシュを、ExternalAuthenticators などの他のテーブルに保存します。

  • ユーザーの全文パスワードを保存して変換します (Blargh)

  • Spring Security (まだやり方がわからない)

  • あなたの選択肢はここにあります...

誰でも私を助けることができますか?

4

1 に答える 1

1

クライアントとサーバーの両方がチャレンジバイトに対して同じアクションを実行し、サーバーよりも結果を比較する必要があるため、そのRC4ハッシュをどこかに保存する必要があるようです。

  • プレーン テキストのパスワードを保存する - 悪い考えです。忘れてください。
  • データベースにPasswordMD4として保存すると、PC4以上のセキュリティが自動的に追加されません。
  • 他のテーブルに保存 - 以前のバリアントと違いはありません。
  • 春のセキュリティ - ここでどのように適用できるかわかりません。

暗号化されたパーティションに重要またはすべての DB データを保存できますが、パフォーマンスが少し低下します。

RC4 パスワードを SHA-1 フィールドに保存することをお勧めしますが、暗号化します。3DES で十分でしょう。SHA-1 ハッシュ用のソルトがすでにどこかにあるはずです。RC4 ハッシュが必要な場合は、DB から値を単純に復号化し、salt を減算 (または XOR) し、通常の認証手順を実行します。

また、NTLM v1 は使用しないでください。古くて安全ではありません。

于 2013-06-13T15:22:45.400 に答える