web-dev-qa-db-ja.com

パスワードの類似性

UNIXマシンでパスワードを変更したかった。通常の「passwd」を実行し、古いパスワードと新しいパスワードを入力しました。

その後、マシンは次のメッセージで私に戻ってきました:

BAD PASSWORD: is too similar to the old one

それは私に考えさせられました...それは、マシンがどこかにクリアテキストで私のパスワードを持っているということですか?そうしないと、古いパスワードと新しいパスワードを比較できないはずですよね?それとも、それを可能にするハッシュ関数はありますか?

9
dertoni

OK、それで私は Michael Hampton の提案に従い、 pam_cracklib.c のコードを調べましたが、pam_cracklibが古い(現在の)パスワードを取得しているようです。 PAMは関数呼び出し(認証のために現在のパスワードを入力したばかりなので、完全に問題ないと思います)を介して、古いパスワードと入力したばかりの新しいパスワードの間で類似性分析(距離関数)を実行します。

ただし、履歴内のすべての古いパスワードに対してこの分析を行うわけではありません。それらはハッシュとしてのみ保存されるため、それは不可能です。彼らにとっては、それらが同じであるかどうかのチェックしかありません。思った通り、すべて順調に見えますが、なぜなのかわかりました…ありがとうございました。

6
dertoni

古いパスワードはプレーンテキストで保存されません。

代わりに、古いパスワードハッシュはPAMによって/etc/security/opasswdに保存されます。次に、PAM構成で指定されている内容に基づいて、パスワードを変更するときに比較を行います。

PAM構成の例:

password required pam_unix.so sha512 remember=12 use_authtok

ここで、rememberにより、12個の以前のパスワードが記憶されます。

詳細については、 pam_cracklibを使用したLinuxパスワードセキュリティ を参照してください。

3
Michael Hampton

一部のシステムでは、エントロピー(パスワードの複雑さ)を保存/計算して比較できますが、PAMの場合かどうかはわかりません。

0
vn.