हिन्दी

डेवलपर टूल · SHA हैश कैलकुलेटर

हिमस्खलन प्रभाव: क्यों एक परिवर्तित चरित्र एक SHA हैश को फिर से लिखता है

· यह काम किस प्रकार करता है

शा-256 क्रिप्टोग्राफी सुरक्षा मान्यकरण

दो SHA-256 डाइजेस्ट को बिट दर बिट दिखाया गया है, उनके बीच लगभग आधे बिट उलटे हैं, जो एकल वर्ण परिवर्तन से हिमस्खलन प्रभाव को दर्शाता है
मूल ToolAcre वेक्टर चित्रण

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

उम्मीद है कि हैश थोड़ा बदल जाएगा - अधिकांश लोग जो अंतर्ज्ञान लाते हैं और डिज़ाइन जानबूझकर इसे क्यों तोड़ता है

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

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

हिमस्खलन का अर्थ है व्यापक उत्पादन प्रसार; यह लेख कोई स्रोतहीन सटीक संभाव्यता का दावा नहीं करता है

औपचारिक रूप से, हिमस्खलन प्रभाव का मतलब है कि दो इनपुट के लिए जो एक बिट से भिन्न होते हैं, आउटपुट डाइजेस्ट उनके बिट्स के लगभग 50% में भिन्न होना चाहिए। SHA-256 (आउटपुट के 256 bits) के लिए, एक इनपुट बिट बदलने से लगभग 128 आउटपुट बिट फ़्लिप होना चाहिए। प्रभाव सटीक नहीं है; यह एक सांख्यिकीय संपत्ति है. लेकिन यह मजबूत है: व्यवहार में, इनपुट का प्रत्येक बिट आउटपुट के प्रत्येक बिट के साथ पूरी तरह से मिश्रित होता है।

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

छेड़छाड़ का पता लगाने की आवश्यकता क्यों है - किसी दस्तावेज़ में छोटे संपादनों से लगभग समान हैश उत्पन्न नहीं होना चाहिए जिसे एक त्वरित नज़र स्वीकार कर ले

छेड़छाड़ का पता लगाना हिमस्खलन पर निर्भर करता है। यदि आप कोई फ़ाइल डाउनलोड करते हैं और उसकी SHA-256 की गणना करते हैं, तो अपेक्षित डाइजेस्ट ba7816... है (उदाहरण के तौर पर)। एक हमलावर एक बाइट बदलकर फ़ाइल को संशोधित करता है। नया डाइजेस्ट ba7816... से 3d4e92... (पूरी तरह से अलग) में बदल जाता है। जब आप अपेक्षित डाइजेस्ट के विरुद्ध फ़ाइल को सत्यापित करते हैं, तो बेमेल तत्काल और कुल होता है। गलत व्याख्या की कोई गुंजाइश नहीं है: फ़ाइल के साथ छेड़छाड़ की गई है।

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

चक्र कैसे फैलता है - घूर्णन, परिवर्धन और गैर-रैखिक कार्य पूरे राज्य में एक बिट का प्रभाव डालते हैं

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

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

कार्यान्वित उदाहरण - एक वर्ण से भिन्न दो इनपुटों को हैश करना और बिट दर बिट डाइजेस्ट की तुलना करना

हिमस्खलन का परीक्षण करना सीधा है। इनपुट एबीसी को हैश करें और डाइजेस्ट नोट करें। फिर हैश abc के बाद एक स्पेस डालें, या एक कैरेक्टर को किसी और चीज़ से बदलें: abd। हेक्स आउटपुट की तुलना करें. SHA-256 के लिए, 64 हेक्स अंकों का लगभग आधा हिस्सा अलग होगा। उन्हें गिनें. ToolAcre पोस्ट से परीक्षण वेक्टर: abc ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad उत्पन्न करता है। एक खाली स्ट्रिंग e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 उत्पन्न करती है। उन डाइजेस्टों में कोई हेक्स अंक समान नहीं है।

इसे किसी भी इनपुट के साथ ToolAcre कैलकुलेटर पर आज़माएं। एक वाक्य हैश करें. फिर एक अक्षर बदलें और दोबारा हैश करें। भिन्न-भिन्न हेक्स अंकों की गणना करें। आप पाएंगे कि लगभग आधे (ज्यादातर मामलों में 64 में से 32) भिन्न हैं। यह क्रिया में हिमस्खलन प्रभाव है। यह एल्गोरिथम डिज़ाइन की एक संपत्ति है, संयोग नहीं।

हिमस्खलन समानता खोज प्रदान नहीं करता है या स्वयं टकराव प्रतिरोध की मात्रा निर्धारित नहीं करता है

हिमस्खलन समानता खोज या अनुमानित मिलान नहीं बनाता है। यदि आपके पास डाइजेस्ट ba7816 है... और आप एक समान डाइजेस्ट खोजना चाहते हैं, तो आपके पास कोई शॉर्टकट नहीं है। आपको उम्मीदवार के इनपुट का अनुमान लगाना चाहिए या उस पर बल देना चाहिए, प्रत्येक को हैश करना चाहिए और सटीक मिलान की जांच करनी चाहिए। हिमस्खलन प्रभाव प्रत्येक अनुमान को समान या पूरी तरह से अलग आउटपुट उत्पन्न करने की समान संभावना बनाता है। कुछ हैशिंग एल्गोरिदम (जिन्हें स्थानीयता-संवेदनशील हैशिंग कहा जाता है) समानता बनाए रखने के लिए डिज़ाइन किए गए हैं; वे निकट-डुप्लिकेट पहचान और क्लस्टरिंग के लिए उपयोगी हैं, लेकिन वे क्रिप्टोग्राफ़िक हैश नहीं हैं।

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

टेकअवे: कोई चूक नहीं - ToolAcre SHA हैश कैलकुलेटर में एक-वर्ण प्रयोग का प्रयास करें और संपूर्ण डाइजेस्ट परिवर्तन देखें

ToolAcre SHA हैश कैलकुलेटर ब्राउज़र के Web Crypto कार्यान्वयन के माध्यम से SHA एल्गोरिदम चलाता है। आप इसका उपयोग स्वयं हिमस्खलन को सत्यापित करने के लिए कर सकते हैं। एल्गोरिदम में प्रत्येक परिशुद्धता आउटपुट में फीड होती है, और Web Crypto कार्यान्वयन का ऑडिट और रखरखाव ब्राउज़र विक्रेता द्वारा किया जाता है। आप वास्तविक एल्गोरिदम को वास्तविक इनपुट पर चलते हुए देख रहे हैं। प्रति-सहज गुण यह है कि एक चरित्र परिवर्तन पूरे डाइजेस्ट को फिर से लिखता है, यह कोई दोष नहीं है; यह वह विशेषता है जो हैशिंग को कार्यशील बनाती है।

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