なぜこのランダムなパスワードは単純すぎる/体系的であるというフラグが立てられていますか?


37

passwdおよびcracklib-checkにM1uG*xgRCthKWwjIjWc*010iSthY9bucよると、ランダム文字列はパスワードに対して単純すぎる/体系的であると検出されるのはどうですか?お使いのマシンで試してみてください

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

これは私のパスワードではなく、同じ結果を生成する同じランダムパスワードジェネレータからランダムに生成された別の文字列であることに注意してください。


3
それは言うM1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
RICI

一部のバージョンのみがこれを単純であると検出します。詳細については、slmの回答を参照してください。
BeowulfNode42 14年

代わりに/dev/urandomパスワードの生成に使用しないのはなぜですか?
devnull

@devnull-あなたが何を考えていたかわからないが、パスワードを生成する方法に関する2つの方法を私のAに追加した。
slm

回答:


59

cracklibはオープンソースであるため、答えはソースコードに記載されています

「単純すぎる/体系的すぎる」とは、アルファベットの隣の文字が先行する文字が多すぎることを意味します。したがって、「ab」または「ba」は不良と見なされますが、bが省略されているため、「ac」または「ca」は問題ありません。

2010-03-02からのこのパッチの前に、この特性を示す最大で4人のキャラクターを許可します。たとえば、「a」、「2」、「3」、「4」、および「5」の文字は先行する文字のアルファベット順に隣接しているため、「bar12345」は失敗します。

slmは彼の答えでM1uG*xgRCthKWwjIjWc*010iSOKであることがわかりましたが、そうでM1uG*xgRCthKWwjIjWc*010iStはありません。分析しましょう。以下は、cracklib-checkが体系的なパスワードを示していると考える文字です。

M1uG*xgRCthKWwjIjWc*010iS
               ^^    ^^

これは最大4つ以下ですが、tを追加します:

M1uG*xgRCthKWwjIjWc*010iSt
               ^^    ^^  ^

TはSの後に続くため、制限を超えてプッシュします(テストでは大文字と小文字が区別されないようです)。

パッチは、このような誤検知を避けるために、パスワードの合計長に依存するように最大制限を変更します。


1
010はすでに3としてカウントすべきではありませんか?素晴らしい答え。
ジョンV. 14年

1
正確なソースコードの差分を提供してくれてありがとう。ところで、このファイルがfascist.cと呼ばれる理由はありますか?
ローレント14年

@ this.lau_-推測しています:en.wikipedia.org/wiki/Fascism
slm

キャラクターに関して「小さい」と「大きい」について話すのは少しおかしいですよね?まあ、私はそれがASCII値についてだと知っていますが、あまり明白ではないかもしれません。-では、もっと単純な方法で説明してみませんか?文字の後には、直接の隣人も前任者も続かないでください。したがって、「ab」も「ba」も許可されませんが、bが省略されているため「ac」または「ca」は許可されます。
構文エラー14年

小さくも高くもできないが、同じ(Ww)にできる理由はありますか?
Jeroen Vannevel 14年

31

Fedora 19で

実行すると、OKになります。私は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-check、26文字目に到達すると失敗し始めます。

# 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して機能vし続けると言うます。

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

のバージョンでcracklib-checkは、部分文字列にハングアップしているように見えSthます。

あなたが提供した文字列のチャンクには間違いなく奇妙なことがあります。テールエンドピースを取り、フロント部分を省略すると、この部分も失敗する可能性があります。

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

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

更新#1

@ waxwingの非常に優れた調査に基づいて、4文字以上が隣接しすぎると、使用されるヒューリスティックがトリップすることがわかった。このヒューリスティックを変更するパッチが導入され、これらの誤検知を排除するために、考慮中のパスワードの全体の長さが考慮されるようになりました。

結論は?

私の限られたテストのいくつかに基づいて、ここで遊んでいるいくつかの奇妙な発見的手法があるように見えます。一見うまくいくと思われる特定の文字列は、それをつまずいています。

これを体系化しようとしている場合は、パスワードの生成と評価をラップし、パスワードが生成されたらループから抜け出すことをお勧めします cracklib-checkます。

または少なくとも、@ maxwingが彼の答えで言及している修正を含む新しいバージョンにアップグレードすることをお勧めします。

パスワード生成の代替

pwgen

また、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

cracklib-2.8.9-3.1.src.rpmを使用してCentOS 5.5で実行していました。どちらの場合でも、そのような長いランダム文字列はどのように単純すぎるのでしょうか?
BeowulfNode42 14年

@ BeowulfNode42-そうではありません。バグ、または少なくとも実装の制限を発見したようです。
slm

奇妙な。しかしTm7U:n=@*+4$*gf$6hOngEHJ;mnh$+R6、同じマシン上でのような文字列は完全に問題ありません。
BeowulfNode42 14年

1
二重引用符、グロブの展開を防ぎます。文字列はドル記号、バッククォートなど含む場合には、単一引用符は、しかしまだ良いアイデアです
デニス・

2
「パッチが導入されました...」また、問題のパッチは決して最新のものではないことに注意する必要があります(サウンドの方法とは異なります)が、2010年に既に送り返されています:)
syntaxerror
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.