2

私自身の JAAS LoginModule のガイドラインとして、PAM モジュールがどのように設計されているかを調べています。私が驚いたことの 1 つは、ハッシュ化されたパスワードにアクセスするために使用されるメソッドは、ハッシュ メソッド自体とほとんど直交しているにもかかわらず、このプロパティをうまく利用する PAM モジュールを見つけることができなかったことです。私が見落としていたセキュリティ上の問題が原因なのか、それとも単にまだ調査されていないものなのか?

私の言いたいことをもう少し説明するために、ハッシュ化されたパスワードにアクセスするための 3 つの異なる方法 (LDAP、SQL、プレーン ファイル) と 2 つのハッシュ方法 (MD5、SHA1) があるとします。現在、アクセス方法ごとに 1 つ以上の PAM モジュールがあり、それぞれがこれらのハッシュ方法を 1 つ以上実装しています。新しいハッシュ メソッド (BCrypt など) を追加するということは、新しいハッシュ タイプをサポートするために、これらすべてのアクセス メソッドを変更する必要があることを意味します。より良い設計は、ユーザー名を使用してハッシュ化されたパスワードを取得するだけのアクセス方法ごとに 1 つの PAM モジュールを用意し、ハッシュ検証を実行する PAM モジュールの別のセットを用意し、ハッシュ値をモジュール間で共有することです (パスワードは)です。データベースを使用してパスワードを保存し、MD5 を使用してパスワードを確認すると、構成は次のようになります。

password  required  pam_sql.so
password  required  pam_md5.so

この構成では、pam_sql はハッシュ化されたパスワードをデータベースから取得します (ユーザー名が存在しない場合は失敗します)。次に、pam_md5 はハッシュされたパスワードとテストするパスワードを比較し、一致しない場合は失敗します。Bcrypt を使用する別の構成では、pam_md5 を pam_bcrypt に置き換えるだけで済みます。pam_sql の開発者が新しいハッシュ メソッド用に更新するのを待つ必要はありません。

4

1 に答える 1

1

PAM には、パスワードのハッシュ化やパスワードの比較方法 (ハッシュ化されているかどうかにかかわらず) に関する知識がありません。PAM は、モジュールがユーザーと「会話」を行うための機能を提供します。つまり、ユーザーに質問して回答を得ることができます。もちろん、通常の質問は「あなたのユーザー名は何ですか?」です。と「あなたのパスワードは何ですか?」ですが、そうである必要はありません。すべての PAM ケアについて、認証プロセスの結果を決定する前に、一部のモジュールがユーザーに 5 つの質問をするか、まったく質問しない可能性があります。

あなたが求めているのは、ハッシュ化されたパスワードを処理する PAM モジュールのサブセットに共通のサービスを提供する PAM よりも下位層での抽象化です。

あなたの質問は何ですか?そのような抽象化を実装し、標準として推進したいですか?

于 2012-06-10T15:22:23.863 に答える