12

私が働いている組織では、PPolicy (OpenLDAP モジュール) を使用して、パスワードを自動的にソルトおよびハッシュしています。残念ながら、OpenLDAP サーバーを実行しているマシンにアクセスできないため、構成ファイルを確認できません。私が見たところ、ほとんどすべてがデフォルト設定を使用してセットアップされているようです。

特定のユーザーのソルトを取得できるようにしたいと考えています。ユーザーの属性を見ると、userPassword は SSHA パスワードです。その特定のユーザーのソルトについては何も表示されません。最終的に LDAP スキーマを確認しましたが、ソルトについても何も表示されません。

各ユーザーのソルトがどこに保存されているかを推測するとしたら、どこにあるでしょうか? これはあいまいで、おそらく多くの情報ではないことは理解していますが、一意のソルトが正確にどこに保存されているかを説明している OpenLDAP ドキュメントのどこにも見つかりません。おそらく、以前に OpenLDAP サーバーを構成したことがある人なら、デフォルトの場所がどこにあるかを知っているでしょう。

ありがとうございました。

4

3 に答える 3

22

SSHA では、通常、salt が SHA1 ハッシュに追加され、全体が Base64 でエンコードされます (この方法で SSHA を行わない LDAP は見たことがありません)。これは、userPassword 属性を見ればわかるはずです。末尾に = が付いた 28 文字の長さの場合、それは単なるハッシュです。

Base64 値が 32 文字以上の場合、ハッシュとソルトの両方が含まれます。Base64 で値をデコードし、最初の 20 バイトを取り除きます。これが SHA1 ハッシュです。残りのバイトはソルトです。

例:

                     Base64 encoded hash with salt
userPassword: {SSHA}MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0

Base64 decoded value
     SHA1 Hash      Salt
--------------------++++
123456789012345678901234

編集:再確認したところ、可変長のソルトがサポートされている場合があるようです。これを考慮してエンコーディングの説明を修正しました。

于 2013-07-25T00:43:14.527 に答える