Bu rastgele şifre neden çok basit / sistematik olduğunu söyleyerek işaretlendi?


37

Rastgele dize passwd ve cracklib-check'eM1uG*xgRCthKWwjIjWc*010iSthY9buc göre şifre için çok basit / sistematik olarak nasıl algılanıyor ? Makinenizde deneyin ve görün

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

Bunun benim şifrem olmadığını, aynı sonucu oluşturan aynı rastgele şifre üreticisinden rastgele oluşturulmuş bir dize olduğunu unutmayın.


3
DiyorM1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Rici

Sadece bazı sürümlerin bunu basit bulduğu ortaya çıktı. Bu konuda daha fazla bilgi için slm'nin cevabına bakınız.
BeowulfNode42

Neden /dev/urandombir şifre oluşturmak için kullanmıyorsun ?
devnull

@devnull - Aklında ne olduğundan emin değilim ama A'ma nasıl şifre üretileceğine dair 2 yöntem ekledi.
slm

Yanıtlar:


59

Cracklib açık kaynak olduğundan, cevap kaynak kodunda bulunabilir .

"Çok basit / sistematik", alfabetik olarak komşularından birinin önünde çok fazla karakter bulunduğu anlamına gelir. Bu nedenle "ab" veya "ba" kötü kabul edilir, ancak "ac" veya "ca", b ihmal edildiğinden beri iyidir.

2010-03-02'den itibaren bu yamadan önce , bu özelliği sergileyen en fazla dört karaktere izin verir . Örneğin, "bar12345" başarısız olur, çünkü "a", "2", "3", "4" ve "5" karakterleri önceki karakterlerin alfabetik komşularıdır.

slm cevabında okundu M1uG*xgRCthKWwjIjWc*010iS, M1uG*xgRCthKWwjIjWc*010iStöyle değil iken öğrendim . Analiz edelim. Cracklib-check'in sistematik bir şifrenin göstergesi olduğunu düşündüğü karakterler:

M1uG*xgRCthKWwjIjWc*010iS
               ^^    ^^

bu, dördüncü değerin altındadır, ancak t eklenir:

M1uG*xgRCthKWwjIjWc*010iSt
               ^^    ^^  ^

T, S'yi takip ettiğinden onu sınırın üzerine çıkar (testin büyük / küçük harfe duyarsız olduğu anlaşılıyor).

Yama, maksimum limiti değiştirir, böylece böyle yanlış pozitifleri önlemek için toplam şifre uzunluğuna bağlıdır.


1
010 zaten 3 sayılmalı mıydı? Yine de harika cevap.
John V.

1
Tam cevap ve kaynak kodunu sağladığınız için teşekkür ederiz. Bu arada, bu dosyanın fascist.c olarak adlandırılmasının bir nedeni var mı?
laurent

@ this.lau_ - Tahmin ediyorum: en.wikipedia.org/wiki/Fascism
slm

Karakterler açısından "daha küçük" ve "daha büyük" hakkında konuşmak biraz komik değil mi? Şey, bunun ASCII değerleri ile ilgili olduğunu bilmeme rağmen, çok açık olmayabilir. - Öyleyse neden daha basit bir şekilde açıklamıyorsun? Hiçbir karakter doğrudan komşusu veya selefi tarafından takip edilmemelidir. Dolayısıyla ne "ab" ne de "ba" 'ya izin verilmemektedir, ancak "ac" veya "ca", b ihmal edildiğinden beri olur.
sözdizimi

Bir daha küçük veya daha yüksek olamamasının bir nedeni var mı, aynı olabilir ( Ww)?
Jeroen Vannevel

31

Fedora'da 19

Koştuğum zaman tamam anladım. Fedora 19’dayım.

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

İşte sürüm bilgisi:

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

NOT: Sizinle *garip şekillerde genişleyebilecekleri için çifte alıntı yerine tek tırnaklarla denerdim .

CentOS 5 ve 6

Örnekinizi CentOS 6'da denemek iyi oldu, bir sorun yok, ancak CentOS 5.9'da tanımladığınız gibi başarısız oldu.

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

Sürüm bilgisi:

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

Bir böcek?

Tökezlediğiniz şey bir böcek gibi görünüyor. İpinizi alıp dizgenden daha fazla cracklib-checkkoşarsanız, 26. karaktere ulaştığınızda başarısız olmaya başladığını fark edersiniz:

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

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

Son karakteri a değiştirdiğimde bunun üzerinde daha derine inerek çalışmaya devam ettiğini tsöylerim v.

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

Böylece sürümünde cracklib-checksubstring asılıyor gibi görünüyor Sth.

Sağladığınız ipin parçaları hakkında kesinlikle garip bir şey var. Kuyruk ucu parçasını alıp ön kısmı çıkarırsam, bu kısmın da bozulmamasını sağlayabilirim.

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

Aynı dize, Fedora 19 ve CentOS 6'da da sorunlara neden oluyor!

GÜNCELLEME # 1

@ Waxwing'in çok hoş dış kılıfına dayanarak, artık> 4 karakter birbirine çok yakınsa , kullanılan sezgiselin tetiklendiğini biliyoruz. Bu sezgisel yöntemi değiştiren bir düzeltme eki sunuldu , böylece bu hatalı pozitifleri ortadan kaldırmak için söz konusu parolanın toplam uzunluğu dikkate alındı.

Sonuçlar?

Sınırlı testlerimin bazılarına dayanarak, burada oyunda bazı garip sezgiler varmış gibi görünecek. Görünüşe göre iyi görünen bazı dizeler açıyor.

Bunu kodlamaya çalışıyorsanız, bir parolanın oluşturulmasını ve değerlendirilmesini tamamlamanızı ve ardından geçerli bir parola oluşturulduktan sonra döngüden ayrılmasını öneririm cracklib-check.

Ya da en azından, @ maxwing'in cevabında bahsettiği düzeltmeleri içeren daha yeni bir sürüme yükseltme yapmanızı öneririm.

Şifre Gen Alternatifleri

PWGen

Ayrıca genellikle pwgenşifre oluşturmak için kullandığımı da ekleyeceğim . Bu burada da size yardımcı olabilir.

$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
urandom

Ayrıca küçük bir betik büyü kullanabilir tr, /dev/urandomve foldbir çok yüksek kaliteli rasgele şifre almak için.

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

foldKomut uzunluğunu kontrol edebilir. Alternatif olarak bunu da yapabilirsiniz:

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

CentOS 5.5'te cracklib-2.8.9-3.1.src.rpm ile çalıştırıyordum. Her iki durumda da, böyle uzun bir rastgele dize nasıl çok basit olabilir?
BeowulfNode42

@ BeowulfNode42 - öyle değil. Bir hata bulmuş gibi görünüyorsunuz ya da en azından uygulamanın bir sınırlaması var.
slm

Garip. Yine de bir dize Tm7U:n=@*+4$*gf$6hOngEHJ;mnh$+R6aynı makinede mükemmel tamam.
BeowulfNode42

1
Çift tırnak , küre genişlemesini önler. Tek tırnak, yine de, dize dolar işareti, backticks, vs. içeriyorsa, hala daha iyi bir fikirdir.
Dennis

2
"Bir yama tanıtıldı ..." Ayrıca, söz konusu yamanın hiçbir zaman sonuncusu olmadığına da dikkat edilmelidir (kulağa
gelme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.