हैश के साथ फ़ाइल अखंडता को कैसे सत्यापित करें
जब आप सॉफ़्टवेयर, फ़र्मवेयर या महत्वपूर्ण दस्तावेज़ डाउनलोड करते हैं, तो कैसे जानें कि फ़ाइल वही है जो प्रकाशक का इरादा था? फ़ाइल हैशिंग आपको एक क्रिप्टोग्राफ़िक उंगलियों का निशान देती है, एक अद्वितीय स्ट्रिंग जो फ़ाइल का एक भी बाइट अलग होने पर बदल जाती है। हैश सत्यापित करना सेकंडों लेता है और आपको छेड़छाड़ किए गए सॉफ़्टवेयर को स्थापित करने, टूटे फ़र्मवेयर को फ्लैश करने जो एक उपकरण को ब्रिक करता है, या भ्रष्ट बैकअप पर भरोसा करने से बचा सकता है जो असल में पुनर्स्थापित करते समय विफल हो जाता है।
हैश कार्यों का संक्षिप्त इतिहास
चेकसम का विचार स्वयं कंप्यूटिंग से पुराना है, अकाउंटेंट सत्यापित करने योग्य फ़ाइलों के होने से बहुत पहले से ट्रांसक्रिप्शन त्रुटियों का पता लगाने के लिए अंक-योगों का उपयोग करते थे। क्रिप्टोग्राफ़िक हैश 1980 के दशक के अंत में आए। रॉन रिवेस्ट ने 1990 में MD4 और 1991 में MD5 प्रकाशित किया, जो दो दशकों तक वास्तविक चेकसम बन गया। NIST ने 1993 में SHA-0 को मानकीकृत किया, फिर एक दोष की खोज के बाद 1995 में SHA-1 के पक्ष में जल्दी से इसे वापस ले लिया। SHA-2 परिवार (SHA-224, SHA-256, SHA-384, SHA-512) ने 2001 में SHA-1 की आसन्न कमज़ोरी का समाधान करने के लिए अनुसरण किया।
प्रत्येक पीढ़ी को उन हमलों से सेवानिवृत्त किया गया जो अपेक्षा से सस्ते निकले। MD5 टकराव 2004 में प्रदर्शित किए गए, 2008 में डिजिटल प्रमाणपत्रों के लिए व्यावहारिक बनाए गए, और अब तुच्छ हैं। SHA-1 2017 में Google के SHAttered हमले में गिरा, जब शोधकर्ताओं ने समान SHA-1 डाइजेस्ट के साथ दो अलग-अलग PDF बनाए। SHA-2 2001 से टिका है, और SHA-3 (Keccak, 2015 में मानकीकृत) SHA-2 के टूटने की स्थिति में संरचनात्मक रूप से भिन्न बैकअप प्रदान करता है। सबक यह है कि हैश एल्गोरिथम का शेल्फ लाइफ होता है; आज का सही एल्गोरिथम एक दशक के भीतर बदलने की आवश्यकता हो सकती है।
फ़ाइल हैशिंग कैसे काम करती है
एक हैश फ़ंक्शन फ़ाइल के हर बाइट को पढ़ता है और एक निश्चित-लंबाई की स्ट्रिंग उत्पन्न करता है। एक ही फ़ाइल हमेशा एक ही हैश उत्पन्न करती है। एक बाइट बदलें, और हैश पूरी तरह से बदल जाता है, इसे एवलांच प्रभाव कहा जाता है और यह वह संपत्ति है जो हैश को सत्यापन के लिए उपयोगी बनाती है।
उदाहरण:
- मूल फ़ाइल (SHA-256):
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - वही फ़ाइल, एक बाइट बदला:
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
दोनों हैश में कोई पहचानने योग्य पैटर्न साझा नहीं होता भले ही फ़ाइलें एक बिट से भिन्न हों। यह संवेदनशीलता ही सत्यापन को संभव बनाती है: हैश उत्पन्न करें, इसकी प्रकाशित हैश से तुलना करें, और आप तुरंत जान जाते हैं कि फ़ाइल प्रामाणिक है या नहीं।
आंतरिक रूप से, आधुनिक हैश फ़ंक्शन फ़ाइल को निश्चित-आकार के ब्लॉकों में विभाजित करते हैं (SHA-256 के लिए 64 बाइट्स, SHA-512 के लिए 128), प्रत्येक ब्लॉक को संपीड़न फ़ंक्शन के माध्यम से फ़ीड करते हैं, और स्थिति को आगे जोड़ते हैं। आउटपुट अंतिम ब्लॉक के मिश्रित होने के बाद की अंतिम स्थिति है। क्योंकि श्रृंखला हर बाइट पर निर्भर करती है, कोई शॉर्टकट किसी हमलावर को पूरे हैश को फिर से लिखे बिना सामग्री बदलने नहीं देता।
एक फ़ाइल कैसे सत्यापित करें
- आधिकारिक हैश खोजें, सॉफ़्टवेयर प्रकाशक आमतौर पर अपने डाउनलोड पृष्ठ पर फ़ाइल हैश सूचीबद्ध करता है, अक्सर "SHA-256 चेकसम" या "SHA256SUMS फ़ाइल" लेबल किया जाता है।
- अपनी डाउनलोड की गई फ़ाइल अपलोड करें: हैश कैलकुलेटर में फ़ाइल का चयन करें। हैश आपके ब्राउज़र में स्थानीय रूप से गणना की जाती है; फ़ाइल कभी आपकी मशीन नहीं छोड़ती।
- हैश की तुलना करें: यदि आपका गणना किया गया हैश आधिकारिक हैश से बिल्कुल मेल खाता है, तो फ़ाइल प्रामाणिक और अदूषित है। यदि स्ट्रिंग लंबी है तो दोनों को टेक्स्ट डिफ़ में कॉपी-पेस्ट करें।
- एल्गोरिथम का मिलान करें: SHA-256 हैश केवल अन्य SHA-256 हैश से मेल खाते हैं। यदि प्रकाशक आपको SHA-512 देता है, तो SHA-512 भी उत्पन्न करें; एल्गोरिथम मिलाना सबसे आम "वे मेल नहीं खाते" गलती है।
- जब संभव हो प्रकाशित हैश को स्वयं सत्यापित करें: एक हस्ताक्षरित SHA256SUMS फ़ाइल (प्रकाशक की GPG कुंजी से हस्ताक्षरित) आपको बताती है कि हैश सूची के साथ छेड़छाड़ नहीं की गई थी, जो डाउनलोड पृष्ठ पर नंगा हैश नहीं करता।
फ़ाइल हैश कब सत्यापित करें
- सॉफ़्टवेयर डाउनलोड: सत्यापित करें कि इंस्टॉलर और अपडेट डाउनलोड के दौरान छेड़छाड़ या भ्रष्ट नहीं हुए हैं। कोई भी जो आपको बाइनरी परोसता है, आपका ISP, एक CDN, एक मिरर, सिद्धांत रूप में इसे शत्रुतापूर्ण किसी चीज़ से बदल सकता है।
- फ़र्मवेयर अपडेट: एक भ्रष्ट फ़र्मवेयर फ़ाइल एक उपकरण को ब्रिक कर सकती है। राउटर, IoT डिवाइस, या मदरबोर्ड BIOS फ्लैश करने से पहले हमेशा सत्यापित करें, पुनर्प्राप्ति के लिए अक्सर विशेष हार्डवेयर की आवश्यकता होती है।
- ISO छवियाँ: USB पर जलाने या स्थापित करने से पहले ऑपरेटिंग सिस्टम छवियों को सत्यापित किया जाना चाहिए। Linux वितरण सार्वभौमिक रूप से SHA-256 हैश और उन हैश पर GPG हस्ताक्षर दोनों प्रकाशित करते हैं; दोनों सत्यापित करें।
- कानूनी और वित्तीय दस्तावेज़: सत्यापित करें कि अनुबंध, ऑडिट रिपोर्ट, या वित्तीय विवरण हस्ताक्षर या साझा करने के बाद बदले नहीं गए हैं। हैश एक छेड़छाड़-प्रमाण रसीद प्रदान करते हैं।
- बैकअप सत्यापन, पुष्टि करें कि बैकअप फ़ाइलें मूल के समान हैं। मूक डिस्क भ्रष्टाचार वास्तविक है, और एक बैकअप जिसका हैश निर्माण के बाद से बह गया है, साफ़ रूप से पुनर्स्थापित नहीं हो सकता है।
- CI/CD आर्टिफ़ैक्ट: तैनाती पाइपलाइन में बिल्ड आर्टिफ़ैक्ट को इसके SHA-256 द्वारा पिन करना यह गारंटी देता है कि आपने जिस बाइनरी का परीक्षण किया है वही बाइनरी आप तैनात कर रहे हैं। कंटेनर छवियाँ अपने सामग्री-संबोधनीय डाइजेस्ट के साथ डिज़ाइन के अनुसार ऐसा करती हैं।
- सॉफ़्टवेयर आपूर्ति श्रृंखला ऑडिट: जब एक सुरक्षा सलाह कहती है "इस संस्करण का हैश X है," तो आपके सर्वर पर क्या है इसकी पुष्टि करने का एकमात्र तरीका है वहाँ फ़ाइल को हैश करके तुलना करना। इसके बिना, आप संस्करण स्ट्रिंग पर भरोसा कर रहे हैं, जिसे हमलावर नियंत्रित करता है।
समर्थित एल्गोरिथम
| एल्गोरिथम | हैश लंबाई | आउटपुट बिट्स | अनुशंसा |
|---|---|---|---|
| MD5 | 32 hex | 128 | केवल विरासत, टूटा, केवल आकस्मिक भ्रष्टाचार |
| SHA-1 | 40 hex | 160 | केवल विरासत, टूटा, सुरक्षा के लिए भरोसा न करें |
| SHA-224 | 56 hex | 224 | विशेष; SHA-256 को प्राथमिकता दें |
| SHA-256 | 64 hex | 256 | अनुशंसित सामान्य-उद्देश्य मानक |
| SHA-384 | 96 hex | 384 | उच्च सुरक्षा, TLS 1.3 साइफ़र सूट में उपयोग |
| SHA-512 | 128 hex | 512 | SHA-2 की अधिकतम शक्ति, 64-बिट CPU पर तेज़ |
| SHA3-256 | 64 hex | 256 | SHA-2 से भिन्न आंतरिक डिज़ाइन, भविष्य-प्रूफ़ |
| BLAKE2b/BLAKE3 | परिवर्तनीय | 256 या 512 | सबसे तेज़ आधुनिक हैश, rsync, restic द्वारा उपयोग |
| CRC32 | 8 hex | 32 | केवल त्रुटि पहचान, सुरक्षा हैश नहीं |
यदि आपके पास विकल्प है, तो SHA-256 सही डिफ़ॉल्ट है। 64-बिट मशीनों पर थोड़े बेहतर प्रदर्शन के लिए SHA-512 का उपयोग करें (एल्गोरिथम 64-बिट शब्दों के लिए ट्यून है)। जब थ्रूपुट सबसे महत्वपूर्ण हो तो BLAKE3 की ओर पहुँचें, यह आधुनिक NVMe SSD को उन तरीकों से संतृप्त कर सकता है जो SHA-256 नहीं कर सकता।
हैश बनाम डिजिटल हस्ताक्षर
एक हैश आपको बताता है कि फ़ाइल बदली है या नहीं। एक डिजिटल हस्ताक्षर आपको बताता है कि यह बदली है या नहीं और किसने हैश बनाया। एक हस्ताक्षर एक हैश है जो प्रकाशक की निजी कुंजी से एन्क्रिप्ट किया गया है; आप इसे उनकी सार्वजनिक कुंजी से डिक्रिप्ट करते हैं, हैश को फिर से गणना करते हैं, और जाँचते हैं कि दोनों मेल खाते हैं। यदि वे मेल खाते हैं, तो आप जानते हैं कि फ़ाइल बरकरार है और प्रकाशक (या उनकी निजी कुंजी वाले किसी) ने इसे अनुमोदित किया है।
जब डाउनलोड पृष्ठ SHA-256 हैश और एक .sig या .asc फ़ाइल दोनों दिखाता है, तो हैश भ्रष्टाचार और आकस्मिक छेड़छाड़ से बचाता है, लेकिन हस्ताक्षर एक हमलावर से बचाता है जिसने डाउनलोड सर्वर का उल्लंघन किया है। हमलावर फ़ाइल बदल सकता है और प्रदर्शित हैश अपडेट कर सकता है; वे प्रकाशक की कुंजी के बिना एक मान्य हस्ताक्षर नहीं बना सकते।
सामान्य नुकसान
- गलत एल्गोरिथम की तुलना, MD5 और SHA-256 अलग-अलग लंबाई की स्ट्रिंग उत्पन्न करते हैं; मिलमिलाए एल्गोरिथम कभी मेल नहीं खाएंगे, समान फ़ाइलों पर भी।
- फ़ाइल के समान स्थान से परोसे हैश पर भरोसा, यदि दोनों एक ही समझौता किए गए मिरर पर हैं, तो दोनों को बदला जा सकता है। जब भी संभव हो, एक अलग डोमेन से हैश प्राप्त करें (परियोजना का GitHub releases पृष्ठ, एक हस्ताक्षरित SHA256SUMS फ़ाइल)।
- हेक्स केस संवेदनशीलता, हैश केस-असंवेदनशील हैं (
a3fऔरA3Fसमान बाइट का प्रतिनिधित्व करते हैं)। स्ट्रिंग तुलना अभी भी उन्हें भिन्न के रूप में चिह्नित कर सकती है। दोनों पक्षों को लोअरकेस करें या बाइट के रूप में तुलना करें। - अनुगामी सफेद स्थान और BOM, अनुगामी नई पंक्ति या अदृश्य वर्ण के साथ कॉपी किया गया हैश समान दिखेगा लेकिन मेल नहीं खाएगा। तुलना से पहले दोनों पक्षों को छाँटें।
- गलत फ़ाइल हैश करना, Windows पर डाउनलोड पथ यदि आपने इसे दो बार डाउनलोड किया है तो
Downloads\file (1).exeहो सकता है, न किDownloads\file.exe। हैश करने से पहले पथ सत्यापित करें। - MD5 या SHA-1 को सुरक्षा गारंटी मानना, एक हमलावर सेकंडों में एक दुर्भावनापूर्ण के समान MD5 के साथ एक सौम्य दिखने वाली फ़ाइल बना सकता है। सुरक्षा के लिए, हमेशा SHA-256 या मज़बूत का उपयोग करें।
- गलत चीज़ सत्यापित करना, यदि प्रकाशक संपीड़ित
.tar.gzको हैश करता है और आप निकाली गई सामग्री को हैश करते हैं, तो न तो मेल खाएगा। जो हैश किया गया था उसे हैश करें; आमतौर पर डाउनलोड किया गया संग्रह। - GPG हस्ताक्षर को अनदेखा करना, बहुत से लोग हैश सत्यापित करते हैं लेकिन हस्ताक्षर छोड़ देते हैं। हस्ताक्षर ही उस हमलावर से बचाव करता है जो मिरर को नियंत्रित करता है।
- नेटवर्क भ्रष्टाचार मूक विफलताएँ, एक काट दिया गया डाउनलोड आंशिक फ़ाइल हैश से मेल खा सकता है यदि दोनों समान रूप से काटे गए थे। हमेशा उपयोग करने के लिए इच्छित पूरी फ़ाइल को हैश करें, टुकड़े को नहीं।
- पुराने डाउनलोड का ब्राउज़र कैशिंग, बासी कैश की गई फ़ाइल सत्यापन चरण को धोखा दे सकती है। यदि हैश मेल नहीं खाता और आपको कैशिंग पर संदेह है तो ताज़ा डाउनलोड को बाध्य करें।
वैकल्पिक उपकरण और संदर्भ
जब आपके पास जाँचने के लिए एक फ़ाइल हो तो वेब हैश कैलकुलेटर सबसे तेज़ रास्ता है। बार-बार उपयोग या स्क्रिप्टिंग के लिए, कमांड-लाइन उपकरण मानक हैं।
| उपकरण | प्लेटफ़ॉर्म | ताकत | ध्यान दें |
|---|---|---|---|
| वेब हैश कैलकुलेटर | ब्राउज़र | कोई इंस्टॉल नहीं, फ़ाइल कभी अपलोड नहीं | एक समय में एक फ़ाइल |
sha256sum | Linux | तेज़, स्क्रिप्ट करने योग्य, GNU coreutils | --check SHA256SUMS फ़ाइलें पढ़ता है |
shasum -a 256 | macOS, BSD | बंडल, समान आउटपुट प्रारूप | Linux से अलग बाइनरी नाम |
Get-FileHash | Windows PowerShell | Windows पर प्रथम श्रेणी | आउटपुट प्रारूप sha256sum से भिन्न |
certutil -hashfile | Windows cmd | हर Windows पर उपलब्ध | वर्बोज़ आउटपुट को पार्सिंग की ज़रूरत |
openssl dgst -sha256 | क्रॉस-प्लेटफ़ॉर्म | यदि आपके पास पहले से OpenSSL है | समर्पित उपकरणों से धीमा |
b3sum | क्रॉस-प्लेटफ़ॉर्म | BLAKE3, बहु-GB/s थ्रूपुट | नया, कम सर्वव्यापी |
rhash | क्रॉस-प्लेटफ़ॉर्म | एक साथ कई एल्गोरिथम गणना करता है | अतिरिक्त इंस्टॉल |
CI/CD पाइपलाइनों में वही कार्य आमतौर पर बिल्ड के दौरान sha256sum file > file.sha256 और सत्यापित करने के दौरान sha256sum -c file.sha256 के रूप में चलता है, कभी-कभी एक हस्ताक्षरित मेनिफ़ेस्ट में लपेटा जाता है। सिद्धांत (गणना करें, प्रकाशित करें, पुनर्प्राप्ति पर तुलना करें) ब्राउज़र उपकरण जो इंटरैक्टिव रूप से करता है उसके समान है।
गोपनीयता और हैश कैलकुलेटर
हैश कैलकुलेटर पूरी तरह से आपके ब्राउज़र में चलता है। आप जो फ़ाइल चुनते हैं वह FileReader API के साथ पढ़ी जाती है, Web Crypto SubtleCrypto इंटरफ़ेस के माध्यम से फ़ीड की जाती है, और परिणामी हैश आपको दिखाया जाता है। फ़ाइल के बाइट कभी हमारे सर्वर पर यात्रा नहीं करते, कोई अपलोड नहीं, किन फ़ाइलों को हैश किया गया इसका कोई लॉग नहीं, और फ़ाइल आकार या एक्सटेंशन पर कोई विश्लेषण नहीं। संवेदनशील सामग्री के लिए, अनुबंध, चिकित्सा रिकॉर्ड, निजी कुंजियाँ, अपलोड करने वाले और स्थानीय रूप से हैश करने वाले उपकरण के बीच का अंतर एक तृतीय पक्ष पर भरोसा करने और किसी पर नहीं के बीच का अंतर है। एक हैश एक छोटा आउटपुट है (SHA-256 के लिए 64 हेक्स वर्ण), लेकिन जो इनपुट यह सारांशित करता है वह बहुत खुलासा करने वाला हो सकता है। उस इनपुट को क्लाइंट-साइड रखना किसी भी सत्यापन कार्य के लिए सही डिफ़ॉल्ट है।
अक्सर पूछे जाने वाले प्रश्न
फ़ाइल हैश की आधिकारिक से तुलना कैसे करें?
हैश उत्पन्न करने के बाद, इसे स्रोत द्वारा प्रकाशित हैश (आमतौर पर डाउनलोड पेज पर) से वर्ण-दर-वर्ण तुलना करें। यदि सभी वर्ण मेल खाते हैं, तो फ़ाइल प्रामाणिक है और भ्रष्ट नहीं है। एक भी अंतर का मतलब है कि फ़ाइल को संशोधित किया गया है।
कौन सा हैश एल्गोरिदम उपयोग करें?
SHA-256 फ़ाइल सत्यापन के लिए मानक है। जो प्रकाशक प्रदान करता है उसका उपयोग करें। यदि आपके पास विकल्प है, तो SHA-256 सुरक्षा/प्रदर्शन का एक अच्छा संतुलन प्रदान करता है।
क्या एक भ्रष्ट फ़ाइल का सही हैश हो सकता है?
यह सैद्धांतिक रूप से संभव है (एक टकराव) लेकिन SHA-256 के साथ सांख्यिकीय रूप से नगण्य है। संभावनाएँ इतनी खगोलीय रूप से कम हैं कि, व्यावहारिक रूप से, समान हैश समान फ़ाइलों की गारंटी देते हैं।
क्या मेरी फ़ाइल किसी सर्वर पर भेजी जाती है?
नहीं। हैश पूरी तरह आपके ब्राउज़र में गणना की जाती है। आपकी फ़ाइल कभी आपके डिवाइस से बाहर नहीं जाती, जो इसे किसी भी प्रकार के दस्तावेज़ के लिए सुरक्षित बनाता है, जिसमें संवेदनशील भी शामिल हैं।
What is the difference between a hash and a digital signature?
A hash proves a file has not changed since the hash was computed; anyone can verify it. A digital signature proves both integrity AND identity, the publisher signs the hash with their private key, and you verify with their public key. Hashes alone do not protect against a hacker who replaced both the file and the published hash on the same compromised mirror.
Why are MD5 and SHA-1 considered insecure?
Researchers have demonstrated practical collision attacks for both. In 2017 Google produced two different PDFs with identical SHA-1 hashes (the SHAttered attack), and MD5 collisions can be generated in seconds on a laptop. For deliberate-tamper detection use SHA-256 or stronger; MD5 and SHA-1 still work for catching accidental corruption but should never be trusted as security boundaries.