これは 元はフランス語のジョーク から来ています:
パスワードを入力してください。
carrot
パスワードは8文字以上である必要があります。
carottegéante
(巨大なニンジン)パスワードに数字が含まれている必要があります
1carottegéante
(1人のにんじん)申し訳ありませんが、パスワードにアクセント付き文字を含めることはできません
50putaindecarottesgeantes
(50いまいましい巨大なニンジン)パスワードに大文字を少なくとも1つ含める必要があります
50PUTAINdecarottesgeantes
(50 DAMNジャイアントキャロット)パスワードに2つの連続した大文字を含めることはできません
5OPutainDeCarottesGeantesQueJeVaisTeMettreAuCulSiTuNeMedonnesPasImmediatementUnAcces!
(すぐにアクセスを許可しない場合、お尻に入れる50の巨大なニンジン!)パスワードに句読点文字を含めることはできません
AttentionMaintenantJeVaisAllerTeTrouverEtTeMettreVraimentLes50CarottesGeantesSiTuContinues
(注意今、私はあなたを探しに行き、これが続く場合は本当に50人の人参を入れます)このパスワードは既に使用されています。
しかし、友達と話してみると:
私は言った:
これは組み込みのジョークのみです:3番目の回答にタイプミスがあります:ne soit pas ..そして、すでに使用されているパスワードをチェックするユーザー作成エンジンを知りません。
私の友人の答え:
そうです、冗談ですが、
PAM
を設定して、このようなチェックを行うことができます。password required pam_pwcheck.so nullok remember=N
よくわかりません!
権限のない人物は、新しい(偽の)アカウントを作成するだけで、パスワードが使用されているかどうかを確認できます。
この種のチェックの目的は何でしょうか?
remember
がpam_pwcheck
に対して何をしているのかを誤解している。 man page を参照してください:
remember = XX
最後のXXパスワードを覚えておいて、ユーザーが次のXXパスワード変更のためにこれらのパスワードを再利用することを許可しないでください。 XXは1から400までの数値です。
このオプションを使用すると、pam_pwcheck
は、以前に使用されたパスワードを再利用する試みを拒否します同じユーザーが。クロスユーザーは何もしません。選択したパスワードが他の誰かに使用されているかどうかについては警告しません。
実際、適切なパスワードハッシュが実施されている場合、このようなチェックの実装にはコストがかかります(ソルトと低速化のために多くの反復を行うと、他の数千のユーザーの推定パスワードを「試行」するのに数分かかります)。あなたが言うように、潜在的なパスワードが別のユーザーによってすでにどのように使用されているかについてユーザーに警告することは、それ自体、重大なセキュリティ問題になります。しかし、これはパスワードが適切に保存されていないことも意味しますanother重大なセキュリティ問題です。
pam_pwcheck
他の答えが言うように、特定のユーザーのパスワードのみを記憶します。
質問の他の部分は、「この種のチェックの目的は何でしょうか?」です。
実際、すべての既存のパスワードのチェックを行うシステムがあります。一般に、このようなシステムは、パスワードをプレーンテキストで保存するか、ユーザー名や、一致がすぐに見つかるのを妨げるその他の要素に依存しない無塩ハッシュを保存しています。私はこれをユーザーとして、機能要求(以下のように本質的に欠陥があることに加えて、パスワードを保存する合理的な手段で実行することは不可能であることを拒否した)として、またはの使用を修正することに異議を申し立てた平文ストレージ。
そして、目標は2つあります。
パスワードは推測しにくいので、予測不可能性の点でランダムに近い場合が理想です(パスワードを覚えておくという問題は別の問題*であり、パスワードの強度に対する新たな熱意が生まれると忘れられることがよくあります)。直感的に言うと、ランダムとは繰り返しの方法がほとんどないことを意味するため(ここで誰かが知っている可能性が高いのは間違いであるが、間違いは間違いである)、繰り返しは悪い兆候です。
より合理的には、他の誰かがパスワードを使用している場合、それは検出できない弱いパスワードである可能性があります(たとえば、電話番号などの会社のオフィスの詳細を使用して、別の従業員が試行する可能性がある方法でパスワードを作成する強度テスト)、本質的にユーザーが実際に推測しただけなので、推測することができます。
最初に考えた欠点は、ランダム性の繰り返しを理解できず、覚えにくいパスワードを安全に記憶できるポリシーでバックアップしない限り、完全にランダムなパスワードを期待することです。
2番目の考えの欠点は次のとおりです。
しかし、それでも、これらの欠陥はそれが起こらないことを意味しません。ジョークのシステムにはやはり別の欠陥があります。拒否carottegéante
分音記号のため。さまざまな場所で分音符号を拒否する技術的な理由があります(ただし、他の人のコードと相互運用する必要がない限り、これらの理由は現代のコードではまったく許されません)。ユーザー名!同様に、多くのシステムはパスワードのスペースなどを拒否します。一般的に、私はこれをカーゴカルトプログラミングに当てはめます。他の誰かがそれをしたので、あなたはそれをコピーします。ある程度、これは完全に不合理ではありません。私はセキュリティに関しては、自分よりもよく知っている人のことをコピーするので、そのようなポリシーを盲目的にコピーしたことで誰かを完全に責めることはしません。それでも、 "jdiwmfojkslofklo"を受け入れ、 "ﬤסּוּ ﭞﻘﺪӐӓҾӌȕ"を受け入れないことは何も改善する方法がなく、実際に攻撃される可能性のあるパスワードの範囲が減少することに気づくのに、ほんの少し時間がかかります。
とにかく、いくつかのシステムがスペースに対して持っているルールは、ジョークを英語に翻訳するアプローチを私たちに与えます。 2番目のパスワードを「巨大なニンジン」にスペースを入れて入力します。
*それがポストイットノートの目的ですよね。