このランダムなパスワードが単純すぎるか、または体系的にマークされているのはなぜですか?

このランダムなパスワードが単純すぎるか、または体系的にマークされているのはなぜですか?

以下に基づいて、任意の文字列がM1uG*xgRCthKWwjIjWc*010iSthY9bucパスワード/システムと比較して単純すぎると検出される方法パスワードそしてクラックライブラリの確認?コンピュータで試してみてください。

echo "M1uG*xgRCthKWwjIjWc*010iSthY9buc" | cracklib-check

これは私のパスワードではなく、同じランダムパスワードジェネレータでランダムに生成された別の文字列であり、同じ結果を生成します。

答え1

cracklibはオープンソースなので、答えは以下にあります。ソースコード

「過度に単純化/体系的」とは、あまりにも多くの文字の前にアルファベット順の隣人の1つがあることを意味します。したがって、「ab」または「ba」は悪いと見なされますが、「ac」または「ca」はbが省略されているので大丈夫です。

今後このパッチは2010-03-02からです。、これは最大許容4文字これらの特性を示しています。たとえば、「bar12345」は、文字「a」、「2」、「3」、「4」、および「5」が先行文字のアルファベットネイバーであるため失敗します。

slmは彼の答えで「M1uG*xgRCthKWwjIjWc*010iSしかしM1uG*xgRCthKWwjIjWc*010iStそうではない」ことを発見しました。それを分析しましょう。以下は、crashlib-checkがシステムパスワードを表すと見なす文字です。

M1uG*xgRCthKWwjIjWc*010iS
               ^^    ^^

4つの最大値を下回っていますが、tを追加すると次のようになります。

M1uG*xgRCthKWwjIjWc*010iSt
               ^^    ^^  ^

TがSに従うので限界を超えているのです(テストでは大文字と小文字を区別しないようです)。

パッチは、これらの誤検出を防ぐために、パスワードの全長に応じて最大制限を変更します。

答え2

Fedora 19から

実行してみると大丈夫です。私はFedora 19を使用しています。

$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK

バージョン情報は次のとおりです。

$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version     : 2.8.22
Release     : 3.fc19

メモ:また、二重引用符の代わりに一重引用符を使用します。なぜなら、*奇妙な方法で拡張される可能性があるからです。

CentOS 5および6

CentOS 6で例を試してみるとうまく動作し、問題はありませんが、CentOS 5.9で説明したように失敗します。

$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic

バージョン情報:

$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version     : 2.8.9                  
Release     : 3.3

間違い?

あなたが見つけたのはバグのようです。文字列を入力して実行を続けると、cracklib-check26番目の文字に達すると失敗し始めることがわかります。

# 25    
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK

# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic

t最後の文字をaで動作し続けるという意味に変えたら、vこの内容をもう少し詳しく見てみましょう。

$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK

だからバージョンではcracklib-checksubstrings にかかったようですSth

あなたが提供した文字列ブロックには間違いなく何か奇妙なことがあります。先端を抜いて前の部分を省略したら、この部分も失敗したと思います。

$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic

同じ文字列はFedora 19とCentOS 6でも問題を引き起こします!

アップデート#1

@に基づいて平和鳥のとても素晴らしい調査です。今、私たちは、4つ以上の文字が互いに近すぎると、使用されているヒューリスティックが間違っていることを知っています。 ㅏパッチが導入されました。これは、検討中のパスワードの全長を考慮して、これらの誤検出を排除するためにこの経験的な方法を変更します。

結論的に?

限られたテストのいくつかによると、ここには奇妙な経験的な方法があるようです。一見正常な文字列の一部は問題を引き起こす可能性があります。

これをコーディングする場合は、パスワードの生成と評価をラップし、pacifyパスワードを生成してループから外すことをお勧めしますcracklib-check

または、少なくとも@maxwingが回答で述べた修正を含む最新バージョンにアップグレードすることをお勧めします。

パスワード生成の代替

普遍的な根

私も一般的に使用するものを追加したいpwgenパスワードを生成します。これはあなたにも役立ちます。

$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
ランダム

tr/dev/urandom、およびでいくつかのスクリプト魔法を使用して、fold非常に高品質のランダムパスワードを取得することもできます。

$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF

このfoldコマンドは長さを制御します。あるいは、次のこともできます。

$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr

関連情報