डेवलपर टूल · SHA हैश कैलकुलेटर
क्रिप्टोग्राफ़िक हैश बनाम चेकसम: CRC32 और xxHash क्या वादा नहीं कर सकते
· पेजभूमि
शा-256 क्रिप्टोग्राफी सुरक्षा
CRC32, FNV और xxHash भी हैश हैं, लेकिन वे किसी प्रतिद्वंद्वी के खिलाफ कोई वादा नहीं करते हैं। यह पोस्ट बताती है कि क्रिप्टोग्राफ़िक हैश को चेकसम से क्या अलग करता है और प्रति उपयोग केस कैसे चुनें।
किस काम के लिए कौन सा हैश? - गति और प्रतिकूल सुरक्षा के बीच चयन
हैश फ़ंक्शन तीन कैटेगरी में आते हैं: आकस्मिक त्रुटियों का पता लगाने के लिए चेकसम, वितरण और प्रदर्शन के लिए गैर-क्रिप्टोग्राफ़िक हैश और सुरक्षा के लिए क्रिप्टोग्राफ़िक हैश। प्रत्येक कैटेगरी में गति और डाइजेस्ट आकार में अलग-अलग गारंटी और अलग-अलग ट्रेड-ऑफ होते हैं। CRC32 जैसा चेकसम तेज़ और छोटा है (4 bytes, 8 हेक्स वर्ण) लेकिन जानबूझकर संशोधन के खिलाफ कोई सुरक्षा प्रदान नहीं करता है। xxHash या MurmurHash जैसा एक गैर-क्रिप्टोग्राफ़िक हैश भी तेज़ है और हैश तालिकाओं और डेटा वितरण के लिए उपयोगी है, लेकिन टकराव का कारण बनने वाले प्रतिद्वंद्वी के खिलाफ कोई सुरक्षा प्रदान नहीं करता है। SHA-256 जैसा क्रिप्टोग्राफ़िक हैश धीमा है और एक लंबा डाइजेस्ट (32 bytes, 64 हेक्स वर्ण) उत्पन्न करता है, लेकिन यह प्रीइमेज प्रतिरोध और टकराव प्रतिरोध-सुरक्षा गुण प्रदान करता है जो एक प्रतिद्वंद्वी से बचाता है।
आपके उपयोग के मामले में गलत हैश फ़ंक्शन चुनना एक सामान्य सुरक्षा गलती है। किसी अविश्वसनीय स्रोत से फ़ाइल डाउनलोड को सत्यापित करने के लिए CRC32 का उपयोग करना अप्रभावी है; एक हमलावर आसानी से फ़ाइल को संशोधित कर सकता है और CRC32 की पुनः गणना कर सकता है। उच्च-आवृत्ति हैश तालिका में तेज़ हैश फ़ंक्शन के रूप में SHA-256 का उपयोग करना बेकार है; CRC32 या तेज़ गैर-क्रिप्टोग्राफ़िक हैश पर्याप्त और सस्ता है।
आकस्मिक त्रुटियों के लिए चेकसम - ट्रांसमिशन में बिट फ़्लिप का पता लगाने के लिए CRC का डिज़ाइन
चेकसम को ट्रांसमिशन या भंडारण के दौरान त्रुटि का पता लगाने के लिए डिज़ाइन किया गया है, जहां त्रुटियों को यादृच्छिक और आकस्मिक माना जाता है। CRC (चक्रीय अतिरेक जांच) मूल रूप से संचार में बिट फ़्लिप का पता लगाने के लिए डिज़ाइन किया गया था। एक CRC32 एक 32-बिट डाइजेस्ट उत्पन्न करता है। यदि ट्रांसमिशन के दौरान यादृच्छिक बिट फ़्लिप द्वारा कोई फ़्रेम दूषित हो जाता है, तो CRC32 लगभग निश्चित रूप से बदल जाएगा, जो रिसीवर को पुनः ट्रांसमिशन का अनुरोध करने के लिए सचेत करेगा। CRC बहुपद के आधार पर एक निश्चित संख्या तक बिट त्रुटियों का पता लगा सकता है; अधिकांश सामान्य उपयोग के मामलों में, एक बिट फ़्लिप या कुछ बिट फ़्लिप के फटने का विश्वसनीय रूप से पता लगाया जाता है।
CRC नियतिवादी है लेकिन क्रिप्टोग्राफ़िक नहीं है। किसी फ़ाइल और उसके CRC32 को देखते हुए, एक हमलावर फ़ाइल को संशोधित कर सकता है और अपेक्षित मान से मेल खाने के लिए CRC32 की पुन: गणना कर सकता है। CRC बहुपद के ज्ञान वाले एक प्रतिद्वंद्वी के लिए, टकराव पैदा करना सीधा है। CRC का उद्देश्य जानबूझकर संशोधन का विरोध करना कभी नहीं था; यह पूरी तरह से आकस्मिक त्रुटि का पता लगाने के लिए है। ऐतिहासिक प्रणालियाँ जैसे ZIP फ़ाइलें और JPEG फ़ाइलें इस उद्देश्य के लिए CRC का उपयोग करती हैं। आधुनिक प्रोटोकॉल एन्क्रिप्टेड या प्रमाणित चैनलों के भीतर तेजी से त्रुटि का पता लगाने के लिए CRC का उपयोग करते हैं, न कि स्टैंडअलोन अखंडता जांच के रूप में।
वितरण के लिए गैर-क्रिप्टोग्राफ़िक हैश - हैश तालिकाओं और विभाजन में FNV, MurmurHash और xxHash
गैर-क्रिप्टोग्राफ़िक हैश जैसे FNV-1a, MurmurHash और xxHash को हैश तालिकाओं और डेटा विभाजन में गति और एकरूपता के लिए डिज़ाइन किया गया है। उनमें बहुत कम विलंबता होती है और उन स्थितियों में उपयोग किया जाता है जहां आपको सुरक्षा गुणों की परवाह किए बिना डेटा को सर्वर या बकेट में विभाजित करने की आवश्यकता होती है। यदि आप एक कैश बना रहे हैं और एक कुंजी को बकेट नंबर पर मैप करने की आवश्यकता है, तो एक तेज़ हैश उपयुक्त है। MurmurHash को स्पष्ट रूप से हैश टेबल उपयोग के लिए डिज़ाइन किया गया था और अधिकांश हार्डवेयर पर SHA से तेज़ है। xxHash नया है और बड़े कैश और वैश्वीकरण के साथ आधुनिक सीपीUK लिए अनुकूलित है।
ये हैश क्रिप्टोग्राफ़िक नहीं हैं क्योंकि वे प्रीइमेज हमलों (एक इनपुट ढूंढना जो एक विशिष्ट डाइजेस्ट उत्पन्न करता है) या टकराव हमलों (दो अलग-अलग इनपुट ढूंढना जो एक ही डाइजेस्ट उत्पन्न करते हैं) का विरोध नहीं करते हैं। एक हमलावर हैश एल्गोरिदम की गणना कर सकता है और ऐसे इनपुट ढूंढ सकता है जो टकराते हैं या जो लक्ष्य आउटपुट उत्पन्न करते हैं। एक विश्वसनीय वातावरण (एक क्लस्टर जहां सभी नोड्स आपके नियंत्रण में हैं) के भीतर, यह स्वीकार्य है। यदि कोई अविश्वसनीय उपयोगकर्ता इनपुट को नियंत्रित कर सकता है, तो एक गैर-क्रिप्टोग्राफ़िक हैश टकराव के हमलों के प्रति संवेदनशील होता है जो प्रदर्शन को ख़राब करता है (हैश तालिका सबसे खराब स्थिति तब होती है जब सभी कुंजियाँ टकराती हैं) या अन्य दुष्प्रभाव उत्पन्न करती हैं।
क्रिप्टोग्राफ़िक हैश क्या जोड़ता है - एक जानबूझकर हमलावर के खिलाफ प्रीइमेज और टकराव प्रतिरोध
SHA-256, SHA-384 और SHA-512 जैसे क्रिप्टोग्राफ़िक हैश प्रीइमेज प्रतिरोध प्रदान करते हैं: एक डाइजेस्ट को देखते हुए, उस डाइजेस्ट को उत्पन्न करने वाले किसी भी इनपुट को ढूंढना कम्प्यूटेशनल रूप से असंभव है। वे टकराव प्रतिरोध भी प्रदान करते हैं: एक ही डाइजेस्ट उत्पन्न करने वाले दो अलग-अलग इनपुट ढूंढना कम्प्यूटेशनल रूप से संभव नहीं है। ये गुण किसी ऐसे विरोधी से रक्षा करते हैं जो डाउनलोड में जालसाजी करना चाहता है, नकली प्रमाणपत्र बनाना चाहता है या किसी संदेश के साथ छेड़छाड़ करना चाहता है। लागत गति है: SHA-256 अधिकांश हार्डवेयर पर CRC32 से धीमी और xxHash से धीमी है।
SHA-1 क्रिप्टोग्राफ़िक रूप से टूटा हुआ है (टक्कर व्यावहारिक हैं) और इसका उपयोग नए सुरक्षा उद्देश्यों के लिए नहीं किया जाना चाहिए, लेकिन इसकी गणना अभी भी विरासत संगतता के लिए की जाती है। SHA-256, SHA-384 और SHA-512 मजबूत बने हुए हैं और क्रिप्टोग्राफ़िक हैशिंग के लिए मानक विकल्प हैं। SHA-2 में "2" SHA एल्गोरिदम के दूसरे परिवार को इंगित करता है (पहला मूल SHA-1 है; SHA-3 एक नया परिवार है लेकिन इस उद्देश्य के लिए शायद ही कभी इसका उपयोग किया जाता है)।
क्रिप्टोग्राफ़िक हैश प्रतिकूल गुण जोड़ते हैं; यह आलेख असमर्थित सापेक्ष-गति दावों से बचाता है
सही हैश परिवार के साथ पांच परिदृश्यों का मिलान: सबसे पहले, AES: CRC32 के साथ एन्क्रिप्टेड एक विश्वसनीय चैनल पर प्रसारित नेटवर्क फ्रेम उपयुक्त है। एन्क्रिप्शन संशोधन से बचाता है, और CRC आकस्मिक भ्रष्टाचार का पता लगाता है। दूसरा, लोड संतुलन के लिए हैश टेबल या सुसंगत हैशिंग: xxHash जैसा गैर-क्रिप्टोग्राफ़िक हैश उपयुक्त है। गति मायने रखती है, और पर्यावरण पर भरोसा किया जाता है। तीसरा, किसी अविश्वसनीय स्रोत से डाउनलोड अखंडता की पुष्टि करना: SHA-256 आवश्यक है। एक हमलावर SHA-256 को तोड़े बिना फ़ाइल और चेकसम को संशोधित कर सकता है, लेकिन क्रिप्टोग्राफ़िक हैश को नहीं।
चौथा, डिजिटल हस्ताक्षर और प्रमाणपत्र: SHA-256 आवश्यक है और इसे RSA या ECDSA जैसे असममित एल्गोरिदम के साथ जोड़ा जाता है। हस्ताक्षर साबित करता है कि हस्ताक्षर करने के बाद हैश को संशोधित नहीं किया गया था। पांचवां, उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलों को डीडुप्लिकेट करना: SHA-256 आवश्यक है क्योंकि उपयोगकर्ता जानबूझकर गैर-क्रिप्टोग्राफ़िक हैश में मौजूदा फ़ाइलों से टकराने के लिए डिज़ाइन की गई फ़ाइलें अपलोड कर सकते हैं। यदि डिडुप्लीकेशन xxHash पर आधारित है, तो एक हमलावर एक फ़ाइल को अन्य फ़ाइल के समान हैश के साथ अपलोड कर सकता है, लेकिन अलग सामग्री के साथ, जिससे सिस्टम अपलोड को गलत तरीके से खारिज कर सकता है।
कार्यान्वित उदाहरण - पांच परिदृश्यों (नेटवर्क फ़्रेम, हैश मैप, डाउनलोड सत्यापन, हस्ताक्षर, उपयोगकर्ता अपलोड का डिडुप्लीकेशन) को सही परिवार से मिलान करना
प्रत्येक उपयोग के मामले के लिए क्रिप्टोग्राफ़िक हैश चुनने की लागत प्रदर्शन ओवरहेड है। SHA-256 CRC से धीमा और xxHash से धीमा है। हॉट लूप में - कोड का एक टुकड़ा जो प्रति सेकंड लाखों बार निष्पादित होता है - वह ओवरहेड ध्यान देने योग्य है। सेटअप चरण में या बैच ऑपरेशन में, यह नगण्य है। निर्णय की रूपरेखा यह है: क्या किसी प्रतिद्वंद्वी के पास टकराव पैदा करने का प्रोत्साहन है? यदि हाँ, तो SHA-256 का उपयोग करें। यदि नहीं, और यदि गति महत्वपूर्ण है, तो तेज़ हैश का उपयोग करें। यदि सुरक्षा गति से अधिक महत्वपूर्ण है, तो इसकी परवाह किए बिना SHA-256 का उपयोग करें।
एक सामान्य गलती MD5 का उपयोग करना है, एक पुराना क्रिप्टोग्राफ़िक हैश जो अब टूट गया है। MD5 को 1992 में डिज़ाइन किया गया था और टकरावों को 2004 में प्रदर्शित किया गया था। किसी भी सुरक्षा उद्देश्य के लिए MD5 का उपयोग करना असुरक्षित है। इसे कभी-कभी विरासत प्रणालियों में और उन स्थितियों में देखा जाता है जहां गति को प्राथमिकता दी जाती है, लेकिन ऐसा कोई परिदृश्य नहीं है जहां MD5 आज सही विकल्प है: यदि आपको गति की आवश्यकता है, तो xxHash का उपयोग करें; यदि आपको सुरक्षा की आवश्यकता है, तो SHA-256 का उपयोग करें। कभी भी MD5 का उपयोग न करें।
परिदृश्य मानचित्रण गुणात्मक रहता है क्योंकि थ्रूपुट और टकराव व्यवहार के लिए कार्यान्वयन-विशिष्ट साक्ष्य की आवश्यकता होती है
पासवर्ड हैशिंग एक चौथी कैटेगरी है, जो चेकसम और सामान्य प्रयोजन क्रिप्टोग्राफ़िक हैश दोनों से अलग है। पासवर्ड हैश करने के लिए SHA-256 का उपयोग न करें। इसके बजाय, bcrypt, scrypt या Argon2 जैसे पासवर्ड हैशिंग फ़ंक्शन का उपयोग करें, जो जानबूझकर धीमे हैं और इसमें नमक शामिल है। SHA-256 जैसा तेज़ क्रिप्टोग्राफ़िक हैश पासवर्ड अनुमान लगाना सस्ता बनाता है: एक हमलावर प्रति सेकंड लाखों अनुमान लगाने का प्रयास कर सकता है। एक पासवर्ड हैशिंग फ़ंक्शन को CPU और मेमोरी में प्रत्येक अनुमान को महंगा बनाने के लिए डिज़ाइन किया गया है, इसलिए एक मजबूत पासवर्ड का अनुमान लगाने में अभी भी किसी भी हमलावर की अपेक्षा से अधिक समय लग सकता है। पासवर्ड हैशिंग अपनी आवश्यकताओं के साथ एक विशेष उपयोग का मामला है।
ToolAcre SHA हैश कैलकुलेटर पासवर्ड हैशिंग का समर्थन नहीं करता है और जानबूझकर कोई MD5, कोई कस्टम पैरामीटर और कोई तेज़ हैश प्रदान नहीं करता है। यह सत्यापन और अखंडता जांच के लिए मानक SHA डाइजेस्ट की गणना करने का एक टूल है, प्रमाणीकरण या पासवर्ड भंडारण के लिए नहीं।
टेकअवे: विरोधी या कोई विरोधी नहीं - जब कोई डेटा के साथ छेड़छाड़ कर सकता है तो ToolAcre SHA हैश कैलकुलेटर तक पहुंचें
हैश एल्गोरिदम का चुनाव एक मौलिक निर्णय है जो पूरे सिस्टम में प्रदर्शन और सुरक्षा दोनों को प्रभावित करता है। एक डाइजेस्ट उतना ही भरोसेमंद होता है जितना कि उसे तैयार करने वाला एल्गोरिदम। यदि आप फ़ाइल सत्यापन के लिए CRC32 चुनते हैं, तो डाइजेस्ट जानबूझकर संशोधन के विरुद्ध कोई सुरक्षा प्रदान नहीं करता है। यदि आप हैश तालिका के लिए SHA-256 चुनते हैं, तो आप संसाधनों को बर्बाद कर रहे हैं। प्रत्येक कैटेगरी की संपत्तियों और व्यापार-बंदों को जानने से आप सही ढंग से चयन कर सकते हैं।
ToolAcre SHA हैश कैलकुलेटर SHA-512 के माध्यम से SHA-1 प्रदान करता है, जो अधिकांश उपयोग के मामलों के लिए महत्वपूर्ण क्रिप्टोग्राफ़िक हैश को कवर करता है। यह CRC32, xxHash या MD5 की पेशकश नहीं करता है क्योंकि इनमें से प्रत्येक विशिष्ट संदर्भ में सही विकल्प है (किसी विश्वसनीय चैनल में त्रुटि का पता लगाने के लिए CRC, नियंत्रित वातावरण में प्रदर्शन के लिए xxHash, MD5 के लिए कुछ भी नहीं), और प्रत्येक का उपयोग कब करना है इस पर जोर दिए बिना उन्हें पेश करने से गलतियों को बढ़ावा मिलेगा। कैलकुलेटर मानक क्रिप्टोग्राफ़िक डाइजेस्ट की गणना के लिए है। यदि आपको उन हैश की आवश्यकता है तो `crc32`, `xxh64` या समकक्ष टूल के साथ कमांड लाइन का उपयोग करें। डाउनलोड सत्यापन, प्रमाणपत्र फ़िंगरप्रिंट, गिट कमिट और इसी तरह के उपयोग के मामलों के लिए जहां कोई प्रतिद्वंद्वी डेटा के साथ छेड़छाड़ कर सकता है, ToolAcre SHA हैश कैलकुलेटर के माध्यम से SHA-256 तक पहुंचें।