क्रिप्टोग्राफिक हैश फंक्शन (Cryptographic Hash Function) क्रिप्टोग्राफी में उपयोग किया जाने वाला एक संख्यात्मक फंक्शन है। एक क्रिप्टोग्राफिक हैश फंक्शन हैश फंक्शन की संदेश-पासिंग क्षमताओं को सुरक्षा सुविधाओं के साथ एकीकृत करता है।
परिभाषा
- हैश फंक्शन शब्द का उपयोग कंप्यूटर विज्ञान में काफी समय से किया जाता है और इसे एक ऐसे फंक्शन के रूप में परिभाषित किया जाता है जो मनमाने इनपुट की स्ट्रिंग को निश्चित लंबाई की स्ट्रिंग में संपीड़ित करता है।
- हालांकि, यदि यह कुछ और आवश्यकताओं को पूरा करता है, तो इसे क्रिप्टोग्राफिक अनुप्रयोगों के लिए उपयोग किया जा सकता है और फिर इसे क्रिप्टोग्राफिक हैश फंक्शन कहा जाता है।
महत्व
क्रिप्टोग्राफिक हैश फंक्शन क्रिप्टोग्राफी के क्षेत्र में सबसे आवश्यक उपकरण हैं और प्रामाणिकता, डिजिटल हस्ताक्षर, छद्म संख्या उत्पादन, डिजिटल स्टेगनोग्राफी, डिजिटल टाइम स्टैम्पिंग आदि जैसे कई सुरक्षा उद्देश्यों को प्रबंधित करने के लिए उपयोग किए जाते हैं।
गणितीय परिभाषा
- एक हैश फंक्शन एक फंक्शन है जो किसी भी लंबाई के कुछ संदेश को इनपुट के रूप में लेता है और इसे हैश वैल्यू (Hash Value), मैसेज डाइजेस्ट (Message Digest), चेकसम (Checksum), या डिजिटल फिंगरप्रिंट (Digital Fingerprint) के रूप में जाना जाने वाला निश्चित-लंबाई आउटपुट में बदल देता है।
- एक हैश फंक्शन f: D → R है, जहां डोमेन D = {0, 1}*, जो परिभाषित करता है कि डोमेन के तत्वों में परिवर्तनीय लंबाई के बाइनरी स्ट्रिंग शामिल हैं; और रेंज R = {0, 1}ⁿ कुछ n ≥ 1 के लिए, जो परिभाषित करता है कि रेंज के तत्व निश्चित-लंबाई के बाइनरी स्ट्रिंग हैं।
- इसलिए, f एक फंक्शन है जो किसी भी आकार के संदेश M को इनपुट के रूप में लेता है और आकार n के निश्चित-लंबाई हैश परिणाम h को उत्पन्न करता है।
कम्प्रेशन फंक्शन
एक हैश फंक्शन f को कम्प्रेशन फंक्शन (Compression Function) के रूप में परिभाषित किया जाता है जब इसका डोमेन D परिमित होता है, यानी यदि फंक्शन f निश्चित-लंबाई संदेश को इनपुट के रूप में लेता है और एक छोटा निश्चित-लंबाई आउटपुट बनाता है।
क्रिप्टोग्राफिक हैश फंक्शन के गुण
- किसी भी दिए गए डेटा के लिए हैश की गणना करना अत्यंत सरल है।
- इसे किसी भी आकार के सूचना ब्लॉक को इनपुट के रूप में स्वीकार करना चाहिए।
- इसे निश्चित-लंबाई आउटपुट बनाना चाहिए।
- इसे डिटरमिनिस्टिक और कुशलतापूर्वक पुनरुत्पादन योग्य होने के दौरान रैंडम फंक्शन की तरह व्यवहार करना चाहिए।
- इसे किसी भी लंबाई का इनपुट लेना चाहिए, और निश्चित लंबाई की एक रैंडम स्ट्रिंग आउटपुट करनी चाहिए।
- समान इनपुट के लिए, H को लगातार समान आउटपुट बनाना चाहिए।
- यदि संदेश M दिया जाता है, तो इसके संबंधित डाइजेस्ट h की गणना करना सरल होना चाहिए; जहां h को बहुपद समय O(n) में गणना किया जा सकता है जहां n इनपुट संदेश की लंबाई है।
- प्री-इमेज रेजिस्टेंस (Pre-image Resistance): दिए गए मैसेज डाइजेस्ट h को देखते हुए, M को खोजना कम्प्यूटेशनली जटिल है जैसे कि H(M) = h। यानी दिए गए हैश मान से संदेश ढूंढना लागू नहीं है।
- सेकेंड प्री-इमेज रेजिस्टेंस (Second Pre-image Resistance / Weak Collision Resistance): दिए गए संदेश M1 को देखते हुए, M2 ≠ M1 जैसे कि H(M1) = H(M2) के साथ एक और संदेश M2 खोजना कम्प्यूटेशनली असंभव है।
- स्ट्रॉन्ग कोलिजन रेजिस्टेंस (Strong Collision Resistance): किसी भी विशिष्ट संदेशों के सेट (M1, M2) को खोजना कम्प्यूटेशनली असंभव है जैसे कि H(M1) = H(M2)।