यह यादृच्छिक पासवर्ड क्यों कहा गया है कि यह बहुत ही सरल / व्यवस्थित है?


37

पासवार्ड और क्रैकलिब-चेक केM1uG*xgRCthKWwjIjWc*010iSthY9buc अनुसार रैंडम स्ट्रिंग को एक पासवर्ड के लिए कितना सरलीकृत / व्यवस्थित किया जा रहा है ? इसे अपनी मशीन पर आज़माएँ और देखें

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

ध्यान दें कि यह मेरा पासवर्ड नहीं है, लेकिन उसी यादृच्छिक पासवर्ड जनरेटर से एक और यादृच्छिक रूप से उत्पन्न स्ट्रिंग है जो समान परिणाम उत्पन्न करता है।


3
यह कहता हैM1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
रिसी

केवल कुछ संस्करण ही इसे सरल बताते हैं। इस बारे में अधिक जानकारी के लिए स्लम का उत्तर देखें।
बेवुल्फनोडे42

/dev/urandomपासवर्ड बनाने के लिए आप इसका उपयोग क्यों नहीं करते ?
devnull

@ देवनबुल - निश्चित नहीं है कि आपके मन में क्या था लेकिन पासवर्ड बनाने के तरीके पर मेरे ए में 2 तरीके जोड़े।
slm

जवाबों:


59

चूंकि क्रैकलिब खुला स्रोत है, इसलिए उत्तर स्रोत कोड में पाया जा सकता है ।

"बहुत सरल / व्यवस्थित" का अर्थ है कि बहुत सारे वर्ण हैं जो उनके वर्णमाला पड़ोसियों में से एक द्वारा पूर्ववर्ती हैं। 4. "ab" या "ba" को बुरा माना जाता है, लेकिन "ac" या "ca" ठीक है क्योंकि b को छोड़ दिया गया है।

2010-03-02 के इस पैच से पहले , यह इस विशेषता को प्रदर्शित करने वाले अधिकांश चार वर्णों को अनुमति देता है । उदाहरण के लिए, "bar12345" विफल हो जाएगा, क्योंकि वर्ण "a", "2", "3", "4" और "5" वर्णों के पूर्ववर्ती वर्ण हैं।

एसएलएम ने अपने जवाब में पाया कि M1uG*xgRCthKWwjIjWc*010iSठीक था, जबकि M1uG*xgRCthKWwjIjWc*010iStऐसा नहीं है। आइए विश्लेषण करते हैं। यहाँ ऐसे पात्र हैं जो क्रैकलिब-चेक थिंकिंग एक व्यवस्थित पासवर्ड के संकेत हैं:

M1uG*xgRCthKWwjIjWc*010iS
               ^^    ^^

जो अधिकतम चार से नीचे है, लेकिन टी जोड़ना:

M1uG*xgRCthKWwjIjWc*010iSt
               ^^    ^^  ^

इसे सीमा से ऊपर धकेलता है, क्योंकि T S का अनुसरण करता है (यह प्रतीत होता है कि परीक्षण असंवेदनशील है)।

पैच अधिकतम सीमा बदलता है इसलिए यह इस तरह की झूठी सकारात्मकता से बचने के लिए, कुल पासवर्ड लंबाई पर निर्भर करता है।


1
010 को पहले से ही 3 के रूप में नहीं गिनना चाहिए? हालांकि महान जवाब।
जॉन वी।

1
सटीक स्रोत कोड प्रदान करने के लिए शानदार उत्तर और धन्यवाद। वैसे, क्या कोई कारण है कि इस फाइल को फासीवादी.सी कहा जाता है?
लौरेंट

@ this.lau_ - मेरा अनुमान है कि: en.wikipedia.org/wiki/Fascism
SLM

पात्रों के संबंध में "छोटे" और "बड़े" के बारे में बात करने के लिए कुछ अजीब है, नहीं? हालाँकि, मुझे पता है कि यह ASCII मूल्यों के बारे में है, यह बहुत स्पष्ट नहीं हो सकता है। - तो इसे और अधिक सरलीकृत तरीके से क्यों नहीं समझाएं? किसी भी चरित्र का उसके प्रत्यक्ष पड़ोसी और पूर्ववर्ती द्वारा पालन नहीं किया जाना चाहिए। इसलिए न तो "ab" और न ही "ba" की अनुमति है, लेकिन चूंकि b छोड़ा गया है, इसलिए "ac" या "ca"।
वाक्यविन्यास

क्या कोई कारण है कि यह एक छोटा या उच्चतर नहीं हो सकता है लेकिन यह समान ( Ww) हो सकता है ?
जीरो वेनवेल

31

फेडोरा 19 पर

जब मैं इसे चलाता हूं तो मुझे ओके मिलता है। मैं फेडोरा 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

नोट: मैं इसे डबल क्यूट्स के बजाय सिंगल कोट्स के साथ आज़माऊंगा, क्योंकि आप *उनके साथ अजीब तरीके से काम कर रहे हैं।

सेंटोस 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

यही तार फेडोरा 19 और CentOS 6 पर भी मुद्दों का कारण बनता है!

अद्यतन # 1

@ वैक्सविंग के बहुत ही अच्छे स्लीथिंग के आधार पर , अब हम जानते हैं कि इस्तेमाल किया जा रहा हेरफेर हो रहा था अगर 4 वर्ण एक दूसरे से सटे हुए थे। एक पैच पेश किया गया था जिसने इस अनुमान को बदल दिया ताकि इन झूठी सकारात्मकता को खत्म करने के लिए विचार के तहत पासवर्ड की समग्र लंबाई को ध्यान में रखा गया।

निष्कर्ष?

मेरे कुछ सीमित परीक्षण के आधार पर ऐसा प्रतीत होता है कि यहाँ खेलने के दौरान कुछ अजीब तरह के लक्षण मौजूद हैं। निश्चित रूप से ठीक होने वाले कुछ तार इसे तीन गुना कर रहे हैं।

यदि आप इसे संहिताबद्ध करने का प्रयास कर रहे हैं, तो मैं सुझाव दूंगा कि किसी पासवर्ड की पीढ़ी और मूल्यांकन को लपेटना और फिर एक बार एक ऐप जनरेट होने के बाद लूप से बाहर निकलना cracklib-check

या बहुत कम से कम मैं एक नए संस्करण में अपग्रेड करने का सुझाव दूंगा जिसमें उनके उत्तर में @maxwing उल्लेखों को शामिल करना शामिल है।

पासवर्ड जनरल विकल्प

pwgen

मैं यह भी जोड़ूंगा कि मैं आमतौर पर pwgenपासवर्ड बनाने के लिए उपयोग करता हूं । जो आपके लिए यहाँ भी सहायक हो सकता है।

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

तुम भी साथ एक छोटी सी पटकथा जादू का उपयोग कर सकते 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

मैं इसे क्रोसलिब-2.8.9-3.1.src.rpm के साथ CentOS 5.5 पर चला रहा था। किसी भी मामले में हालांकि इतनी लंबी यादृच्छिक स्ट्रिंग कितनी सरल हो सकती है?
बेवुल्फनोडे42

@ BeowulfNode42 - यह नहीं है। लगता है कि आपको बग मिल गया है, या कार्यान्वयन की बहुत कम सीमा पर।
slm

अजीब। फिर भी एक तार की तरह एक Tm7U:n=@*+4$*gf$6hOngEHJ;mnh$+R6ही मशीन पर पूरी तरह से ठीक है।
बेवुल्फ़नोडे42

1
डबल उद्धरण करना ग्लोब विस्तार को रोकने के। एकल उद्धरण अभी भी एक बेहतर विचार है, हालांकि, अगर स्ट्रिंग में डॉलर के संकेत, बैकटिक्स आदि शामिल हैं
डेनिस

2
"एक पैच पेश किया गया था ..." यह भी ध्यान दिया जाना चाहिए कि विचाराधीन पैच का कोई मतलब नहीं है हाल ही में एक (जिस तरह से यह लग सकता है), लेकिन पहले से ही 2010 में वापस भेजा गया था :)
वाक्यविन्यास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.