इंद्रधनुष तालिका: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
सामान्यतः पासवर्ड हैश को क्रैक करने के लिए [[क्रिप्टोग्राफ़िक हैश फ़ंक्शन]] के आउटपुट को कैशिंग करने के लिए एक '''इंद्रधनुष तालिका''' एक पूर्व-गणना तालिका होती है। पासवर्ड सामान्यतः सादे पाठ के रूप में नहीं, जबकि हैश मान के रूप में संग्रहीत होते है। यदि हैश किए गए पासवर्ड का ऐसा डेटाबेस किसी हमलावर के हाथों में पड़ जाता है, तो वे प्लेनटेक्स्ट पासवर्ड को पुनर्प्राप्त करने के लिए प्रीकंप्यूटेड इंद्रधनुष तालिका का उपयोग कर सकते है। इस हमले के विरुद्ध एक सामान्य बचाव एक कुंजी व्युत्पत्ति फ़ंक्शन का उपयोग करके हैश की गणना करना है जो प्रत्येक पासवर्ड को हैश करने से पहले [[नमक (क्रिप्टोग्राफी)]] जोड़ता है, जिसमें अलग-अलग पासवर्ड अलग-अलग लवण प्राप्त करते है, जो हैश के साथ सादे पाठ में संग्रहीत होते है।
सामान्यतः पासवर्ड हैश को क्रैक करने के लिए [[क्रिप्टोग्राफ़िक हैश फ़ंक्शन]] के आउटपुट को कैशिंग करने के लिए एक '''इंद्रधनुष तालिका''' एक पूर्व-गणना तालिका होती है। पासवर्ड सामान्यतः सादे पाठ के रूप में नही होते है, जबकि हैश मान के रूप में संग्रहीत होते है। यदि हैश किए गए पासवर्ड का ऐसा डेटाबेस किसी हमलावर के हाथों में पड़ जाता है, तो वे प्लेनटेक्स्ट पासवर्ड को पुनर्प्राप्त करने के लिए प्रीकंप्यूटेड इंद्रधनुष तालिका का उपयोग कर सकते है। इस हमले के विरुद्ध एक सामान्य बचाव एक कुंजी व्युत्पत्ति फ़ंक्शन का उपयोग करके हैश की गणना होती है जो प्रत्येक पासवर्ड को हैश करने से पहले [[नमक (क्रिप्टोग्राफी)|साल्ट (क्रिप्टोग्राफी)]] जोड़ता है, जिसमें अलग-अलग पासवर्ड अलग-अलग लवण प्राप्त होते है, जो हैश के साथ सादे पाठ में संग्रहीत होते है।


इंद्रधनुष तालिका स्पेस-टाइम ट्रेडऑफ़ का एक व्यावहारिक उदाहरण है: वे कम कंप्यूटर प्रोसेसिंग समय और [[ पशुबल का आक्रमण |ब्रूट-फोर्स]] आक्रमण की तुलना में अधिक स्टोरेज का उपयोग करते है जो हर प्रयास पर एक हैश की गणना करता है, लेकिन एक साधारण तालिका की तुलना में अधिक प्रोसेसिंग टाइम और कम स्टोरेज जो स्टोर करता है। हर संभव पासवर्ड का हैश होता है।
इंद्रधनुष तालिका स्थान-समय ट्रेडऑफ़ का एक व्यावहारिक उदाहरण होता है: वे कम कंप्यूटर प्रोसेसिंग समय और [[ पशुबल का आक्रमण |ब्रूट-फोर्स]] आक्रमण की तुलना में अधिक स्टोरेज का उपयोग करते है जो हर प्रयास पर एक हैश की गणना करता है, लेकिन एक साधारण तालिका की तुलना में अधिक प्रोसेसिंग समय और कम स्टोरेज को स्टोर करता है। हर संभव पासवर्ड का हैश होता है।


फिलिप ओचस्लिन<ref name="ophpaper">{{Cite book|chapter-url=https://lasec.epfl.ch/pub/lasec/doc/Oech03.pdf|title=Advances in Cryptology - CRYPTO 2003|last1=Oechslin|first1=P.|year=2003|isbn=978-3-540-40674-7|series=[[Lecture Notes in Computer Science|LNCS]]|volume=2729|pages=617–630|chapter=Making a Faster Cryptanalytic Time-Memory Trade-Off|doi=10.1007/978-3-540-45146-4_36|doi-access=free}}</ref> द्वारा इंद्रधनुष तालिका का आविष्कार [[मार्टिन हेलमैन]] द्वारा पहले के एक सरल एल्गोरिथम के एक अनुप्रयोग के रूप में किया गया था।<ref name="Hellman1980">{{cite journal|last1=Hellman|first1=M.|
फिलिप ओचस्लिन<ref name="ophpaper">{{Cite book|chapter-url=https://lasec.epfl.ch/pub/lasec/doc/Oech03.pdf|title=Advances in Cryptology - CRYPTO 2003|last1=Oechslin|first1=P.|year=2003|isbn=978-3-540-40674-7|series=[[Lecture Notes in Computer Science|LNCS]]|volume=2729|pages=617–630|chapter=Making a Faster Cryptanalytic Time-Memory Trade-Off|doi=10.1007/978-3-540-45146-4_36|doi-access=free}}</ref> द्वारा इंद्रधनुष तालिका का आविष्कार [[मार्टिन हेलमैन]] द्वारा पहले के एक सरल एल्गोरिथम के एक अनुप्रयोग के रूप में किया गया था।<ref name="Hellman1980">{{cite journal|last1=Hellman|first1=M.|
Line 8: Line 8:
उपयोगकर्ता [[प्रमाणीकरण]] के लिए, पासवर्ड या तो [[सादे पाठ]] या [[क्रिप्टोग्राफिक हैश]] के रूप में संग्रहीत किए जाते है। चूंकि डेटाबेस एक्सेस से समझौता होने पर प्लेनटेक्स्ट के रूप में संग्रहीत पासवर्ड आसानी से चोरी हो जाते है, डेटाबेस सामान्यतः इसके अतिरिक्त हैश स्टोर करते है। इस प्रकार, कोई भी - प्रमाणीकरण प्रणाली सहित - केवल डेटाबेस में संग्रहीत मूल्य को देखकर पासवर्ड सीख सकता है।
उपयोगकर्ता [[प्रमाणीकरण]] के लिए, पासवर्ड या तो [[सादे पाठ]] या [[क्रिप्टोग्राफिक हैश]] के रूप में संग्रहीत किए जाते है। चूंकि डेटाबेस एक्सेस से समझौता होने पर प्लेनटेक्स्ट के रूप में संग्रहीत पासवर्ड आसानी से चोरी हो जाते है, डेटाबेस सामान्यतः इसके अतिरिक्त हैश स्टोर करते है। इस प्रकार, कोई भी - प्रमाणीकरण प्रणाली सहित - केवल डेटाबेस में संग्रहीत मूल्य को देखकर पासवर्ड सीख सकता है।


जब कोई उपयोगकर्ता प्रमाणीकरण के लिए एक पासवर्ड अंकित करता है, तो उसके लिए एक हैश की गणना की जाती है और फिर उस उपयोगकर्ता के लिए संग्रहीत हैश की तुलना की जाती है। यदि दो हैश मेल नहीं खाते है तो प्रमाणीकरण विफल हो जाता है, इसके अतिरिक्त, प्रमाणीकरण समान रूप से विफल हो जाएगा यदि एक हैश मान को पासवर्ड के रूप में अंकित किया गया था, क्योंकि प्रमाणीकरण प्रणाली इसे दूसरी बार हैश करेगी।
जब कोई उपयोगकर्ता प्रमाणीकरण के लिए एक पासवर्ड अंकित करता है, तो उसके लिए एक हैश की गणना की जाती है और फिर उस उपयोगकर्ता के लिए संग्रहीत हैश की तुलना की जाती है। यदि दो हैश मेल नहीं खाते है तो प्रमाणीकरण विफल हो जाता है, इसके अतिरिक्त, प्रमाणीकरण समान रूप से विफल हो जाता है यदि एक हैश मान को पासवर्ड के रूप में अंकित किया जाता है, जो प्रमाणीकरण प्रणाली इसे दूसरी बार हैश करता है।


हैश से पासवर्ड सीखना एक स्ट्रिंग को खोजना है, जो हैश फ़ंक्शन में इनपुट करते समय, वही हैश बनाता है। यह हैश फ़ंक्शन के व्युत्क्रम फ़ंक्शन के समान है।
हैश से पासवर्ड सीखना एक स्ट्रिंग को खोजना होता है, जो हैश फ़ंक्शन में इनपुट करते समय, वही हैश बनाता है। यह हैश फ़ंक्शन के व्युत्क्रम फ़ंक्शन के समान होता है।


चूंकि [[क्रूर बल के हमले|ब्रूट-फोर्स हमले]] (जैसे [[शब्दकोश हमले]]) का उपयोग हैश फंक्शन को पलटने की कोशिश के लिए किया जा सकता है, जब संभव पासवर्ड का सेट अधिक बड़ा हो तो वे अव्यवहार्य हो सकते है। ब्रूट-फोर्स का एक विकल्प प्रीकंप्यूटेड हैश श्रंखला तालिका का उपयोग करना है। इंद्रधनुष तालिका एक विशेष प्रकार की ऐसी तालिका है जो कुछ तकनीकी कठिनाइयों को दूर करती है।
चूंकि [[क्रूर बल के हमले|ब्रूट-फोर्स हमले]] (जैसे [[शब्दकोश हमले]]) का उपयोग हैश फंक्शन को पलटने की कोशिश के लिए किया जा सकता है, जब संभव पासवर्ड का सेट अधिक बड़ा होता है तो वे अव्यवहार्य हो सकते है। ब्रूट-फोर्स का एक विकल्प प्रीकंप्यूटेड हैश श्रंखला तालिका का उपयोग करता है। इंद्रधनुष तालिका एक विशेष प्रकार की ऐसी तालिका होती है जो कुछ तकनीकी कठिनाइयों को दूर करती है।


== व्युत्पत्ति ==
== व्युत्पत्ति ==
या[[File:Dr. Oechslin Rainbow Table Crypto 2003 Illustration.png|इंद्रधनुष तालिका चित्रण क्रिप्टो 2003 में प्रस्तुत किया गया|550x550px]]
या[[File:Dr. Oechslin Rainbow Table Crypto 2003 Illustration.png|इंद्रधनुष तालिका चित्रण क्रिप्टो 2003 में प्रस्तुत किया गया|550x550px]]


इंद्रधनुष तालिका शब्द का उपयोग सबसे पहले ओचस्लिन के प्रारंभिक पेपर में किया गया था। यह शब्द उस तरीके को संदर्भित करता है जिस तरह से हमले की सफलता दर को बढ़ाने के लिए विभिन्न कमी कार्यों का उपयोग किया जाता है। हेलमैन की मूल विधि में कई छोटी तालिकाओं का उपयोग किया जाता है जिनमें से प्रत्येक में एक अलग कमी कार्य होता है। इंद्रधनुष तालिका बहुत बड़े होते है और प्रत्येक कॉलम में एक अलग रिडक्शन फंक्शन का उपयोग करते है। जब रंग कम करने के कार्यों का प्रतिनिधित्व करने के लिए उपयोग किए जाते है, तो इंद्रधनुष तालिका में एक इंद्रधनुष दिखाई देता है। ओचस्लिन के पेपर के चित्र 2 में एक श्वेत-श्याम ग्राफिक है जो दिखाता है कि ये खंड कैसे संबंधित है। क्रिप्टो 2003 सम्मेलन में अपनी प्रस्तुति के लिए, इंद्रधनुष संघ को और अधिक स्पष्ट करने के लिए ओचस्लिन ने ग्राफिक में रंग जोड़ा। कॉन्फ़्रेंस में प्रस्तुत किया गया उन्नत ग्राफ़िक दाईं ओर दिखाया गया है।
इंद्रधनुष तालिका शब्द का उपयोग सबसे पहले ओचस्लिन के प्रारंभिक पेपर में किया गया था। यह शब्द उस विधि को संदर्भित करता है जिसको हमले की सफलता दर को बढ़ाने के लिए विभिन्न कमी कार्यों का उपयोग किया जाता है। हेलमैन की मूल विधि में कई छोटी तालिकाओं का उपयोग किया जाता है जिनमें से प्रत्येक में एक अलग कमी कार्य होता है। इंद्रधनुष तालिका बहुत बड़े होते है और प्रत्येक कॉलम में एक अलग रिडक्शन फंक्शन का उपयोग करते है। जब रंग कम करने के कार्यों का प्रतिनिधित्व करने के लिए उपयोग किए जाते है, तो इंद्रधनुष तालिका में एक इंद्रधनुष दिखाई देता है। ओचस्लिन के पेपर के चित्र 2 में एक श्वेत-श्याम ग्राफिक है जो दिखाता है कि ये खंड कैसे संबंधित है। क्रिप्टो 2003 सम्मेलन में अपनी प्रस्तुति के लिए, इंद्रधनुष संघ को और अधिक स्पष्ट करने के लिए ओचस्लिन ने ग्राफिक में रंग जोड़ा गया था।


== प्रीकंप्यूटेड हैश श्रंखला ==
== प्रीकंप्यूटेड हैश श्रंखला ==
{{For|यहाँ वर्णित के अलावा हैश श्रृंखलाएँ|हैश श्रंखला}}
{{For|यहाँ वर्णित के अलावा हैश श्रृंखलाएँ|हैश श्रंखला}}


एक पासवर्ड हैश फ़ंक्शन एच और पासवर्ड पी का एक परिमित सेट दिया गया है, लक्ष्य एक डेटा संरचना की पूर्व गणना करना है, जो हैश फ़ंक्शन के किसी भी आउटपुट एच को दिया गया है, या तो पी में एक तत्व पी का पता लगा सकता है जैसे कि एच (पी) = एच, या निर्धारित करें कि पी में ऐसा कोई पी नहीं है। ऐसा करने की सबसे आसान विधि पी में सभी पी के लिए एच (पी) की गणना करना है, लेकिन फिर तालिका को संग्रहीत करने के लिए Θ(|पी|एन) के बिट्स की आवश्यकता होती है, जहां |पी| सेट पी का आकार है और एन एच के आउटपुट का आकार है, जो बड़े | पी | के लिए निषेधात्मक है। हैश श्रंखला इस स्थान की आवश्यकता को कम करने की एक तकनीक है। विचार एक रिडक्शन फंक्शन आर को परिभाषित करना है जो हैश वैल्यू को वापस पी में वैल्यू में मैप करता है। हैश फंकशन। हैश फ़ंक्शन को रिडक्शन फ़ंक्शन के साथ वैकल्पिक करके, वैकल्पिक पासवर्ड और हैश मान की श्रृंखला बनाई जाती है। उदाहरण के लिए, यदि पी लोअरकेस वर्णानुक्रमिक 6-वर्ण पासवर्ड का सेट था, और हैश मान 32 बिट लंबा था, तो एक श्रृंखला इस तरह दिख सकती है:
एक पासवर्ड हैश फ़ंक्शन एच और पासवर्ड पी का एक परिमित सेट होता है, लक्ष्य एक डेटा संरचना की पूर्व गणना करता है, जो हैश फ़ंक्शन के किसी भी आउटपुट एच को दिया होता है, या तो पी में एक तत्व पी का पता लगा सकता है जैसे कि एच (पी) = एच, या निर्धारित करता है कि पी में ऐसा कोई पी नही होता है। ऐसा करने की सबसे आसान विधि पी में सभी पी के लिए एच (पी) की गणना करना होता है, लेकिन फिर तालिका को संग्रहीत करने के लिए Θ(|पी|एन) के बिट्स की आवश्यकता होती है, जहां |पी| सेट पी का आकार होता है और एन एच के आउटपुट का आकार होता है, जो बड़े | पी | के लिए निषेधात्मक होता है। हैश श्रंखला इस स्थान की आवश्यकता को कम करने की एक तकनीक होती है। विचार एक रिडक्शन फंक्शन आर को परिभाषित करता है जो हैश वैल्यू को वापस पी में वैल्यू में मैप करता है। हैश फ़ंक्शन को रिडक्शन फ़ंक्शन के साथ वैकल्पिक करके, वैकल्पिक पासवर्ड और हैश मान की श्रृंखला बनाई जाती है। उदाहरण के लिए, यदि पी लोअरकेस वर्णानुक्रमिक 6-वर्ण पासवर्ड का सेट है, और हैश मान 32 बिट लंबा है, तो एक श्रृंखला इस तरह दिख सकती है:
:<math>{\color{Red}\mathtt{aaaaaa}}\,\xrightarrow[\;H\;]{}\,\mathtt{281DAF40}\,\xrightarrow[\;R\;]{}\,\mathtt{sgfnyd}\,\xrightarrow[\;H\;]{}\,\mathtt{920ECF10}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
:<math>{\color{Red}\mathtt{aaaaaa}}\,\xrightarrow[\;H\;]{}\,\mathtt{281DAF40}\,\xrightarrow[\;R\;]{}\,\mathtt{sgfnyd}\,\xrightarrow[\;H\;]{}\,\mathtt{920ECF10}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
कटौती फ़ंक्शन के लिए एकमात्र आवश्यकता एक विशिष्ट आकार में एक सादा पाठ मान वापस करने में सक्षम होना है।
कटौती फ़ंक्शन के लिए एकमात्र आवश्यकता एक विशिष्ट आकार में एक सादा पाठ मान वापस करने में सक्षम होता है।


तालिका उत्पन्न करने के लिए, हम P से प्रारंभिक पासवर्ड का एक यादृच्छिक सेट चुनते है, प्रत्येक के लिए कुछ निश्चित लंबाई k की श्रृंखलाओं की गणना करते है, और प्रत्येक श्रृंखला में केवल पहला और अंतिम पासवर्ड संग्रहीत करते है। पहले पासवर्ड को प्रारंभिक बिंदु कहा जाता है और अंतिम को समापन बिंदु कहा जाता है। उपरोक्त उदाहरण श्रृंखला में, aaaaaa प्रारंभिक बिंदु होगा और kiebgt समापन बिंदु होगा, और अन्य कोई भी पासवर्ड (या हैश मान) संग्रहीत नहीं किया जाएगा।
तालिका उत्पन्न करने के लिए, हम पी से प्रारंभिक पासवर्ड का एक यादृच्छिक सेट चुनते है, प्रत्येक के लिए कुछ निश्चित लंबाई के की श्रृंखलाओं की गणना करते है, और प्रत्येक श्रृंखला में केवल पहला और अंतिम पासवर्ड संग्रहीत करते है। पहले पासवर्ड को प्रारंभिक बिंदु कहा जाता है और अंतिम को समापन बिंदु कहा जाता है। उपरोक्त उदाहरण श्रृंखला में, aaaaaa प्रारंभिक बिंदु होता है और kiebgt समापन बिंदु होता है, और अन्य कोई भी पासवर्ड संग्रहीत नहीं किया जाता है।


अब, उलटा करने के लिए एक हैश मान एच दिया गया है (इसके लिए संबंधित पासवर्ड खोजें), आर, फिर एच, फिर आर, और इसी तरह से एच से प्रारंभ होने वाली श्रृंखला की गणना करें। यदि किसी भी बिंदु पर मान तालिका में समापन बिंदुओं में से एक से मेल खाता है, तो संबंधित प्रारंभिक बिंदु पूरी श्रृंखला को फिर से बनाने की अनुमति देता है। इस बात की बहुत अधिक संभावना है कि इस श्रृंखला में मान h होगा, और यदि ऐसा है, तो श्रृंखला में तुरंत पूर्ववर्ती मान वह पासवर्ड p है जिसे हम चाहते है।
अब, उलटा करने के लिए एक हैश मान एच दिया गया होता है, आर, फिर एच, फिर आर, और इसी तरह से एच से प्रारंभ होने वाली श्रृंखला की गणना करता है। यदि किसी भी बिंदु पर मान तालिका में समापन बिंदुओं में से एक से मेल खाता है, तो संबंधित प्रारंभिक बिंदु पूरी श्रृंखला को फिर से बनाने की अनुमति देता है। इस बात की बहुत अधिक संभावना होती है कि इस श्रृंखला में मान h होता है, और यदि ऐसा होता है, तो श्रृंखला में तुरंत पूर्ववर्ती मान वह पासवर्ड पी होता है जिसे हम चाहते है।


उदाहरण के लिए, हैश दिया {{mono|920ECF10}}, इसकी श्रृंखला की गणना पहले R लगाकर की जा सकती है:
उदाहरण के लिए, हैश दिया {{mono|920ECF10}}, इसकी श्रृंखला की गणना पहले आर लगाकर की जा सकती है:


:<math>\mathtt{920ECF10}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
:<math>\mathtt{920ECF10}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
चूँकि "kiebgt" हमारी तालिका में समापन बिंदुओं में से एक है, संबंधित प्रारंभिक पासवर्ड "aaaaaa" {{mono|920ECF10}} तक पहुँचने तक इसकी श्रृंखला का अनुसरण करने की अनुमति देता है:
चूँकि "kiebgt" हमारी तालिका में समापन बिंदुओं में से एक होता है, संबंधित प्रारंभिक पासवर्ड "aaaaaa" {{mono|920ECF10}} तक पहुँचने तक इसकी श्रृंखला का अनुसरण करने की अनुमति देता है:


:<math>{\color{Red}\mathtt{aaaaaa}}\,\xrightarrow[\;H\;]{}\,\mathtt{281DAF40}\,\xrightarrow[\;R\;]{}\,\mathtt{sgfnyd}\,\xrightarrow[\;H\;]{}\,\mathtt{920ECF10}</math>
:<math>{\color{Red}\mathtt{aaaaaa}}\,\xrightarrow[\;H\;]{}\,\mathtt{281DAF40}\,\xrightarrow[\;R\;]{}\,\mathtt{sgfnyd}\,\xrightarrow[\;H\;]{}\,\mathtt{920ECF10}</math>
इस प्रकार, पासवर्ड {{mono|sgfnyd}} है (या एक अलग पासवर्ड जिसमें समान हैश मान है)।
इस प्रकार, पासवर्ड {{mono|sgfnyd}} होता है (या एक अलग पासवर्ड जिसमें समान हैश मान होता है)।


ध्यान दें कि इस श्रृंखला में हमेशा हैश मान h नहीं होता है, ऐसा हो सकता है कि एच से प्रारंभ होने वाली श्रृंखला एक अलग प्रारंभिक बिंदु वाली श्रृंखला के साथ विलीन हो जाती है। उदाहरण के लिए, हैश वैल्यू {{mono|FB107E70}} की श्रृंखला भी {{mono|kiebgt}} की ओर ले जाती है:
ध्यान दें कि इस श्रृंखला में हमेशा हैश मान एच नही होता है, ऐसा हो सकता है कि एच से प्रारंभ होने वाली श्रृंखला एक अलग प्रारंभिक बिंदु वाली श्रृंखला के साथ विलीन हो जाती है। उदाहरण के लिए, हैश वैल्यू {{mono|FB107E70}} की श्रृंखला भी {{mono|kiebgt}} की ओर ले जाती है:


:<math>\mathtt{FB107E70}\,\xrightarrow[\;R\;]{}\,\mathtt{bvtdll}\,\xrightarrow[\;H\;]{}\,\mathtt{0EE80890}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
:<math>\mathtt{FB107E70}\,\xrightarrow[\;R\;]{}\,\mathtt{bvtdll}\,\xrightarrow[\;H\;]{}\,\mathtt{0EE80890}\,\xrightarrow[\;R\;]{}\,{\color{Violet}\mathtt{kiebgt}}</math>
संबंधित प्रारंभिक पासवर्ड द्वारा उत्पन्न श्रृंखला {{mono|aaaaaa}} तब तक पीछा किया जाता है {{mono|FB107E70}} पहुंच गया। बिना पहुंचे ही तलाश खत्म हो जाएगी {{mono|FB107E70}} क्योंकि यह मान शृंखला में समाहित नहीं है। इसे झूठा अलार्म कहा जाता है। इस स्थितियों में, मैच को नजरअंदाज कर दिया जाता है और एच की श्रृंखला को दूसरे मैच की तलाश में बढ़ाया जाता है। यदि h की श्रृंखला बिना किसी अच्छे मिलान के लंबाई k तक विस्तारित हो जाती है, तो किसी भी श्रृंखला में पासवर्ड कभी भी निर्मित नहीं किया गया था।
संबंधित प्रारंभिक पासवर्ड द्वारा उत्पन्न श्रृंखला {{mono|aaaaaa}} तब तक पीछा करता है जब तक {{mono|FB107E70}} पहुंच नही जाता है। बिना पहुंचे ही तलाश खत्म हो जाती है {{mono|FB107E70}} जब यह मान शृंखला में समाहित नही होता है। इसे झूठा अलार्म कहा जाता है। इस स्थितियों में, इसेको नजरअंदाज कर दिया जाता है और एच की श्रृंखला को दूसरे मैच की तलाश में बढ़ाया जाता है। यदि एच की श्रृंखला बिना किसी अच्छे मिलान के लंबाई के तक विस्तारित हो जाता है, तो किसी भी श्रृंखला में पासवर्ड कभी भी निर्मित नहीं किया जाता है।


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


साधारण हैश श्रंखला में कई खामियां है। सबसे गंभीर यदि किसी भी बिंदु पर दो श्रृंखलाएं टकराती है (समान मूल्य उत्पन्न करती है), तो वे विलीन हो जाएंगी और परिणामस्वरूप उत्पन्न करने के लिए समान कम्प्यूटेशनल लागत का भुगतान करने के बावजूद तालिका में कई पासवर्ड सम्मलित नहीं होंगे। चूंकि पिछली श्रृंखलाएं पूरी तरह से संग्रहीत नहीं होती है, इसलिए कुशलतापूर्वक पता लगाना असंभव है। उदाहरण के लिए, यदि श्रृंखला 3 में तीसरा मान श्रृंखला 7 में दूसरे मान से मेल खाता है, तो दो श्रृंखलाएं मूल्यों के लगभग समान अनुक्रम को कवर करेंगी, लेकिन उनके अंतिम मान समान नहीं होंगे। हैश फ़ंक्शन एच टकराव उत्पन्न करने की संभावना नहीं है क्योंकि इसे सामान्यतः ऐसा नहीं करने के लिए एक महत्वपूर्ण सुरक्षा विशेषता माना जाता है, लेकिन कमी समारोह आर, संभावित सादे टेक्स्ट को सही ढंग से कवर करने की आवश्यकता के कारण, टकराव प्रतिरोध नहीं हो सकता है।
साधारण हैश श्रंखला में कई खामियां होती है। सबसे गंभीर यदि किसी भी बिंदु पर दो श्रृंखलाएं टकराती है (समान मूल्य उत्पन्न करती है), तो वे विलीन हो जाती है और परिणामस्वरूप उत्पन्न करने के लिए समान कम्प्यूटेशनल लागत का भुगतान करने के अतिरिक्त तालिका में कई पासवर्ड सम्मलित नहीं होते है। चूंकि पिछली श्रृंखलाएं पूरी तरह से संग्रहीत नहीं होती है, इसलिए कुशलतापूर्वक पता लगाना असंभव होता है। उदाहरण के लिए, यदि श्रृंखला 3 में तीसरा मान श्रृंखला 7 में दूसरे मान से मेल खाता है, तो दो श्रृंखलाएं मूल्यों के लगभग समान अनुक्रम को कवर करता है, लेकिन उनके अंतिम मान समान नहीं होते है। हैश फ़ंक्शन एच टकराव उत्पन्न करने की संभावना नहीं होती है क्योंकि इसे सामान्यतः ऐसा नहीं करने के लिए एक महत्वपूर्ण सुरक्षा विशेषता माना जाता है, लेकिन आर, संभावित सादे टेक्स्ट को सही ढंग से कवर करने की आवश्यकता के कारण, टकराव प्रतिरोध नहीं हो सकता है।


अन्य कठिनाइयाँ R के लिए सही कार्य को चुनने के महत्व से उत्पन्न होती है। R को पहचान के रूप में चुनना क्रूर बल दृष्टिकोण से थोड़ा बेहतर है। केवल तभी जब हमलावर को इस बात का अच्छा अंदाजा हो कि संभावित प्लेनटेक्स्ट क्या होंगे, वे एक फंक्शन आर चुन सकते है जो यह सुनिश्चित करता है कि समय और स्थान केवल संभावित प्लेनटेक्स्ट के लिए उपयोग किए जाते है, न कि संभावित पासवर्ड के पूरे स्थान के लिए। वास्तव में आर पूर्व हैश गणनाओं के परिणामों को वापस संभावित प्लेनटेक्स्ट में ले जाता है, लेकिन यह लाभ इस खामी के साथ आता है कि आर संभावित रूप से उस वर्ग में हर संभव प्लेनटेक्स्ट का उत्पादन नहीं करेगा, हमलावर हमलावर को निश्चितता से इनकार करने की जांच करना चाहता है कि उनके पास से कोई पासवर्ड नहीं आया है। चयनित वर्ग। प्लेनटेक्स्ट के अपेक्षित वितरण से मेल खाने के लिए फ़ंक्शन R को डिज़ाइन करना भी कठिनाई हो सकता है।<ref name="Hellman1980" />
अन्य कठिनाइयाँ आर के लिए सही कार्य को चुनने के महत्व से उत्पन्न होती है। आर को पहचान के रूप में चुनना क्रूर बल दृष्टिकोण से थोड़ा बेहतर होता है। केवल तभी जब हमलावर को इस बात का अच्छा अंदाजा हो कि संभावित प्लेनटेक्स्ट क्या होता है, वे एक फंक्शन आर चुन सकते है जो यह सुनिश्चित करता है कि समय और स्थान केवल संभावित प्लेनटेक्स्ट के लिए उपयोग किए जाते है, न कि संभावित पासवर्ड के पूरे स्थान के लिए उपयोग किए जाते है। वास्तव में आर पूर्व हैश गणनाओं के परिणामों को वापस संभावित प्लेनटेक्स्ट में ले जाता है, लेकिन यह लाभ इस खामी के साथ आता है कि आर संभावित रूप से उस वर्ग में हर संभव प्लेनटेक्स्ट का उत्पादन नहीं करता है, हमलावर को निश्चितता से इनकार करने की जांच करता है कि उनके पास से कोई पासवर्ड नहीं आता है। चयनित वर्ग प्लेनटेक्स्ट के अपेक्षित वितरण से मेल खाने के लिए फ़ंक्शन आर को डिज़ाइन करना भी कठिन हो सकता है।<ref name="Hellman1980" />
== इंद्रधनुष तालिका ==
== इंद्रधनुष तालिका ==
इंद्रधनुष तालिका साधारण हैश श्रंखला के साथ टकराव की समस्या को प्रभावी ढंग से हल करते है, एकल कमी फ़ंक्शन R को संबंधित कमी कार्यों R<sub>1</sub> से R<sub>''k''</sub> के अनुक्रम के साथ बदलकर। इस तरह, दो श्रृंखलाओं के टकराने और विलय होने के लिए उन्हें एक ही पुनरावृत्ति पर समान मूल्य पर हिट करना होगा: परिणामस्वरूप, इन श्रृंखलाओं में अंतिम मान समान होंगे। एक अंतिम पोस्टप्रोसेसिंग पास तालिका में जंजीरों को क्रमबद्ध कर सकता है और किसी भी दोहरे श्रृंखला को हटा सकता है जिसमें अन्य श्रृंखलाओं के समान अंतिम मान होते है। तालिका भरने के लिए नई श्रृंखलाएं उत्पन्न की जाती है। ये श्रृंखलाएं टक्कर-मुक्त नहीं है (वे कुछ समय के लिए ओवरलैप हो सकती है) लेकिन वे विलय नहीं करेंगी, जिससे टक्करों की कुल संख्या में भारी कमी आती है।
इंद्रधनुष तालिका साधारण हैश श्रंखला के साथ टकराव की समस्या को प्रभावी ढंग से हल करते है, एकल कमी फ़ंक्शन R को संबंधित कमी कार्यों R<sub>1</sub> से R<sub>''k''</sub> के अनुक्रम के साथ बदलता है। इस तरह, दो श्रृंखलाओं के टकराने और विलय होने के लिए उन्हें एक ही पुनरावृत्ति पर समान मूल्य पर हिट करता है: परिणामस्वरूप, इन श्रृंखलाओं में अंतिम मान समान होता है। एक अंतिम पोस्टप्रोसेसिंग पास तालिका में श्रंखला को क्रमबद्ध कर सकता है और किसी भी दोहरे श्रृंखला को हटा सकता है जिसमें अन्य श्रृंखलाओं के समान अंतिम मान होते है। तालिका भरने के लिए नई श्रृंखलाएं उत्पन्न की जाती है। ये श्रृंखलाएं टक्कर-मुक्त नहीं होते है (वे कुछ समय के लिए ओवरलैप हो सकती है) लेकिन वे विलय नहीं करती है, जिससे टक्करों की कुल संख्या में भारी कमी आती है।


रिडक्शन फ़ंक्शंस के अनुक्रमों का उपयोग करने से यह बदलता है कि लुकअप कैसे किया जाता है: क्योंकि रुचि का हैश मान श्रृंखला में किसी भी स्थान पर पाया जा सकता है, यह k विभिन्न श्रृंखलाओं को उत्पन्न करने के लिए आवश्यक है। पहली श्रृंखला मानती है कि हैश मान अंतिम हैश स्थिति में है और केवल आरके लागू होता है, अगली श्रृंखला मानती है कि हैश मान दूसरे-से-अंतिम हैश स्थिति में है और R<sub>''k''−1</sub>, फिर H, फिर R<sub>''k''</sub> लागू करता है, और इसी तरह अंतिम श्रृंखला तक, जो एच के साथ बारी-बारी से सभी कमी कार्यों को लागू करता है। यह एक गलत अलार्म उत्पन्न करने की एक नयी विधि बनती है: हैश मान की स्थिति का एक गलत "अनुमान" अनावश्यक रूप से एक श्रृंखला का मूल्यांकन कर सकता है।
रिडक्शन फ़ंक्शंस के अनुक्रमों का उपयोग करने से यह बदलता है: क्योंकि रुचि का हैश मान श्रृंखला में किसी भी स्थान पर पाया जा सकता है, यह k विभिन्न श्रृंखलाओं को उत्पन्न करने के लिए आवश्यक होता है। पहली श्रृंखला मानती है कि हैश मान अंतिम हैश स्थिति में होता है और केवल Rk लागू होता है, अगली श्रृंखला मानती है कि हैश मान दूसरे-से-अंतिम हैश स्थिति में होती है और R<sub>''k''−1</sub>, फिर H, फिर R<sub>''k''</sub> लागू करता है, और इसी तरह अंतिम श्रृंखला होती है, जो एच के साथ बारी-बारी से सभी कमी कार्यों को लागू करता है। यह एक गलत अलार्म उत्पन्न करने की एक नयी विधि बनती है: हैश मान की स्थिति का एक गलत "अनुमान" अनावश्यक रूप से एक श्रृंखला का मूल्यांकन करता है।


चूंकि इंद्रधनुष तालिकाओं को अधिक श्रृंखलाओं का पालन करना पड़ता है, वे इसके लिए कम तालिकाओं का निर्माण करते है: विलय श्रृंखलाओं के कारण सरल हैश श्रृंखला तालिकाएं एक निश्चित आकार से आगे नहीं बढ़ सकती है, जो तेजी से अक्षम हो जाती है, इससे निपटने के लिए, वे कई तालिका बनाए रखते है, और प्रत्येक लुकअप को प्रत्येक तालिका के माध्यम से खोजना चाहिए। रेनबो तालिकाएँ k गुना बड़ी तालिकाओं के साथ समान प्रदर्शन प्राप्त कर सकती है, जिससे उन्हें k कम लुकअप का कारक निष्पादित करने की अनुमति मिलती है।
चूंकि इंद्रधनुष तालिकाओं को अधिक श्रृंखलाओं का पालन करना पड़ता है, वे इसके लिए कम तालिकाओं का निर्माण करते है: विलय श्रृंखलाओं के कारण सरल हैश श्रृंखला तालिकाएं एक निश्चित आकार से आगे नहीं बढ़ता है, जो तेजी से अक्षम हो जाती है, इससे निपटने के लिए, वे कई तालिका बनाए रखते है, और प्रत्येक तालिका के माध्यम से खोजता है। इंद्रधनुष तालिकाएँ k बड़ी तालिकाओं के साथ समान प्रदर्शन प्राप्त कर सकता है, जिससे उन्हें k को कम कारक निष्पादित करने की अनुमति मिलती है।


=== उदाहरण ===
=== उदाहरण ===
#नीचे की छवि में हैश ("re3xes") से प्रारंभ करते हुए, कोई तालिका में उपयोग की गई अंतिम कमी की गणना करता है और जांचता है कि क्या पासवर्ड तालिका के अंतिम कॉलम में दिखाई देता है (चरण 1)।
#नीचे की छवि में हैश ("re3xes") से प्रारंभ करते हुए, कोई तालिका में उपयोग की गई अंतिम कमी की गणना करता है और जांचता है कि क्या पासवर्ड तालिका के अंतिम कॉलम में दिखाई देता है (चरण 1)।
# यदि परीक्षण विफल हो जाता है (रेम्बो तालिका में प्रकट नहीं होता है), तो दो अंतिम कटौतियों के साथ एक श्रृंखला की गणना करता है (इन दो कटौती को चरण 2 में दर्शाया गया है)
# यदि परीक्षण विफल हो जाता है (इंद्रधनुष तालिका में प्रकट नहीं होता है), तो दो अंतिम कटौतियों के साथ एक श्रृंखला की गणना करता है (इन दो कटौती को चरण 2 में दर्शाया गया है)
#: नोट: यदि यह नया परीक्षण फिर से विफल हो जाता है, तो पासवर्ड मिलने तक 3 कमी, 4 कमी आदि के साथ जारी रखें। यदि किसी श्रृंखला में पासवर्ड नहीं है, तो हमला विफल हो गया है।
#: नोट: यदि यह नया परीक्षण फिर से विफल हो जाता है, तो पासवर्ड मिलने तक 3 कमी, 4 कमी आदि के साथ जारी रखता है। यदि किसी श्रृंखला में पासवर्ड नही होता है, तो हमला विफल हो जाता है।
# यदि यह परीक्षण सकारात्मक है (चरण 3, लिनक्स23 श्रृंखला के अंत में और तालिका में दिखाई देता है), तो पासवर्ड श्रृंखला की शुरुआत में प्राप्त किया जाता है जो लिनक्स23 का उत्पादन करता है। यहां हम तालिका में संग्रहीत संबंधित श्रृंखला की शुरुआत में पासवर्ड पाते है।
# यदि यह परीक्षण सकारात्मक होता है (चरण 3, लिनक्स23 श्रृंखला के अंत में और तालिका में दिखाई देता है), तो पासवर्ड श्रृंखला के प्रारंभ में प्राप्त किया जाता है जो लिनक्स23 का उत्पादन करता है। यहां हम तालिका में संग्रहीत संबंधित श्रृंखला के प्रारंभ में पासवर्ड पाते है।
# इस बिंदु पर (चरण 4), एक श्रृंखला उत्पन्न करता है और प्रत्येक पुनरावृत्ति पर लक्ष्य हैश के साथ हैश की तुलना करता है। हम श्रृंखला में हैश re3xes पाते है, और वह पासवर्ड जिसने इसे (संस्कृति) श्रृंखला में एक कदम पहले उत्पन्न किया: हमला सफल रहा।
# इस बिंदु पर (चरण 4), एक श्रृंखला उत्पन्न करता है और प्रत्येक पुनरावृत्ति पर लक्ष्य हैश के साथ हैश की तुलना करता है। हम श्रृंखला में हैश re3xes पाते है, और वह पासवर्ड जिसने इसे (संस्कृति) श्रृंखला में एक कदम पहले उत्पन्न किया: हमला सफल रहता है।


[[Image:simple_rainbow_search.svg|607x607px]]
[[Image:simple_rainbow_search.svg|607x607px]]


इंद्रधनुष तालिका एक श्रृंखला में प्रत्येक "लिंक" के लिए एक अलग कमी समारोह के साथ एक परिष्कृत एल्गोरिथ्म का उपयोग करते है, जिससे कि जब दो या दो से अधिक श्रृंखलाओं में हैश टक्कर हो, तो श्रृंखला तब तक विलीन नहीं होगी जब तक टकराव नहीं होता है। प्रत्येक श्रृंखला में समान स्थिति। यह किसी दिए गए तालिका आकार के लिए एक सही दरार की संभावना को बढ़ाता है, प्रति लुकअप आवश्यक चरणों की संख्या को कम करने की कीमत पर, क्योंकि लुकअप रूटीन को अब श्रृंखला में उपयोग किए जाने वाले पहले कमी फ़ंक्शन के सूचकांक के माध्यम से पुनरावृति करने की आवश्यकता होती है।<ref name="ophpaper" />
इंद्रधनुष तालिका एक श्रृंखला में प्रत्येक "लिंक" के लिए परिष्कृत एल्गोरिथ्म का उपयोग करते है, जिससे कि जब दो या दो से अधिक श्रृंखलाओं में हैश टक्कर होता है, तो श्रृंखला तब तक विलीन नहीं होती है जब तक टकराव नहीं होता है। प्रत्येक श्रृंखला में समान स्थिति होती है। यह किसी दिए गए तालिका आकार के लिए एक सही दरार की संभावना को बढ़ाता है, प्रति आवश्यक चरणों की संख्या को कम करने की कीमत होती है, क्योंकि रूटीन को अब श्रृंखला में उपयोग किए जाने वाले पहले कमी फ़ंक्शन के सूचकांक के माध्यम से पुनरावृति करने की आवश्यकता होती है।<ref name="ophpaper" />


इंद्रधनुष तालिका उस हैश फंक्शन के लिए विशिष्ट है जिसे वे उदाहरण के लिए बनाए गए थे, एमडी 5 तालिका केवल एमडी 5 हैश को क्रैक कर सकते है। इस तकनीक के सिद्धांत का आविष्कार फिलिप ओचस्लिन [3] द्वारा समय/मेमोरी ट्रेडऑफ के एक तेज रूप के रूप में किया गया था,<ref name="ophpaper" /> जिसे उन्होंने [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] [[पासवर्ड क्रैकिंग]] [[ओफक्रैक]] में लागू किया था। अधिक शक्तिशाली रेनबोक्रैक प्रोग्राम बाद में विकसित किया गया था जो एलएम हैश, एमडी5, और एसएचए-1 सहित विभिन्न प्रकार के कैरेक्टर सेट और हैशिंग एल्गोरिदम के लिए इंद्रधनुष तालिका उत्पन्न और उपयोग कर सकता है।
इंद्रधनुष तालिका उस हैश फंक्शन के लिए विशिष्ट होते है जिसे वे उदाहरण के लिए बनाए गए थे, एमडी 5 तालिका केवल एमडी 5 हैश को क्रैक कर सकते है। इस तकनीक के सिद्धांत का आविष्कार फिलिप ओचस्लिन द्वारा समय/मेमोरी ट्रेडऑफ के एक तेज रूप में किया गया था,<ref name="ophpaper" /> जिसे उन्होंने [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] [[पासवर्ड क्रैकिंग]] [[ओफक्रैक]] में लागू किया था। अधिक शक्तिशाली इंद्रधनुषक्रैक प्रोग्राम बाद में विकसित किया गया था जो एलएम हैश, एमडी5, और एसएचए-1 सहित विभिन्न प्रकार के सेट और हैशिंग एल्गोरिदम के लिए इंद्रधनुष तालिका उत्पन्न और उपयोग कर सकता है।


सरल स्थितियों में जहां कमी फ़ंक्शन और हैश फ़ंक्शन में कोई टक्कर नहीं है, एक पूर्ण इंद्रधनुष तालिका दी गई है (जो कि किसी भी हैश दिए गए संबंधित पासवर्ड को ढूंढना सुनिश्चित करता है) पासवर्ड सेट का आकार | पी |, समय टी जो था तालिका की गणना करने के लिए आवश्यक है, तालिका एल की लंबाई और किसी दिए गए हैश से मेल खाने वाले पासवर्ड को खोजने के लिए आवश्यक औसत समय सीधे संबंधित है:
सरल स्थितियों में जहां कमी फ़ंक्शन और हैश फ़ंक्शन में कोई टक्कर नही होता है, एक पूर्ण इंद्रधनुष तालिका दी जाती है (जो कि किसी भी हैश दिए गए संबंधित पासवर्ड को ढूंढना सुनिश्चित करता है) पासवर्ड सेट का आकार | पी |, समय टी जो था तालिका की गणना करने के लिए आवश्यक होता है, तालिका एल की लंबाई और किसी दिए गए हैश से मेल खाने वाले पासवर्ड को खोजने के लिए आवश्यक औसत समय सीधे संबंधित होता है:


:<math>T = |P| </math>
:<math>T = |P| </math>
:<math>t = \frac {|P|}{2L}</math>
:<math>t = \frac {|P|}{2L}</math>
इस प्रकार 8-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 3×10<sup>12</sup>) एक पर्सनल कंप्यूटर के साथ आसानी से ट्रैक्तालिका होगा जबकि 16-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 10)<sup>25</sup>) पूरी तरह से असभ्य होता है।
इस प्रकार 8-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 3×10<sup>12</sup>) एक पर्सनल कंप्यूटर के साथ आसानी से ट्रैक्तालिका होती है जबकि 16-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 10)<sup>25</sup>) पूरी तरह से असभ्य होती है।


==इंद्रधनुष सारणियों से बचाव==
==इंद्रधनुष सारणियों से बचाव==
इंद्रधनुष तालिका एक तरफा हैश के विरुद्ध अप्रभावी होती है जिसमें बड़े लवण सम्मलित होते है। उदाहरण के लिए, एक पासवर्ड हैश पर विचार करें जो निम्नलिखित फ़ंक्शन का उपयोग करके उत्पन्न होता है (जहां "+" संयोजन संचालिका है):
इंद्रधनुष तालिका एक तरफा हैश के विरुद्ध अप्रभावी होता है जिसमें बड़े लवण सम्मलित होते है। उदाहरण के लिए, एक पासवर्ड हैश पर विचार करता है जो निम्नलिखित फ़ंक्शन का उपयोग करके उत्पन्न होता है (जहां "+" संयोजन संचालिका होती है):


<code>saltedhash(password) = hash(password + salt)</code>  
<code>saltedhash(password) = hash(password + salt)</code>  
Line 83: Line 83:
<code>saltedhash(password) = hash(hash(password) + salt)</code>
<code>saltedhash(password) = hash(hash(password) + salt)</code>


नमक का मूल्य गुप्त नहीं है और इसे यादृच्छिक रूप से उत्पन्न किया जा सकता है और पासवर्ड हैश के साथ संग्रहीत किया जा सकता है। एक बड़ा नमक मूल्य यह सुनिश्चित करके कि प्रत्येक उपयोगकर्ता का पासवर्ड विशिष्ट रूप से हैश किया गया है, रेनबो तालिका सहित प्रीकंप्यूटेशन हमलों को रोकता है। इसका मतलब है कि एक ही पासवर्ड वाले दो उपयोगकर्ताओं के पास अलग-अलग पासवर्ड हैश होंगे (अलग-अलग लवणों का उपयोग किया जाता है)। सफल होने के लिए, एक हमलावर को प्रत्येक संभावित नमक मूल्य के लिए तालिकाओं की पूर्व गणना करने की आवश्यकता होती है। नमक अधिक बड़ा होना चाहिए, अन्यथा हमलावर प्रत्येक नमक मूल्य के लिए एक तालिका बना सकता है। पुराने यूनिक्स पासवर्ड के लिए जो 12-बिट नमक का उपयोग करते थे, इसके लिए 4096 तालिका की आवश्यकता होगी, हमलावर के लिए लागत में उल्लेखनीय वृद्धि, लेकिन टेराबाइट हार्ड ड्राइव के साथ अव्यावहारिक नहीं। शा2-क्रिप्ट और बीक्रिप्ट विधियाँ-[[लिनक्स]], [[बीएसडी]] यूनिक्स और [[सोलारिस (ऑपरेटिंग सिस्टम)|सोलारिस]] में उपयोग की जाती है- इनमें 128 बिट्स के लवण होते है।<ref name="alexander">{{cite journal
साल्ट का मूल्य गुप्त नही होता है और इसे यादृच्छिक रूप से उत्पन्न किया जा सकता है और पासवर्ड हैश के साथ संग्रहीत किया जा सकता है। एक बड़ा साल्ट मूल्य यह सुनिश्चित करता है कि प्रत्येक उपयोगकर्ता का पासवर्ड विशिष्ट रूप से हैश किया जाता है, इंद्रधनुष तालिका सहित प्रीकंप्यूटेशन हमलों को रोकता है। इसका मतलब है कि एक ही पासवर्ड वाले दो उपयोगकर्ताओं के पास अलग-अलग पासवर्ड हैश होता है (अलग-अलग लवणों का उपयोग किया जाता है)। सफल होने के लिए, एक हमलावर को प्रत्येक संभावित साल्ट मूल्य के लिए तालिकाओं की पूर्व गणना करने की आवश्यकता होती है। साल्ट अधिक बड़ा होता है, अन्यथा हमलावर प्रत्येक साल्ट मूल्य के लिए एक तालिका होती है। पुराने यूनिक्स पासवर्ड के लिए जो 12-बिट साल्ट का उपयोग करते थे, इसके लिए 4096 तालिका की आवश्यकता होती है। शा2-क्रिप्ट और बीक्रिप्ट विधियाँ-[[लिनक्स]], [[बीएसडी]] यूनिक्स और [[सोलारिस (ऑपरेटिंग सिस्टम)|सोलारिस]] में उपयोग की जाती है- इनमें 128 बिट्स के लवण होते है।<ref name="alexander">{{cite journal
  | url = https://www.usenix.org/system/files/login/articles/1103-alexander.pdf | title = आधुनिक ऑपरेटिंग सिस्टम के लिए पासवर्ड सुरक्षा| journal = Login | publisher = [[USENIX]] Association
  | url = https://www.usenix.org/system/files/login/articles/1103-alexander.pdf | title = आधुनिक ऑपरेटिंग सिस्टम के लिए पासवर्ड सुरक्षा| journal = Login | publisher = [[USENIX]] Association
  | first = Steven | last = Alexander | volume = 29 |date=June 2004 | issue = 3
  | first = Steven | last = Alexander | volume = 29 |date=June 2004 | issue = 3
}}</ref> ये बड़े नमक मूल्य पासवर्ड की लगभग किसी भी लंबाई के लिए इन प्रणालियों के विरुद्ध प्रीकंप्यूटेशन हमलों को असंभव बनाते है। यहां तक कि यदि हमलावर प्रति सेकंड एक मिलियन तालिका उत्पन्न कर सकता है, तब भी उन्हें सभी संभावित लवणों के लिए तालिका बनाने के लिए अरबों साल की आवश्यकता होगी।
}}</ref> ये बड़े साल्ट मूल्य पासवर्ड की लगभग किसी भी लंबाई के लिए इन प्रणालियों के विरुद्ध प्रीकंप्यूटेशन हमलों को असंभव बनाते है। यहां तक कि यदि हमलावर प्रति सेकंड एक मिलियन तालिका उत्पन्न कर सकता है, तब भी उन्हें सभी संभावित लवणों के लिए तालिका बनाने के लिए अरबों साल की आवश्यकता होती है।


एक अन्य तकनीक जो प्रीकंप्यूटेशन हमलों को रोकने में मदद करती है वह है की स्ट्रेचिंग। जब स्ट्रेचिंग का उपयोग किया जाता है, तो प्रत्येक पासवर्ड को हैश करने के लिए आवश्यक गणना समय को बढ़ाने के लिए नमक, पासवर्ड और कुछ मध्यवर्ती हैश मान अंतर्निहित हैश फ़ंक्शन के माध्यम से कई बार चलाए जाते है।<ref>{{cite book
एक अन्य तकनीक जो प्रीकंप्यूटेशन हमलों को रोकने में मदद करती है वह स्ट्रेचिंग होती है। जब स्ट्रेचिंग का उपयोग किया जाता है, तो प्रत्येक पासवर्ड को हैश करने के लिए आवश्यक गणना समय को बढ़ाने के लिए साल्ट, पासवर्ड और कुछ मध्यवर्ती हैश मान अंतर्निहित हैश फ़ंक्शन के माध्यम से कई बार चलाए जाते है।<ref>{{cite book
   | last = Ferguson
   | last = Ferguson
   | first = Neils
   | first = Neils
Line 96: Line 96:
   | year = 2003
   | year = 2003
   | location = Indianapolis
   | location = Indianapolis
   | isbn = 978-0-471-22357-3 }}</ref> उदाहरण के लिए, एमडी5-क्रिप्ट एक 1000 पुनरावृति लूप का उपयोग करता है जो बार-बार नमक, पासवर्ड, और वर्तमान मध्यवर्ती हैश मान को अंतर्निहित एमडी5 हैश फ़ंक्शन में वापस फीड करता है।<ref name="alexander" /> उपयोगकर्ता का पासवर्ड हैश नमक मान (जो गुप्त नहीं है) और अंतिम हैश का संयोजन है। अतिरिक्त समय उपयोगकर्ताओं के लिए ध्यान देने योग्य नहीं है क्योंकि उन्हें हर बार लॉग इन करने पर केवल एक सेकंड का एक अंश इंतजार करना पड़ता है। दूसरी ओर, स्ट्रेचिंग पुनरावृत्तियों की संख्या के अनुपात में ब्रूट-फोर्स हमलों की प्रभावशीलता को कम कर देता है क्योंकि यह कम कर देता है एक हमलावर एक निश्चित समय सीमा में कितने प्रयास कर सकता है। यह सिद्धांत एमडी5-क्रिप्ट और bक्रिप्ट में लागू होता है।<ref name="provos">{{cite journal
   | isbn = 978-0-471-22357-3 }}</ref> उदाहरण के लिए, एमडी5-क्रिप्ट एक 1000 पुनरावृति लूप का उपयोग करता है जो बार-बार साल्ट, पासवर्ड, और वर्तमान मध्यवर्ती हैश मान को अंतर्निहित एमडी5 हैश फ़ंक्शन में वापस फीड करता है।<ref name="alexander" /> उपयोगकर्ता का पासवर्ड हैश साल्ट मान और अंतिम हैश का संयोजन होता है। अतिरिक्त समय उपयोगकर्ताओं के लिए ध्यान देने योग्य नही होता है क्योंकि उन्हें हर बार लॉग इन करने पर केवल एक सेकंड का एक अंश इंतजार करना पड़ता है। दूसरी ओर, स्ट्रेचिंग पुनरावृत्तियों की संख्या के अनुपात में ब्रूट-फोर्स हमलों की प्रभावशीलता को कम कर देता है। यह सिद्धांत एमडी5-क्रिप्ट और बीक्रिप्ट में लागू होता है।<ref name="provos">{{cite journal
  | url = http://www.usenix.org/events/usenix99/provos/provos.pdf
  | url = http://www.usenix.org/events/usenix99/provos/provos.pdf
  | title = एक भविष्य-अनुकूलनीय पासवर्ड योजना| publisher = USENIX Association | location = Monterey, CA, USA
  | title = एक भविष्य-अनुकूलनीय पासवर्ड योजना| publisher = USENIX Association | location = Monterey, CA, USA
  | first1 = Niels | last1 = Provos | author-link1 = Niels Provos | first2 = David | last2 = Mazières | author-link2 = David Mazières | date = June 6, 1999
  | first1 = Niels | last1 = Provos | author-link1 = Niels Provos | first2 = David | last2 = Mazières | author-link2 = David Mazières | date = June 6, 1999
  | journal = Proceedings of the FREENIX Track: 1999 USENIX Annual Technical Conference
  | journal = Proceedings of the FREENIX Track: 1999 USENIX Annual Technical Conference
}}</ref> यह पूर्व-गणना तालिका बनाने के लिए आवश्यक समय को भी बहुत बढ़ा देता है, लेकिन नमक की अनुपस्थिति में, यह केवल एक बार किया जाना चाहिए।
}}</ref> यह पूर्व-गणना तालिका बनाने के लिए आवश्यक समय को भी बहुत बढ़ा देता है, लेकिन साल्ट की अनुपस्थिति में, यह केवल एक बार किया जाता है।


एक वैकल्पिक दृष्टिकोण, जिसे कुंजी सुदृढ़ीकरण कहा जाता है, यादृच्छिक नमक के साथ कुंजी को बढ़ाता है, लेकिन फिर (कुंजी खींचने के विपरीत) नमक को सुरक्षित रूप से हटा देता है। यह हमलावर और वैध उपयोगकर्ताओं दोनों को नमक मूल्य के लिए क्रूर बल खोज करने के लिए मजबूर करता है।<ref>{{Cite journal | doi = 10.1016/0167-4048(96)00003-X| title = एक तरफ़ा फ़ंक्शंस के आधार पर पासवर्ड बनाने की एक सरल योजना को क्रैक करना बहुत कठिन है| journal = Computers & Security| volume = 15| issue = 2| pages = 171–176| year = 1996| last1 = Manber | first1 = U. | author-link1 = Udi Manber| url = http://webglimpse.net/pubs/TR94-34.pdf| citeseerx = 10.1.1.102.2597}}</ref> चूंकि जिस कागज़ ने की स्ट्रेचिंग की शुरुआत की थी<ref name="low-entropy">{{Cite book | doi = 10.1007/BFb0030415| chapter-url = https://www.schneier.com/paper-low-entropy.pdf| chapter = Secure applications of low-entropy keys| title = सूचना सुरक्षा| volume = 1396| pages = 121| series = [[Lecture Notes in Computer Science|LNCS]]| year = 1998| last1 = Kelsey | first1 = J. | author-link1= John Kelsey (cryptanalyst)| last2 = Schneier | first2 = B. | author-link2 = Bruce Schneier| last3 = Hall | first3 = C. | last4 = Wagner | first4 = D. | author-link4 = David A. Wagner| isbn = 978-3-540-64382-1}}</ref> इस पुरानी तकनीक को संदर्भित किया और जानबूझकर एक अलग नाम चुना, शब्द "की स्ट्रेंथिंग" अब अधिकांशतः (यकीनन गलत तरीके से) की स्ट्रेचिंग को संदर्भित करने के लिए उपयोग किया जाता है।
एक वैकल्पिक दृष्टिकोण, जिसे कुंजी सुदृढ़ीकरण कहा जाता है, यादृच्छिक साल्ट के साथ कुंजी को बढ़ाता है, लेकिन फिर साल्ट को सुरक्षित रूप से हटा देता है। यह हमलावर और वैध उपयोगकर्ताओं दोनों को साल्ट मूल्य के लिए क्रूर बल खोजने के लिए मजबूर करता है।<ref>{{Cite journal | doi = 10.1016/0167-4048(96)00003-X| title = एक तरफ़ा फ़ंक्शंस के आधार पर पासवर्ड बनाने की एक सरल योजना को क्रैक करना बहुत कठिन है| journal = Computers & Security| volume = 15| issue = 2| pages = 171–176| year = 1996| last1 = Manber | first1 = U. | author-link1 = Udi Manber| url = http://webglimpse.net/pubs/TR94-34.pdf| citeseerx = 10.1.1.102.2597}}</ref> चूंकि जिस कागज़ ने की स्ट्रेचिंग का प्रारंभ किया था<ref name="low-entropy">{{Cite book | doi = 10.1007/BFb0030415| chapter-url = https://www.schneier.com/paper-low-entropy.pdf| chapter = Secure applications of low-entropy keys| title = सूचना सुरक्षा| volume = 1396| pages = 121| series = [[Lecture Notes in Computer Science|LNCS]]| year = 1998| last1 = Kelsey | first1 = J. | author-link1= John Kelsey (cryptanalyst)| last2 = Schneier | first2 = B. | author-link2 = Bruce Schneier| last3 = Hall | first3 = C. | last4 = Wagner | first4 = D. | author-link4 = David A. Wagner| isbn = 978-3-540-64382-1}}</ref> वह इस पुरानी तकनीक को संदर्भित करता है और जानबूझकर एक अलग नाम चुनता है, शब्द "की स्ट्रेंथिंग" अब अधिकांशतः स्ट्रेचिंग को संदर्भित करने के लिए उपयोग किया जाता है।


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


एलएम हैश पर केंद्रित विशिष्ट गहन प्रयास, माइक्रोसॉफ्ट द्वारा उपयोग किया जाने वाला एक पुराना हैश एल्गोरिथम सार्वजनिक रूप से उपलब्ध है। एलएम हैश विशेष रूप से असुरक्षित है क्योंकि 7 वर्णों से अधिक लंबे पासवर्ड को दो खंडों में विभाजित किया गया है, जिनमें से प्रत्येक को अलग से हैश किया गया है। पन्द्रह वर्णों या उससे अधिक लंबे पासवर्ड का चयन करना गारंटी देता है कि एलएम हैश उत्पन्न नहीं होगा।<ref>{{Cite web|url=http://support.microsoft.com/kb/299656|title=Windows को सक्रिय निर्देशिका और स्थानीय SAM डेटाबेस में अपने पासवर्ड के LAN प्रबंधक हैश को संग्रहीत करने से कैसे रोकें|date=24 September 2021|publisher=[[Microsoft]]}}</ref>
एलएम हैश पर केंद्रित विशिष्ट गहन प्रयास, माइक्रोसॉफ्ट द्वारा उपयोग किया जाने वाला एक पुराना हैश एल्गोरिथम सार्वजनिक रूप से उपलब्ध होता है। एलएम हैश विशेष रूप से असुरक्षित होता है क्योंकि 7 वर्णों से अधिक लंबे पासवर्ड को दो खंडों में विभाजित किया जाता है, जिनमें से प्रत्येक को अलग से हैश किया जाता है। पन्द्रह वर्णों या उससे अधिक लंबे पासवर्ड का चयन करना गारंटी देता है कि एलएम हैश उत्पन्न नहीं होता है।<ref>{{Cite web|url=http://support.microsoft.com/kb/299656|title=Windows को सक्रिय निर्देशिका और स्थानीय SAM डेटाबेस में अपने पासवर्ड के LAN प्रबंधक हैश को संग्रहीत करने से कैसे रोकें|date=24 September 2021|publisher=[[Microsoft]]}}</ref>
== सामान्य उपयोग ==
== सामान्य उपयोग ==


[[यूनिक्स]], लिनक्स, और बीएसडी के लगभग सभी वितरण और विविधताएं लवण के साथ हैश का उपयोग करती है, चूंकि कई अनुप्रयोग नमक के बिना केवल एक हैश (सामान्यतः एमडी5) का उपयोग करते है। माइक्रोसॉफ्ट विंडोज एनटी/2000 परिवार लैन प्रबंधक और एनटी लैन प्रबंधक हैशिंग विधि ([[MD4|एमडी4]] पर आधारित) का उपयोग करता है और यह अनसाल्टेड भी है, जो इसे सबसे लोकप्रिय जनरेट की गई तालिकाओं में से एक बनाता है। 2020 तक इंद्रधनुष तालिका का उपयोग कम देखा गया है क्योंकि नमकीन बनाना अधिक सामान्य है और जीपीयू-आधारित ब्रूट फोर्स के हमले अधिक व्यावहारिक हो गए है। चूंकि, इंद्रधनुष तालिका आठ और नौ अक्षरों वाले [[एनटीएलएम]] पासवर्ड के लिए उपलब्ध है।<ref>{{Cite web|url=https://www.rainbowcrackalack.com|title=आधुनिक रेनबो टेबल उपयोग के लिए एक मामला|date=26 February 2021|website=rainbowcrackalack.com|publisher=Positron Security.}}</ref>
[[यूनिक्स]], लिनक्स, और बीएसडी के लगभग सभी वितरण और विविधताएं लवण के साथ हैश का उपयोग करती है, चूंकि कई अनुप्रयोग साल्ट के बिना केवल एक हैश (सामान्यतः एमडी5) का उपयोग करते है। माइक्रोसॉफ्ट विंडोज एनटी/2000 लैन प्रबंधक और एनटी लैन प्रबंधक हैशिंग विधि ([[MD4|एमडी4]] पर आधारित) का उपयोग करता है, जो इसे सबसे लोकप्रिय उत्पन्न की गई तालिकाओं में से एक बनाता है। 2020 तक इंद्रधनुष तालिका का उपयोग कम देखा गया था क्योंकि जीपीयू-आधारित ब्रूट फोर्स के हमले अधिक व्यावहारिक हो गए थे। चूंकि, इंद्रधनुष तालिका आठ और नौ अक्षरों वाले [[एनटीएलएम]] पासवर्ड के लिए उपलब्ध होता है।<ref>{{Cite web|url=https://www.rainbowcrackalack.com|title=आधुनिक रेनबो टेबल उपयोग के लिए एक मामला|date=26 February 2021|website=rainbowcrackalack.com|publisher=Positron Security.}}</ref>
== यह भी देखें ==
== यह भी देखें ==
* ए5/1
* ए5/1

Revision as of 15:58, 28 May 2023

सामान्यतः पासवर्ड हैश को क्रैक करने के लिए क्रिप्टोग्राफ़िक हैश फ़ंक्शन के आउटपुट को कैशिंग करने के लिए एक इंद्रधनुष तालिका एक पूर्व-गणना तालिका होती है। पासवर्ड सामान्यतः सादे पाठ के रूप में नही होते है, जबकि हैश मान के रूप में संग्रहीत होते है। यदि हैश किए गए पासवर्ड का ऐसा डेटाबेस किसी हमलावर के हाथों में पड़ जाता है, तो वे प्लेनटेक्स्ट पासवर्ड को पुनर्प्राप्त करने के लिए प्रीकंप्यूटेड इंद्रधनुष तालिका का उपयोग कर सकते है। इस हमले के विरुद्ध एक सामान्य बचाव एक कुंजी व्युत्पत्ति फ़ंक्शन का उपयोग करके हैश की गणना होती है जो प्रत्येक पासवर्ड को हैश करने से पहले साल्ट (क्रिप्टोग्राफी) जोड़ता है, जिसमें अलग-अलग पासवर्ड अलग-अलग लवण प्राप्त होते है, जो हैश के साथ सादे पाठ में संग्रहीत होते है।

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

फिलिप ओचस्लिन[1] द्वारा इंद्रधनुष तालिका का आविष्कार मार्टिन हेलमैन द्वारा पहले के एक सरल एल्गोरिथम के एक अनुप्रयोग के रूप में किया गया था।[2]

पृष्ठभूमि

उपयोगकर्ता प्रमाणीकरण के लिए, पासवर्ड या तो सादे पाठ या क्रिप्टोग्राफिक हैश के रूप में संग्रहीत किए जाते है। चूंकि डेटाबेस एक्सेस से समझौता होने पर प्लेनटेक्स्ट के रूप में संग्रहीत पासवर्ड आसानी से चोरी हो जाते है, डेटाबेस सामान्यतः इसके अतिरिक्त हैश स्टोर करते है। इस प्रकार, कोई भी - प्रमाणीकरण प्रणाली सहित - केवल डेटाबेस में संग्रहीत मूल्य को देखकर पासवर्ड सीख सकता है।

जब कोई उपयोगकर्ता प्रमाणीकरण के लिए एक पासवर्ड अंकित करता है, तो उसके लिए एक हैश की गणना की जाती है और फिर उस उपयोगकर्ता के लिए संग्रहीत हैश की तुलना की जाती है। यदि दो हैश मेल नहीं खाते है तो प्रमाणीकरण विफल हो जाता है, इसके अतिरिक्त, प्रमाणीकरण समान रूप से विफल हो जाता है यदि एक हैश मान को पासवर्ड के रूप में अंकित किया जाता है, जो प्रमाणीकरण प्रणाली इसे दूसरी बार हैश करता है।

हैश से पासवर्ड सीखना एक स्ट्रिंग को खोजना होता है, जो हैश फ़ंक्शन में इनपुट करते समय, वही हैश बनाता है। यह हैश फ़ंक्शन के व्युत्क्रम फ़ंक्शन के समान होता है।

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

व्युत्पत्ति

याइंद्रधनुष तालिका चित्रण क्रिप्टो 2003 में प्रस्तुत किया गया

इंद्रधनुष तालिका शब्द का उपयोग सबसे पहले ओचस्लिन के प्रारंभिक पेपर में किया गया था। यह शब्द उस विधि को संदर्भित करता है जिसको हमले की सफलता दर को बढ़ाने के लिए विभिन्न कमी कार्यों का उपयोग किया जाता है। हेलमैन की मूल विधि में कई छोटी तालिकाओं का उपयोग किया जाता है जिनमें से प्रत्येक में एक अलग कमी कार्य होता है। इंद्रधनुष तालिका बहुत बड़े होते है और प्रत्येक कॉलम में एक अलग रिडक्शन फंक्शन का उपयोग करते है। जब रंग कम करने के कार्यों का प्रतिनिधित्व करने के लिए उपयोग किए जाते है, तो इंद्रधनुष तालिका में एक इंद्रधनुष दिखाई देता है। ओचस्लिन के पेपर के चित्र 2 में एक श्वेत-श्याम ग्राफिक है जो दिखाता है कि ये खंड कैसे संबंधित है। क्रिप्टो 2003 सम्मेलन में अपनी प्रस्तुति के लिए, इंद्रधनुष संघ को और अधिक स्पष्ट करने के लिए ओचस्लिन ने ग्राफिक में रंग जोड़ा गया था।

प्रीकंप्यूटेड हैश श्रंखला

एक पासवर्ड हैश फ़ंक्शन एच और पासवर्ड पी का एक परिमित सेट होता है, लक्ष्य एक डेटा संरचना की पूर्व गणना करता है, जो हैश फ़ंक्शन के किसी भी आउटपुट एच को दिया होता है, या तो पी में एक तत्व पी का पता लगा सकता है जैसे कि एच (पी) = एच, या निर्धारित करता है कि पी में ऐसा कोई पी नही होता है। ऐसा करने की सबसे आसान विधि पी में सभी पी के लिए एच (पी) की गणना करना होता है, लेकिन फिर तालिका को संग्रहीत करने के लिए Θ(|पी|एन) के बिट्स की आवश्यकता होती है, जहां |पी| सेट पी का आकार होता है और एन एच के आउटपुट का आकार होता है, जो बड़े | पी | के लिए निषेधात्मक होता है। हैश श्रंखला इस स्थान की आवश्यकता को कम करने की एक तकनीक होती है। विचार एक रिडक्शन फंक्शन आर को परिभाषित करता है जो हैश वैल्यू को वापस पी में वैल्यू में मैप करता है। हैश फ़ंक्शन को रिडक्शन फ़ंक्शन के साथ वैकल्पिक करके, वैकल्पिक पासवर्ड और हैश मान की श्रृंखला बनाई जाती है। उदाहरण के लिए, यदि पी लोअरकेस वर्णानुक्रमिक 6-वर्ण पासवर्ड का सेट है, और हैश मान 32 बिट लंबा है, तो एक श्रृंखला इस तरह दिख सकती है:

कटौती फ़ंक्शन के लिए एकमात्र आवश्यकता एक विशिष्ट आकार में एक सादा पाठ मान वापस करने में सक्षम होता है।

तालिका उत्पन्न करने के लिए, हम पी से प्रारंभिक पासवर्ड का एक यादृच्छिक सेट चुनते है, प्रत्येक के लिए कुछ निश्चित लंबाई के की श्रृंखलाओं की गणना करते है, और प्रत्येक श्रृंखला में केवल पहला और अंतिम पासवर्ड संग्रहीत करते है। पहले पासवर्ड को प्रारंभिक बिंदु कहा जाता है और अंतिम को समापन बिंदु कहा जाता है। उपरोक्त उदाहरण श्रृंखला में, aaaaaa प्रारंभिक बिंदु होता है और kiebgt समापन बिंदु होता है, और अन्य कोई भी पासवर्ड संग्रहीत नहीं किया जाता है।

अब, उलटा करने के लिए एक हैश मान एच दिया गया होता है, आर, फिर एच, फिर आर, और इसी तरह से एच से प्रारंभ होने वाली श्रृंखला की गणना करता है। यदि किसी भी बिंदु पर मान तालिका में समापन बिंदुओं में से एक से मेल खाता है, तो संबंधित प्रारंभिक बिंदु पूरी श्रृंखला को फिर से बनाने की अनुमति देता है। इस बात की बहुत अधिक संभावना होती है कि इस श्रृंखला में मान h होता है, और यदि ऐसा होता है, तो श्रृंखला में तुरंत पूर्ववर्ती मान वह पासवर्ड पी होता है जिसे हम चाहते है।

उदाहरण के लिए, हैश दिया 920ECF10, इसकी श्रृंखला की गणना पहले आर लगाकर की जा सकती है:

चूँकि "kiebgt" हमारी तालिका में समापन बिंदुओं में से एक होता है, संबंधित प्रारंभिक पासवर्ड "aaaaaa" 920ECF10 तक पहुँचने तक इसकी श्रृंखला का अनुसरण करने की अनुमति देता है:

इस प्रकार, पासवर्ड sgfnyd होता है (या एक अलग पासवर्ड जिसमें समान हैश मान होता है)।

ध्यान दें कि इस श्रृंखला में हमेशा हैश मान एच नही होता है, ऐसा हो सकता है कि एच से प्रारंभ होने वाली श्रृंखला एक अलग प्रारंभिक बिंदु वाली श्रृंखला के साथ विलीन हो जाती है। उदाहरण के लिए, हैश वैल्यू FB107E70 की श्रृंखला भी kiebgt की ओर ले जाती है:

संबंधित प्रारंभिक पासवर्ड द्वारा उत्पन्न श्रृंखला aaaaaa तब तक पीछा करता है जब तक FB107E70 पहुंच नही जाता है। बिना पहुंचे ही तलाश खत्म हो जाती है FB107E70 जब यह मान शृंखला में समाहित नही होता है। इसे झूठा अलार्म कहा जाता है। इस स्थितियों में, इसेको नजरअंदाज कर दिया जाता है और एच की श्रृंखला को दूसरे मैच की तलाश में बढ़ाया जाता है। यदि एच की श्रृंखला बिना किसी अच्छे मिलान के लंबाई के तक विस्तारित हो जाता है, तो किसी भी श्रृंखला में पासवर्ड कभी भी निर्मित नहीं किया जाता है।

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

साधारण हैश श्रंखला में कई खामियां होती है। सबसे गंभीर यदि किसी भी बिंदु पर दो श्रृंखलाएं टकराती है (समान मूल्य उत्पन्न करती है), तो वे विलीन हो जाती है और परिणामस्वरूप उत्पन्न करने के लिए समान कम्प्यूटेशनल लागत का भुगतान करने के अतिरिक्त तालिका में कई पासवर्ड सम्मलित नहीं होते है। चूंकि पिछली श्रृंखलाएं पूरी तरह से संग्रहीत नहीं होती है, इसलिए कुशलतापूर्वक पता लगाना असंभव होता है। उदाहरण के लिए, यदि श्रृंखला 3 में तीसरा मान श्रृंखला 7 में दूसरे मान से मेल खाता है, तो दो श्रृंखलाएं मूल्यों के लगभग समान अनुक्रम को कवर करता है, लेकिन उनके अंतिम मान समान नहीं होते है। हैश फ़ंक्शन एच टकराव उत्पन्न करने की संभावना नहीं होती है क्योंकि इसे सामान्यतः ऐसा नहीं करने के लिए एक महत्वपूर्ण सुरक्षा विशेषता माना जाता है, लेकिन आर, संभावित सादे टेक्स्ट को सही ढंग से कवर करने की आवश्यकता के कारण, टकराव प्रतिरोध नहीं हो सकता है।

अन्य कठिनाइयाँ आर के लिए सही कार्य को चुनने के महत्व से उत्पन्न होती है। आर को पहचान के रूप में चुनना क्रूर बल दृष्टिकोण से थोड़ा बेहतर होता है। केवल तभी जब हमलावर को इस बात का अच्छा अंदाजा हो कि संभावित प्लेनटेक्स्ट क्या होता है, वे एक फंक्शन आर चुन सकते है जो यह सुनिश्चित करता है कि समय और स्थान केवल संभावित प्लेनटेक्स्ट के लिए उपयोग किए जाते है, न कि संभावित पासवर्ड के पूरे स्थान के लिए उपयोग किए जाते है। वास्तव में आर पूर्व हैश गणनाओं के परिणामों को वापस संभावित प्लेनटेक्स्ट में ले जाता है, लेकिन यह लाभ इस खामी के साथ आता है कि आर संभावित रूप से उस वर्ग में हर संभव प्लेनटेक्स्ट का उत्पादन नहीं करता है, हमलावर को निश्चितता से इनकार करने की जांच करता है कि उनके पास से कोई पासवर्ड नहीं आता है। चयनित वर्ग प्लेनटेक्स्ट के अपेक्षित वितरण से मेल खाने के लिए फ़ंक्शन आर को डिज़ाइन करना भी कठिन हो सकता है।[2]

इंद्रधनुष तालिका

इंद्रधनुष तालिका साधारण हैश श्रंखला के साथ टकराव की समस्या को प्रभावी ढंग से हल करते है, एकल कमी फ़ंक्शन R को संबंधित कमी कार्यों R1 से Rk के अनुक्रम के साथ बदलता है। इस तरह, दो श्रृंखलाओं के टकराने और विलय होने के लिए उन्हें एक ही पुनरावृत्ति पर समान मूल्य पर हिट करता है: परिणामस्वरूप, इन श्रृंखलाओं में अंतिम मान समान होता है। एक अंतिम पोस्टप्रोसेसिंग पास तालिका में श्रंखला को क्रमबद्ध कर सकता है और किसी भी दोहरे श्रृंखला को हटा सकता है जिसमें अन्य श्रृंखलाओं के समान अंतिम मान होते है। तालिका भरने के लिए नई श्रृंखलाएं उत्पन्न की जाती है। ये श्रृंखलाएं टक्कर-मुक्त नहीं होते है (वे कुछ समय के लिए ओवरलैप हो सकती है) लेकिन वे विलय नहीं करती है, जिससे टक्करों की कुल संख्या में भारी कमी आती है।

रिडक्शन फ़ंक्शंस के अनुक्रमों का उपयोग करने से यह बदलता है: क्योंकि रुचि का हैश मान श्रृंखला में किसी भी स्थान पर पाया जा सकता है, यह k विभिन्न श्रृंखलाओं को उत्पन्न करने के लिए आवश्यक होता है। पहली श्रृंखला मानती है कि हैश मान अंतिम हैश स्थिति में होता है और केवल Rk लागू होता है, अगली श्रृंखला मानती है कि हैश मान दूसरे-से-अंतिम हैश स्थिति में होती है और Rk−1, फिर H, फिर Rk लागू करता है, और इसी तरह अंतिम श्रृंखला होती है, जो एच के साथ बारी-बारी से सभी कमी कार्यों को लागू करता है। यह एक गलत अलार्म उत्पन्न करने की एक नयी विधि बनती है: हैश मान की स्थिति का एक गलत "अनुमान" अनावश्यक रूप से एक श्रृंखला का मूल्यांकन करता है।

चूंकि इंद्रधनुष तालिकाओं को अधिक श्रृंखलाओं का पालन करना पड़ता है, वे इसके लिए कम तालिकाओं का निर्माण करते है: विलय श्रृंखलाओं के कारण सरल हैश श्रृंखला तालिकाएं एक निश्चित आकार से आगे नहीं बढ़ता है, जो तेजी से अक्षम हो जाती है, इससे निपटने के लिए, वे कई तालिका बनाए रखते है, और प्रत्येक तालिका के माध्यम से खोजता है। इंद्रधनुष तालिकाएँ k बड़ी तालिकाओं के साथ समान प्रदर्शन प्राप्त कर सकता है, जिससे उन्हें k को कम कारक निष्पादित करने की अनुमति मिलती है।

उदाहरण

  1. नीचे की छवि में हैश ("re3xes") से प्रारंभ करते हुए, कोई तालिका में उपयोग की गई अंतिम कमी की गणना करता है और जांचता है कि क्या पासवर्ड तालिका के अंतिम कॉलम में दिखाई देता है (चरण 1)।
  2. यदि परीक्षण विफल हो जाता है (इंद्रधनुष तालिका में प्रकट नहीं होता है), तो दो अंतिम कटौतियों के साथ एक श्रृंखला की गणना करता है (इन दो कटौती को चरण 2 में दर्शाया गया है)
    नोट: यदि यह नया परीक्षण फिर से विफल हो जाता है, तो पासवर्ड मिलने तक 3 कमी, 4 कमी आदि के साथ जारी रखता है। यदि किसी श्रृंखला में पासवर्ड नही होता है, तो हमला विफल हो जाता है।
  3. यदि यह परीक्षण सकारात्मक होता है (चरण 3, लिनक्स23 श्रृंखला के अंत में और तालिका में दिखाई देता है), तो पासवर्ड श्रृंखला के प्रारंभ में प्राप्त किया जाता है जो लिनक्स23 का उत्पादन करता है। यहां हम तालिका में संग्रहीत संबंधित श्रृंखला के प्रारंभ में पासवर्ड पाते है।
  4. इस बिंदु पर (चरण 4), एक श्रृंखला उत्पन्न करता है और प्रत्येक पुनरावृत्ति पर लक्ष्य हैश के साथ हैश की तुलना करता है। हम श्रृंखला में हैश re3xes पाते है, और वह पासवर्ड जिसने इसे (संस्कृति) श्रृंखला में एक कदम पहले उत्पन्न किया: हमला सफल रहता है।

Simple rainbow search.svg

इंद्रधनुष तालिका एक श्रृंखला में प्रत्येक "लिंक" के लिए परिष्कृत एल्गोरिथ्म का उपयोग करते है, जिससे कि जब दो या दो से अधिक श्रृंखलाओं में हैश टक्कर होता है, तो श्रृंखला तब तक विलीन नहीं होती है जब तक टकराव नहीं होता है। प्रत्येक श्रृंखला में समान स्थिति होती है। यह किसी दिए गए तालिका आकार के लिए एक सही दरार की संभावना को बढ़ाता है, प्रति आवश्यक चरणों की संख्या को कम करने की कीमत होती है, क्योंकि रूटीन को अब श्रृंखला में उपयोग किए जाने वाले पहले कमी फ़ंक्शन के सूचकांक के माध्यम से पुनरावृति करने की आवश्यकता होती है।[1]

इंद्रधनुष तालिका उस हैश फंक्शन के लिए विशिष्ट होते है जिसे वे उदाहरण के लिए बनाए गए थे, एमडी 5 तालिका केवल एमडी 5 हैश को क्रैक कर सकते है। इस तकनीक के सिद्धांत का आविष्कार फिलिप ओचस्लिन द्वारा समय/मेमोरी ट्रेडऑफ के एक तेज रूप में किया गया था,[1] जिसे उन्होंने माइक्रोसॉफ़्ट विंडोज़ पासवर्ड क्रैकिंग ओफक्रैक में लागू किया था। अधिक शक्तिशाली इंद्रधनुषक्रैक प्रोग्राम बाद में विकसित किया गया था जो एलएम हैश, एमडी5, और एसएचए-1 सहित विभिन्न प्रकार के सेट और हैशिंग एल्गोरिदम के लिए इंद्रधनुष तालिका उत्पन्न और उपयोग कर सकता है।

सरल स्थितियों में जहां कमी फ़ंक्शन और हैश फ़ंक्शन में कोई टक्कर नही होता है, एक पूर्ण इंद्रधनुष तालिका दी जाती है (जो कि किसी भी हैश दिए गए संबंधित पासवर्ड को ढूंढना सुनिश्चित करता है) पासवर्ड सेट का आकार | पी |, समय टी जो था तालिका की गणना करने के लिए आवश्यक होता है, तालिका एल की लंबाई और किसी दिए गए हैश से मेल खाने वाले पासवर्ड को खोजने के लिए आवश्यक औसत समय सीधे संबंधित होता है:

इस प्रकार 8-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 3×1012) एक पर्सनल कंप्यूटर के साथ आसानी से ट्रैक्तालिका होती है जबकि 16-कैरेक्टर लोअरकेस अल्फ़ान्यूमेरिक पासवर्ड केस (|P| ≃ 10)25) पूरी तरह से असभ्य होती है।

इंद्रधनुष सारणियों से बचाव

इंद्रधनुष तालिका एक तरफा हैश के विरुद्ध अप्रभावी होता है जिसमें बड़े लवण सम्मलित होते है। उदाहरण के लिए, एक पासवर्ड हैश पर विचार करता है जो निम्नलिखित फ़ंक्शन का उपयोग करके उत्पन्न होता है (जहां "+" संयोजन संचालिका होती है):

saltedhash(password) = hash(password + salt)

या

saltedhash(password) = hash(hash(password) + salt)

साल्ट का मूल्य गुप्त नही होता है और इसे यादृच्छिक रूप से उत्पन्न किया जा सकता है और पासवर्ड हैश के साथ संग्रहीत किया जा सकता है। एक बड़ा साल्ट मूल्य यह सुनिश्चित करता है कि प्रत्येक उपयोगकर्ता का पासवर्ड विशिष्ट रूप से हैश किया जाता है, इंद्रधनुष तालिका सहित प्रीकंप्यूटेशन हमलों को रोकता है। इसका मतलब है कि एक ही पासवर्ड वाले दो उपयोगकर्ताओं के पास अलग-अलग पासवर्ड हैश होता है (अलग-अलग लवणों का उपयोग किया जाता है)। सफल होने के लिए, एक हमलावर को प्रत्येक संभावित साल्ट मूल्य के लिए तालिकाओं की पूर्व गणना करने की आवश्यकता होती है। साल्ट अधिक बड़ा होता है, अन्यथा हमलावर प्रत्येक साल्ट मूल्य के लिए एक तालिका होती है। पुराने यूनिक्स पासवर्ड के लिए जो 12-बिट साल्ट का उपयोग करते थे, इसके लिए 4096 तालिका की आवश्यकता होती है। शा2-क्रिप्ट और बीक्रिप्ट विधियाँ-लिनक्स, बीएसडी यूनिक्स और सोलारिस में उपयोग की जाती है- इनमें 128 बिट्स के लवण होते है।[3] ये बड़े साल्ट मूल्य पासवर्ड की लगभग किसी भी लंबाई के लिए इन प्रणालियों के विरुद्ध प्रीकंप्यूटेशन हमलों को असंभव बनाते है। यहां तक कि यदि हमलावर प्रति सेकंड एक मिलियन तालिका उत्पन्न कर सकता है, तब भी उन्हें सभी संभावित लवणों के लिए तालिका बनाने के लिए अरबों साल की आवश्यकता होती है।

एक अन्य तकनीक जो प्रीकंप्यूटेशन हमलों को रोकने में मदद करती है वह स्ट्रेचिंग होती है। जब स्ट्रेचिंग का उपयोग किया जाता है, तो प्रत्येक पासवर्ड को हैश करने के लिए आवश्यक गणना समय को बढ़ाने के लिए साल्ट, पासवर्ड और कुछ मध्यवर्ती हैश मान अंतर्निहित हैश फ़ंक्शन के माध्यम से कई बार चलाए जाते है।[4] उदाहरण के लिए, एमडी5-क्रिप्ट एक 1000 पुनरावृति लूप का उपयोग करता है जो बार-बार साल्ट, पासवर्ड, और वर्तमान मध्यवर्ती हैश मान को अंतर्निहित एमडी5 हैश फ़ंक्शन में वापस फीड करता है।[3] उपयोगकर्ता का पासवर्ड हैश साल्ट मान और अंतिम हैश का संयोजन होता है। अतिरिक्त समय उपयोगकर्ताओं के लिए ध्यान देने योग्य नही होता है क्योंकि उन्हें हर बार लॉग इन करने पर केवल एक सेकंड का एक अंश इंतजार करना पड़ता है। दूसरी ओर, स्ट्रेचिंग पुनरावृत्तियों की संख्या के अनुपात में ब्रूट-फोर्स हमलों की प्रभावशीलता को कम कर देता है। यह सिद्धांत एमडी5-क्रिप्ट और बीक्रिप्ट में लागू होता है।[5] यह पूर्व-गणना तालिका बनाने के लिए आवश्यक समय को भी बहुत बढ़ा देता है, लेकिन साल्ट की अनुपस्थिति में, यह केवल एक बार किया जाता है।

एक वैकल्पिक दृष्टिकोण, जिसे कुंजी सुदृढ़ीकरण कहा जाता है, यादृच्छिक साल्ट के साथ कुंजी को बढ़ाता है, लेकिन फिर साल्ट को सुरक्षित रूप से हटा देता है। यह हमलावर और वैध उपयोगकर्ताओं दोनों को साल्ट मूल्य के लिए क्रूर बल खोजने के लिए मजबूर करता है।[6] चूंकि जिस कागज़ ने की स्ट्रेचिंग का प्रारंभ किया था[7] वह इस पुरानी तकनीक को संदर्भित करता है और जानबूझकर एक अलग नाम चुनता है, शब्द "की स्ट्रेंथिंग" अब अधिकांशतः स्ट्रेचिंग को संदर्भित करने के लिए उपयोग किया जाता है।

इंद्रधनुष तालिका और अन्य प्रीकंप्यूटेशन अटैक उन पासवर्ड के विरुद्ध काम नहीं करते है जिनमें अनुमानित सीमा के बाहर के प्रतीक होते है, या जो हमलावर द्वारा प्रीकंप्यूटेड से अधिक लंबे होते है। चूँकि, तालिकाएँ उत्पन्न की जा सकती है जो उन सामान्य विधियों को ध्यान में रखती है जिनमें उपयोगकर्ता अधिक सुरक्षित पासवर्ड चुनने का प्रयास करते है, जैसे कि कोई संख्या या विशेष वर्ण जोड़ता है। इसलिए, एक ऐसा पासवर्ड चुनना होता है जो चौदह वर्णों से अधिक लंबा होता है, जो कि एक हमलावर को क्रूर-बल विधियों का सहारा लेने के लिए मजबूर कर सकता है।

एलएम हैश पर केंद्रित विशिष्ट गहन प्रयास, माइक्रोसॉफ्ट द्वारा उपयोग किया जाने वाला एक पुराना हैश एल्गोरिथम सार्वजनिक रूप से उपलब्ध होता है। एलएम हैश विशेष रूप से असुरक्षित होता है क्योंकि 7 वर्णों से अधिक लंबे पासवर्ड को दो खंडों में विभाजित किया जाता है, जिनमें से प्रत्येक को अलग से हैश किया जाता है। पन्द्रह वर्णों या उससे अधिक लंबे पासवर्ड का चयन करना गारंटी देता है कि एलएम हैश उत्पन्न नहीं होता है।[8]

सामान्य उपयोग

यूनिक्स, लिनक्स, और बीएसडी के लगभग सभी वितरण और विविधताएं लवण के साथ हैश का उपयोग करती है, चूंकि कई अनुप्रयोग साल्ट के बिना केवल एक हैश (सामान्यतः एमडी5) का उपयोग करते है। माइक्रोसॉफ्ट विंडोज एनटी/2000 लैन प्रबंधक और एनटी लैन प्रबंधक हैशिंग विधि (एमडी4 पर आधारित) का उपयोग करता है, जो इसे सबसे लोकप्रिय उत्पन्न की गई तालिकाओं में से एक बनाता है। 2020 तक इंद्रधनुष तालिका का उपयोग कम देखा गया था क्योंकि जीपीयू-आधारित ब्रूट फोर्स के हमले अधिक व्यावहारिक हो गए थे। चूंकि, इंद्रधनुष तालिका आठ और नौ अक्षरों वाले एनटीएलएम पासवर्ड के लिए उपलब्ध होता है।[9]

यह भी देखें

  • ए5/1
  • पशुबल का आक्रमण
  • DistrRTgen
  • पोलार्ड का कंगारू एल्गोरिदम

टिप्पणियाँ

  1. 1.0 1.1 1.2 Oechslin, P. (2003). "Making a Faster Cryptanalytic Time-Memory Trade-Off" (PDF). Advances in Cryptology - CRYPTO 2003. LNCS. Vol. 2729. pp. 617–630. doi:10.1007/978-3-540-45146-4_36. ISBN 978-3-540-40674-7.
  2. 2.0 2.1 Hellman, M. (1980). "A cryptanalytic time-memory trade-off" (PDF). IEEE Transactions on Information Theory. 26 (4): 401–406. CiteSeerX 10.1.1.120.2463. doi:10.1109/TIT.1980.1056220. ISSN 0018-9448.
  3. 3.0 3.1 Alexander, Steven (June 2004). "आधुनिक ऑपरेटिंग सिस्टम के लिए पासवर्ड सुरक्षा" (PDF). Login. USENIX Association. 29 (3).
  4. Ferguson, Neils; Bruce Schneier (2003). Practical Cryptography. Indianapolis: John Wiley & Sons. ISBN 978-0-471-22357-3.
  5. Provos, Niels; Mazières, David (June 6, 1999). "एक भविष्य-अनुकूलनीय पासवर्ड योजना" (PDF). Proceedings of the FREENIX Track: 1999 USENIX Annual Technical Conference. Monterey, CA, USA: USENIX Association.
  6. Manber, U. (1996). "एक तरफ़ा फ़ंक्शंस के आधार पर पासवर्ड बनाने की एक सरल योजना को क्रैक करना बहुत कठिन है" (PDF). Computers & Security. 15 (2): 171–176. CiteSeerX 10.1.1.102.2597. doi:10.1016/0167-4048(96)00003-X.
  7. Kelsey, J.; Schneier, B.; Hall, C.; Wagner, D. (1998). "Secure applications of low-entropy keys" (PDF). सूचना सुरक्षा. LNCS. Vol. 1396. p. 121. doi:10.1007/BFb0030415. ISBN 978-3-540-64382-1.
  8. "Windows को सक्रिय निर्देशिका और स्थानीय SAM डेटाबेस में अपने पासवर्ड के LAN प्रबंधक हैश को संग्रहीत करने से कैसे रोकें". Microsoft. 24 September 2021.
  9. "आधुनिक रेनबो टेबल उपयोग के लिए एक मामला". rainbowcrackalack.com. Positron Security. 26 February 2021.


संदर्भ


बाहरी संबंध