इंद्रधनुष तालिका हैश फ़ंक्शन को बदलने के लिए एक अनुकूलन है: जब आपके पास सब कुछ है तो पासवर्ड ढूंढना। यद्यपि यह यहां सख्ती से जरूरी नहीं है, मैं What are rainbow tables and how are they used? पढ़ने की अनुशंसा करता हूं जिसमें एक बहुत अच्छी व्याख्या है जो कुछ सामान्य गलत धारणाओं को साफ़ करती है।
आरएआर एन्क्रिप्शन के लिए दो भाग हैं (या बस कुछ भी जो कुछ डेटा एन्क्रिप्ट करने के लिए पासवर्ड का उपयोग करता है)। सबसे पहले, key derivation function (केडीएफ) का उपयोग करके, एक एन्क्रिप्शन कुंजी पासवर्ड से ली गई है। फिर एन्क्रिप्शन कुंजी का उपयोग डेटा को एन्क्रिप्ट या डिक्रिप्ट करने के लिए किया जाता है।
भले ही केडीएफ एक हैश फ़ंक्शन है, फिर भी एक इंद्रधनुष तालिका मदद नहीं करेगी: हमलावर के पास केडीएफ का उत्पादन नहीं होता है। जब प्रमाणीकरण के लिए पासवर्ड का उपयोग किया जाता है, तो केडीएफ का आउटपुट डेटाबेस में संग्रहीत होता है। जब एन्क्रिप्शन के लिए पासवर्ड का उपयोग किया जाता है, तो केडीएफ का आउटपुट गुप्त कुंजी होता है जो हमलावर के बाद होता है।
किसी भी मामले में, rainbow tables only help against unsalted hashes। WinRAR uses a good KDF (PBKDF2) जिसमें नमक शामिल है।
एक KDF एक निश्चित-आकार कुंजी में एक चर लंबाई स्ट्रिंग बदल देती है। केडीएफ की एक प्रमुख संपत्ति यह है कि इसे विशिष्ट कुंजी इनपुट स्ट्रिंग को अलग-अलग कुंजियों में रखना चाहिए। एक cryptographic hash function (SHA-1, SHA-256, ...) इसे प्राप्त करता है।
- दो लोग एक ही पासवर्ड चुनते हैं, तो वे एक ही होने तक समाप्त नहीं होना चाहिए: जब इनपुट स्ट्रिंग एक मानव-प्रदान की पासवर्ड है, वहाँ दो अन्य महत्वपूर्ण गुण है जो एक हैश समारोह अपने आप ही को प्राप्त नहीं करता हैं कुंजी।
- KDF, गणना करने के लिए धीमी गति से होना चाहिए ताकि एक हमलावर जानवर बल द्वारा पासवर्ड नहीं मिल रहा।
एक नमक पहले संपत्ति प्राप्त होता है। दूसरी संपत्ति इस तरह कुछ करने से हासिल की जाती है: पासवर्ड लें, नमक लगाएं, हैश बहुत है; इस हैश को ले लो, नमक लगाओ, हैश बहुत है; कई बार दोहराना।
एक इंद्रधनुष तालिका "एक तरफा" कार्यों के माध्यम से प्राथमिकताओं की गणना करने का एक अनुकूलन है: एक दिशा में गणना करने के लिए आसान कार्य, लेकिन उलटा असंभव है, यानी दिया गया x यह y = f (x) की गणना करना आसान है) लेकिन दिया गया है x को खोजने के लिए कोई ज्ञात तरीका नहीं है कि y = f (x) किसी भी तरह x अनुमान लगाने और जांचने के अलावा। हैश फ़ंक्शन इस तरह हैं। एक सममित कुंजी के साथ एन्क्रिप्शन इस तरह नहीं है: हमलावर एफ को गणना नहीं कर सकता है, क्योंकि वह इसके विपरीत की गणना कर सकता है। इसलिए इंद्रधनुष सारणी सममित एन्क्रिप्शन तोड़ने में मदद नहीं कर सकते हैं।
क्योंकि 'हैशिंग! = Encryption' – NullUserException