कल्पना करें कि आप किसी भी डेटा को ले सकते हैं — एक शब्द, एक उपन्यास, एक 4 GB वीडियो — और इसे एक छोटी, निश्चित-लंबाई वाली अक्षरों की श्रृंखला में बदल सकते हैं जो इसे विशिष्ट रूप से पहचानती है। मूल में एक कॉमा बदलें और श्रृंखला पूरी तरह बदल जाती है। और मूल डेटा को पुनर्प्राप्त करने के लिए प्रक्रिया को उलटने का कोई तरीका नहीं है।
यही क्रिप्टोग्राफ़िक हैश फ़ंक्शन करता है। यह आधुनिक सुरक्षा के सबसे मौलिक बिल्डिंग ब्लॉक्स में से एक है, और यह चुपचाप आपके ऑनलाइन लगभग सभी कार्यों की सुरक्षा करता है।
फ़िंगरप्रिंट रूपक
हैश एक डिजिटल फ़िंगरप्रिंट की तरह काम करता है। आपका फ़िंगरप्रिंट आपको विशिष्ट रूप से पहचानता है, लेकिन कोई इससे आपका चेहरा पुनर्निर्मित नहीं कर सकता। इसी तरह, एक क्रिप्टोग्राफ़िक हैश डेटा के एक टुकड़े को विशिष्ट रूप से पहचानता है बिना यह प्रकट किए कि वह डेटा क्या है।
किसी भी इनपुट को हैश फ़ंक्शन में डालें और आपको एक डाइजेस्ट (जिसे हैश वैल्यू या चेकसम भी कहते हैं) मिलता है — हेक्साडेसिमल अक्षरों की एक निश्चित-लंबाई वाली श्रृंखला। SHA-256, सबसे सामान्य एल्गोरिदम में से एक, इनपुट आकार की परवाह किए बिना हमेशा 64 अक्षरों का आउटपुट देता है।
| इनपुट | SHA-256 डाइजेस्ट (पहले 16 अक्षर) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| पूरा विकिपीडिया डंप | (फिर भी 64 अक्षर) |
चार आवश्यक गुण
एक फ़ंक्शन क्रिप्टोग्राफ़िक हैश तभी कहलाता है जब वह इन गुणों को पूरा करे:
- नियतात्मक (Deterministic)। समान इनपुट हमेशा समान आउटपुट देता है, किसी भी मशीन पर, किसी भी समय।
- एकतरफ़ा (Pre-image resistance)। हैश दिए जाने पर, मूल इनपुट खोजना गणनात्मक रूप से अव्यावहारिक है। आप डेटा को "अन-हैश" नहीं कर सकते।
- टक्कर-प्रतिरोधी (Collision-resistant)। दो अलग-अलग इनपुट खोजना जो समान डाइजेस्ट उत्पन्न करें, व्यावहारिक रूप से असंभव है। SHA-256 के लिए, आकस्मिक टक्कर की संभावना लगभग 2^128 में 1 है — प्रेक्षित ब्रह्मांड में परमाणुओं से बड़ी संख्या।
- हिमस्खलन प्रभाव (Avalanche effect)। इनपुट में एक बिट बदलने से आउटपुट में लगभग आधे बिट बदल जाते हैं। समान इनपुट के बीच कोई पहचानने योग्य पैटर्न या संबंध नहीं है।
महत्वपूर्ण अंतर: हैशिंग एन्क्रिप्शन नहीं है। एन्क्रिप्शन कुंजी से उलट किया जा सकता है; हैशिंग जानबूझकर अपरिवर्तनीय है। आप डेटा को ट्रांज़िट में सुरक्षित करने के लिए एन्क्रिप्ट करते हैं। और इसकी अखंडता सत्यापित करने या मूल रखे बिना प्रमाण संग्रहीत करने के लिए हैश करते हैं।
सामान्य हैश एल्गोरिदम
MD5 (1991)
- आउटपुट: 128 बिट (32 हेक्स अक्षर)
- स्थिति: क्रिप्टोग्राफ़िक रूप से टूटा हुआ। शोधकर्ता लैपटॉप पर सेकंड में टक्कर उत्पन्न कर सकते हैं।
- अभी भी दिखता है: फ़ाइल डाउनलोड और पुरानी प्रणालियों के लिए गैर-सुरक्षा चेकसम में।
SHA-1 (1995)
- आउटपुट: 160 बिट (40 हेक्स अक्षर)
- स्थिति: सुरक्षा के लिए अप्रचलित। Google ने 2017 में व्यावहारिक टक्कर प्रदर्शित की ("SHAttered" हमला)।
- अभी भी दिखता है: पुराने Git रिपॉज़िटरी, कुछ पुराने प्रमाणपत्र।
SHA-256 (2001)
- आउटपुट: 256 बिट (64 हेक्स अक्षर)
- स्थिति: वर्तमान मानक। कोई ज्ञात व्यावहारिक हमले नहीं।
- उपयोग: TLS प्रमाणपत्र, Bitcoin, पासवर्ड हैशिंग, डिजिटल हस्ताक्षर, फ़ाइल अखंडता सत्यापन।
SHA-3 (2015)
- आउटपुट: चर (आमतौर पर 256 बिट)
- स्थिति: नवीनतम मानक, SHA-2 परिवार से पूरी तरह अलग आंतरिक डिज़ाइन (Keccak स्पंज कंस्ट्रक्शन) पर आधारित।
- उपयोग: भविष्योन्मुखी प्रणालियाँ, Ethereum, एल्गोरिदम विविधता की आवश्यकता वाली स्थितियाँ।
| एल्गोरिदम | आउटपुट आकार | सुरक्षित? | गति |
|---|---|---|---|
| MD5 | 128 बिट | नहीं | बहुत तेज़ |
| SHA-1 | 160 बिट | नहीं | तेज़ |
| SHA-256 | 256 बिट | हाँ | मध्यम |
| SHA-3-256 | 256 बिट | हाँ | मध्यम |
क्रिप्टोग्राफ़िक हैशिंग का उपयोग कहाँ होता है
पासवर्ड स्टोरेज
जब आप अकाउंट बनाते हैं, तो सही ढंग से डिज़ाइन किया गया सिस्टम आपका पासवर्ड कभी सादे टेक्स्ट में संग्रहीत नहीं करता। यह हैश संग्रहीत करता है। जब आप लॉग इन करते हैं, सिस्टम आपके द्वारा टाइप किए गए को हैश करता है और संग्रहीत मूल्य से तुलना करता है। भले ही डेटाबेस का उल्लंघन हो, हमलावरों को हैश मिलते हैं — पासवर्ड नहीं।
आधुनिक सिस्टम यादृच्छिक सॉल्ट (हैशिंग से पहले जोड़ा गया अतिरिक्त डेटा) जोड़कर और जानबूझकर धीमे एल्गोरिदम जैसे bcrypt, scrypt, या Argon2 का उपयोग करके ब्रूट-फ़ोर्स अनुमान को अव्यावहारिक बनाते हैं।
फ़ाइल अखंडता सत्यापन
सॉफ़्टवेयर वितरक अपने डाउनलोड के साथ SHA-256 चेकसम प्रकाशित करते हैं। डाउनलोड के बाद, आप अपनी मशीन पर फ़ाइल का हैश गणना करते हैं और तुलना करते हैं। मिलान साबित करता है कि फ़ाइल ट्रांज़िट में दूषित या छेड़छाड़ नहीं हुई।
डिजिटल हस्ताक्षर
जब आप किसी दस्तावेज़ पर डिजिटल हस्ताक्षर करते हैं, सिस्टम पहले दस्तावेज़ को हैश करता है, फिर आपकी निजी कुंजी से हैश को एन्क्रिप्ट करता है। प्राप्तकर्ता इसे आपकी सार्वजनिक कुंजी से डिक्रिप्ट करता है और दस्तावेज़ के अपने हैश से तुलना करता है। यह पूरे दस्तावेज़ को एन्क्रिप्ट करने से कहीं अधिक कुशल है और लेखकत्व और अखंडता दोनों साबित करता है।
ब्लॉकचेन
ब्लॉकचेन में प्रत्येक ब्लॉक में पिछले ब्लॉक का हैश होता है, जो एक अपरिवर्तनीय श्रृंखला बनाता है। किसी भी पिछले लेनदेन को बदलने से उसके ब्लॉक का हैश बदल जाता है, जो उस बिंदु से आगे की श्रृंखला तोड़ देता है, जिससे छेड़छाड़ तुरंत दिखाई देती है।
MD5 और SHA-1 को टूटा हुआ क्यों माना जाता है
हैश एल्गोरिदम "टूटा" तब माना जाता है जब कोई जानबूझकर दो अलग-अलग इनपुट बना सकता है जो समान हैश उत्पन्न करते हैं (टक्कर)। यह विशिष्टता पर निर्भर हर उपयोग को कमज़ोर करता है।
- MD5: टक्कर सेकंड में उत्पन्न की जा सकती हैं। शोधकर्ताओं ने समान MD5 हैश वाली दो अलग PDF फ़ाइलें बनाई हैं।
- SHA-1: 2017 में SHAttered हमले ने समान SHA-1 हैश वाली दो अलग PDFs बनाईं, जिसके लिए लगभग 6,500 वर्षों की सिंगल-CPU गणना ज़रूरी थी (क्लाउड संसाधनों से संभव)।
व्यावहारिक नियम: सुरक्षा-संबंधित किसी भी चीज़ के लिए कभी MD5 या SHA-1 का उपयोग न करें — पासवर्ड, प्रमाणपत्र, डिजिटल हस्ताक्षर, या अखंडता जाँच जहाँ कोई विरोधी शामिल हो सकता है। इसकी जगह SHA-256 या SHA-3 उपयोग करें।
आगे पढ़ें
हैशिंग उन अवधारणाओं में से एक है जो प्रयोग करने पर सहज हो जाती है। एक वाक्य हैश करने का प्रयास करें, फिर एक अक्षर बदलें और हिमस्खलन प्रभाव स्वयं देखें।
- हैश कैसे उत्पन्न और सत्यापित करें — चरण-दर-चरण ट्यूटोरियल
- हैश जनरेटर — अपने ब्राउज़र में तुरंत SHA-256, MD5, SHA-512, और अधिक की गणना करें
- हैश आइडेंटिफ़ायर — अज्ञात हैश पेस्ट करें और इसके एल्गोरिदम की पहचान करें
