2009-07-21 10 views
7

यह सुनिश्चित नहीं है कि यह संभव है लेकिन मैं एक स्ट्रिंग के साथ शुरू करने में सक्षम होना चाहता हूं, और फिर यह पता लगाएं कि इस स्ट्रिंग को प्राप्त करने के लिए इनपुट crypt में क्या होना चाहिए।क्या सी में एक क्रिप्ट() को रिवर्स करने का कोई तरीका है?

या शायद यह असंभव है, वैसे भी इस बात का पूरा उद्देश्य क्या होगा?

हां, कोड में नमक है जहां मैं इसे आजमा रहा हूं।

+0

हाँ इसे पासवर्ड क्रैकिंग कहा जाता है http://en.wikipedia.org/wiki/Password_cracking – newacct

उत्तर

13

डिज़ाइन के इरादे से, crypt() एक तरफा हैश है। जैसा कि सभी ने कहा है, इसका मतलब है कि इरादा यह है कि यह एक सादे टेक्स्ट स्ट्रिंग को खोजने के लिए कम्प्यूटेशनल रूप से अक्षम हो जाएगा जो समान हैश उत्पन्न करता है।

कुछ कारकों का उस डिजाइन के इरादे पर असर पड़ता है।

  1. संगणना एक बहुत सस्ता की तुलना में यह था जब crypt() डिजाइन किया गया है। इससे भी बदतर, जिस दर पर गणना सस्ता हो गई थी, वह अनुमानित नहीं था, इसलिए अब यह कल्पना की जा सकती है कि यह अब तक बहुत सस्ता है।

  2. डीईएस के साथ-साथ ऐसा नहीं माना जाता था। हालांकि, उस समय सार्वजनिक ज्ञान के राज्य को शायद यह सबसे अच्छा विकल्प था।

  3. भले ही गणना अभी तक अपनी खुद की क्रैकिंग करने के लिए पर्याप्त सस्ते न हो, फिर भी क्लाउड जो इंटरनेट है, वह आपके लिए बहुत सारे काम कर चुका है। लोग कंप्यूटिंग और Rainbow Tables प्रकाशित कर रहे हैं जो किसी विशेष हैश को रिवर्स करने के लिए आवश्यक गणना की बहुत कम मात्रा को कम करना संभव बनाता है। (Jeff had a blog post on rainbow tables too।) नमक इंद्रधनुष तालिकाओं के खिलाफ सुरक्षा में मदद करता है (क्योंकि आपको नमक के प्रत्येक संभावित मूल्य के लिए एक टेबल सेट की आवश्यकता होगी), लेकिन crypt() के क्लासिक कार्यान्वयन में उपयोग किए जाने वाले नमक का आकार केवल 12 बिट्स है, जो कि नहीं है उम्मीद की जा सकती है कि एक ब्लॉक विशाल।

इससे भी बदतर अभी तक कुछ उच्च मूल्यवान हैश फंक्शन हैश का लगभग पूरा शब्दकोशों और उनके प्रतिलोम (LM hash वर्ष माइक्रोसॉफ्ट लैन प्रबंधक पासवर्ड के लिए आविष्कार किया लेकिन Vista से पहले Windows के सभी संस्करणों में कम पासवर्ड के लिए इस्तेमाल किया) की तरह मौजूद हैं के लिए, ।

-1

नहीं .. यह एक तरफा कार्य है।

1

सं

तहखाने() एक प्रतिवर्ती एल्गोरिथ्म (यह एक-तरफ़ा समारोह का उपयोग करता है), जो एन्क्रिप्टेड मूल्य के लिए नमक के अलावा द्वारा जानवर बल को और अधिक कठिन प्रदान की गई है नहीं है।

प्रति टिप्पणियां संपादित की गईं।

+3

नमक यह अपरिवर्तनीय नहीं बनाता है। "नमक" यह है कि इसकी सीमा के सबसेट के लिए उलटा खोजने के लिए एक विस्तृत टेबल लुकअप के साथ एक पृथक एल्गोरिदम का उपयोग करना कठिन हो जाता है। –

2

नहीं, यह एक तरह से हैश फ़ंक्शन के पीछे विचार है, लेकिन आप कुछ मामलों में आपकी सहायता के लिए google का उपयोग कर सकते हैं।

इस उत्तर की टिप्पणी का उत्तर देने के लिए (नमक होने पर Google मदद नहीं करेगा) मैं कहता हूं: हाँ और नहीं। नमक समाधान की जगह को बढ़ाता है, जिससे पूर्ण शब्दकोश का निर्माण कम आसान हो जाता है (क्योंकि प्रत्येक शब्द के लिए आपको प्रत्येक संभावित दो-अक्षर नमक के लिए एक क्रिप्ट संस्करण का गणना और स्टोर करना होता है)। यदि आप इंटरनेट को एक विशाल डेटाबेस मानते हैं, और इसकी अनुक्रमणिका को Google करते हैं, तो वेब पर आस-पास एन्क्रिप्टेड स्ट्रिंग की कहीं जगह होने पर खोज करने के लिए Google क्या करता है। नमक की उपस्थिति उस अवसर को कम कर देती है जिसे आप पाएंगे, लेकिन यदि आप भाग्यशाली हैं कि घटना मौजूद है, और यह समाशोधन के साथ भी है, तो आपके पास पासवर्ड है।

this article on slashdot भी देखें।

निष्कर्ष: नमक वेब पर चारों ओर उस विशिष्ट एन्क्रिप्टेड स्ट्रिंग को खोजने का मौका कम करेगा, लेकिन Google नमक की किसी भी मात्रा से उदासीन है, और यदि आप भाग्यशाली होते हैं तो भी किसी भी तरह से मदद कर सकते हैं (जैसा कि यह था मामले के लिए मैंने दिया)।

+1

नमक होने पर Google मदद नहीं करेगा। – Brian

0

नहीं यह इस साइट पर एक नज़र डालें संभव नहीं है (यह मानते हुए आप GNU सी पुस्तकालय का उपयोग कर रहे हैं) http://www.gnu.org/s/libc/manual/html_node/crypt.html

तरीका है कि तहखाने नमकीन है जाएगा काफी गारंटी नहीं है कि आप प्रतिसाद नहीं करने के लिए 'कोशिश कर रहे हैं क्या काम करने जा रहा हूँ।

+3

नमक के पास एल्गोरिदम के विपरीत होने या नहीं होने के साथ कुछ लेना देना नहीं है। इंद्रधनुष तालिका लुकअप हमलों के खिलाफ सुरक्षा के लिए नमक है। –

0

यह कार्य एक तरफा दुनिया में हर पासवर्ड योजना की रीढ़ की हड्डी है। अगर यहां किसी को जवाब देना था "हां, और यहां कैसे है ..", सरकार को तुरंत उनकी टिप्पणी हटाने के लिए मजबूर होना होगा, अपने घर को जलाएं, और उन्हें एक अज्ञात स्थान पर ले जाएं।

संक्षेप में, नहीं।

+1

नहीं, वे हर दिन लैपटॉप पर गोपनीय डेटा खो देते हैं। क्या आपको लगता है कि अगर आप पुरानी एक तरफ हैश को तोड़ते हैं तो वे वास्तव में परवाह करते हैं? ;) बेशक, यदि आप इसके बजाय नवीनतम ब्रिटनी स्पीयर्स डीआरएम को क्रैक करते हैं, तो छुट्टियों के लिए गुआंतानामो में अपना सामान तैयार करें :) –

+0

क्रिप्ट() एमडी 5 या डेस-आधारित एल्गोरिदम पर आधारित है (http://www.gnu.org पर प्रतिक्रिया /s/libc/manual/html_node/crypt.html)। एमडी 5 पर्याप्त प्रभावी नहीं होने के लिए जाना जाता है, और जैसा कि डेस के लिए, पुराने डेस एल्गोरिदम भी अप्रभावी हैं, ऐसे कई नए संस्करण हैं, मुझे विश्वास नहीं है कि कोई भी सरकार इस कार्यान्वयन को हिंगिंग के लिए अपनी रीढ़ की हड्डी के रूप में उपयोग करेगी (विशेष रूप से, डीईएस के लिए जिम्मेदार एनएसए ने प्रतिस्थापन के रूप में एसएचए-आधारित एल्गोरिदम बनाया है)। –

+2

दोनों के लिए: एमडी 5 को "पुराना" माना जाता है क्योंकि यह ब्यूट-फोर्स हमलों से बचने के लिए पर्याप्त बिट्स का उपयोग नहीं करता है, क्योंकि एल्गोरिदम में समस्याएं नहीं हैं। यदि आप एल्गोरिदम को रिवर्स करने के तरीके को समझ सकते हैं, तो आप * किसी भी * क्रिप्ट को क्रैक करने में सक्षम होंगे (बिट आकार का कोई फर्क नहीं पड़ता) जो समान गणितीय विधि का उपयोग करता है। दुनिया भर में पासवर्ड और एन्क्रिप्टेड संचार आपके लिए खुले हो सकते हैं। –

4

यदि यह crypt(3) का पुराना कार्यान्वयन है, तो डीईएस का उपयोग करके, आप लगभग (लेकिन काफी नहीं) ब्रूट-फोर्स कर सकते हैं।

उस योजना में, इनपुट 8 अक्षरों तक छोटा हो गया है, और प्रत्येक वर्ण 7 बिट्स तक है, जिसका अर्थ है कि खोजने के लिए अलग-अलग पासवर्ड की 56 बिट स्पेस है।

अकेले डीईएस के लिए, आप $ 10K के एफपीजीए (http://en.wikipedia.org/wiki/Data_Encryption_Standard#Brute_force_attack) के लायक पर 18 दिनों में पूरी जगह खोज सकते हैं, इसलिए अपेक्षित समय 9 दिन है। लेकिन मुझे लगता है कि समस्या पर खर्च करने के लिए आपके पास $ 10K नहीं है। इसे कुछ और साल दें, और कौन जानता है कि पीसी के जीपीयू पर डीईएस क्रैकर्स व्यावहारिक समय में चलेंगे या नहीं।

फिर भी, crypt(3) पारंपरिक रूप से नमक के आधार पर एल्गोरिदम में मामूली संशोधन के साथ, डीईएस के 25 राउंड शामिल होते हैं, इसलिए आप उम्मीद करते हैं कि यह कम से कम 25 गुना धीमी शक्ति के लिए धीमा हो।

crypt(3) के नए कार्यान्वयन ब्रूट फोर्स से परे हैं, क्योंकि वे डीईएस-आधारित एक पुराने crypt(3) के मुकाबले बेहतर हैश एल्गोरिदम पर आधारित हैं।

बेशक यदि स्ट्रिंग यादृच्छिक नहीं है (उदाहरण के लिए यदि यह कुछ मानव द्वारा चुने गए पासवर्ड हैं), तो आप ब्रूट फोर्स की तुलना में काफी बेहतर समय प्राप्त कर सकते हैं।

+0

बीटीडब्ल्यू, बस एक खिलौना परीक्षण चलाया, और मेरे "सरलतम संभव" क्रिप्ट क्रैकर को मेरे लैपटॉप के एक कोर का उपयोग करके मुख्य स्थान को कवर करने में लगभग 300,000 साल लगेंगे। जीसीसी के साथ '-क्रिप्ट' मुझे क्रिप्ट का 8char x 7 बिट संस्करण दे रहा है। तो यह मेरे द्वारा क्रैक करने योग्य नहीं है, लेकिन यह भी सुरक्षित नहीं है कि यह किसी के द्वारा क्रैक करने योग्य नहीं है। –

संबंधित मुद्दे

 संबंधित मुद्दे