हैशकैश

हैशकैश एक प्रूफ-ऑफ-वर्क सिस्टम है जिसका उपयोग ई-मेल स्पैम और सेवा से इनकार करने वाले हमलों को सीमित करने के लिए किया जाता है। हैशकैश को 1997 में एडम बैक द्वारा प्रस्तावित किया गया था और बैक के 2002 के पेपर "हैशकैश - ए डेनियल ऑफ सर्विस काउंटर-मेजर" में इसका अधिक औपचारिक रूप से वर्णन किया गया था।

पृष्ठभूमि
यह विचार "...उपयोगकर्ता को साधारण रूप से कठिन, लेकिन कठिन कार्य की गणना करने की आवश्यकता नहीं है..." का प्रस्ताव सिंथिया डवर्क और मोनी नाओर ने अपने 1992 के पेपर "प्राइसिंग थ्रू प्रोसेसिंग या कॉम्बैटिंग जंक मेल" में किया था।

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

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

तकनीकी विवरण
हेडर लाइन कुछ इस तरह दिखती है:

X-Hashcash: 1:20:1303030600:anni@cypherspace.org::McMybZIhxKXu57jd:ckvi

हेडर में सम्मिलित हैं:


 * वर्सन: हैशकैश प्रारूप संस्करण, 1 (जो संस्करण 0 को प्रतिस्थापित करता है)।
 * बिट्स: हैशेड कोड में "आंशिक प्री-इमेज" (शून्य) बिट्स की संख्या।
 * डेट: वह समय जब संदेश भेजा गया था, प्रारूप YYMMDD[hhmm[ss]] में।
 * रिसोर्स : प्रेषित किया जा रहा संसाधन डेटा स्ट्रिंग, उदाहरण के लिए, आईपी एड्रेस या ईमेल एड्रेस।
 * एक्सटेंशन: एक्सटेंशन (वैकल्पिक; संस्करण 1 में अनदेखा)।
 * रैंड: बेस-64 प्रारूप में एन्कोडेड यादृच्छिक वर्णों की स्ट्रिंग।
 * काउंटर: बाइनरी काउंटर, बेस-64 प्रारूप में एन्कोडेड।

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

सेंडर साइड
सेंडर एक हेडर तैयार करता है और एक यादृच्छिक संख्या में आरंभिक काउंटर मान जोड़ता है। इसके बाद यह हेडर के 160-बिट SHA-1 हैश की गणना करता है। यदि हैश के पहले 20 बिट्स (अर्थात 5 सबसे महत्वपूर्ण हेक्स अंक) सभी शून्य हैं, तो यह एक स्वीकार्य हेडर है। यदि नहीं, तो सेंडर काउंटर बढ़ाता है और हैश का पुनः प्रयास करता है। 2160 संभावित हैश मानों में से 2140 हैश मान हैं जो इस मानदंड को पूरा करते हैं। इस प्रकार बेतरतीब ढंग से एक ऐसे हेडर का चयन करने की संभावना जिसमें हैश की प्रारम्भ के रूप में 20 शून्य होंगे, 220 में 1 (लगभग 106, या दस लाख में से एक)। सेंडर को वैध हैश मान प्राप्त करने के लिए जितनी बार प्रयास करने की आवश्यकता होती है, वह ज्यामितीय वितरण द्वारा निर्धारित किया जाता है। इसलिए सेंडर को वैध हेडर ढूंढने के लिए औसतन 220 मानों का प्रयास करना होगा। हैश की गणना करने के लिए आवश्यक समय के उचित अनुमान को देखते हुए, इसे ढूंढने में लगभग एक सेकंड लगेगा। एक वैध हेडर खोजने के लिए इस पाशविक बल दृष्टिकोण से अधिक कुशल कोई विधि ज्ञात नहीं है।

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

रेसिपिएंट साइड
तकनीकी रूप से सिस्टम को निम्नलिखित चरणों के साथ कार्यान्वित किया जाता है:
 * रेसिपिएंट का कंप्यूटर संपूर्ण स्ट्रिंग के 160-बिट SHA-1 हैश फ़ंक्शन (क्रिप्टोग्राफी) की गणना करता है (उदाहरण के लिए, "1:20:060408:anni@cypherspace.org::1QTjaYd7niiQA/sc:ePa"). 1 गीगाहर्ट्ज़ मशीन पर इसमें लगभग दो माइक्रोसेकंड लगते हैं, जो बाकी ई-मेल प्राप्त होने में लगने वाले समय से बहुत कम समय है। यदि पहले 20 बिट्स सभी शून्य नहीं हैं, तो हैश अमान्य है। (बाद के संस्करणों में मशीन प्रसंस्करण गति बढ़ने पर शून्य होने के लिए अधिक बिट्स की आवश्यकता हो सकती है।)
 * रेसिपिएंट का कंप्यूटर हेडर में तारीख की जांच करता है (उदाहरण के लिए, "060408", जो दिनांक 8 अप्रैल 2006 को दर्शाता है)। यदि यह वर्तमान तिथि से दो दिनों के भीतर नहीं है, तो यह अमान्य है। (दो-दिवसीय विंडो विभिन्न प्रणालियों के बीच घड़ी की गड़बड़ी और नेटवर्क रूटिंग समय की भरपाई करती है।)
 * रेसिपिएंट का कंप्यूटर जाँचता है कि हैश स्ट्रिंग में ई-मेल एड्रेस रेसिपिएंट द्वारा पंजीकृत किसी भी वैध ई-मेल एड्रेस से मेल खाता है या नहीं, या किसी मेलिंग सूची से मेल खाता है जिसकी रेसिपिएंट ने सदस्यता ली है। यदि कोई मिलान नहीं मिलता है, तो हैश स्ट्रिंग अमान्य है।
 * रेसिपिएंट का कंप्यूटर हैश स्ट्रिंग को डेटाबेस में सम्मिलित करता है। यदि स्ट्रिंग पहले से ही डेटाबेस में है (यह दर्शाता है कि हैश स्ट्रिंग का पुन: उपयोग करने का प्रयास किया जा रहा है), तो यह अमान्य है।

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

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

यह पुष्टि करना कि हेडर वैध है, बहुत तेज़ है और इसमें हमेशा समान समय लगता है, चाहे वैध हेडर के लिए कितने शून्य बिट्स की आवश्यकता हो, क्योंकि इसके लिए केवल ही हैशिंग ऑपरेशन की आवश्यकता होती है।

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

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

मेल उपयोगकर्ता एजेंटों और स्पैम फ़िल्टर में हैशकैश को लागू करना भी काफी सरल है। किसी केंद्रीय सर्वर की आवश्यकता नहीं है. हैशकैश को क्रमिक रूप से तैनात किया जा सकता है - अतिरिक्त हैशकैश हेडर को तब नजरअंदाज कर दिया जाता है जब यह उन मेल क्लाइंट द्वारा प्राप्त किया जाता है जो इसे नहीं समझते हैं।

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

इनमें से अधिकांश मुद्दों का समाधान किया जा सकता है। उदाहरण के लिए, बॉटनेट तेजी से समाप्त हो सकते हैं क्योंकि उपयोगकर्ता उच्च सीपीयू लोड को नोटिस करते हैं और जवाबी उपाय करते हैं, और मेलिंग सूची सर्वर को ग्राहकों के होस्ट पर सफेद सूचियों में पंजीकृत किया जा सकता है और इस प्रकार हैशकैश चुनौतियों से राहत मिल सकती है।

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

हैशकैश की तरह, क्रिप्टोकरेंसी अपने प्रूफ-ऑफ-वर्क सिस्टम के रूप में हैश फ़ंक्शन का उपयोग करती है। क्रिप्टोकरेंसी के बढ़ने से एएसआईसी-आधारित खनन मशीनों की मांग उत्पन्न हो गई है। हालाँकि अधिकांश क्रिप्टोकरेंसी SHA-256 हैश फ़ंक्शन का उपयोग करती हैं, उसी एएसआईसी तकनीक का उपयोग हैशकैश सॉल्वर बनाने के लिए किया जा सकता है जो उपभोक्ता सीपीयू की तुलना में परिमाण के तीन ऑर्डर तेज़ हैं, जिससे स्पैमर्स के लिए कम्प्यूटेशनल बाधा कम हो जाती है।

बिटकॉइन माइनिंग
मेल अनुप्रयोगों में हैशकैश के विपरीत, जो दुर्भावनापूर्ण प्रेषकों को रोकने के उद्देश्य से मैन्युअल रूप से काम की मात्रा निर्धारित करने के लिए प्राप्तकर्ताओं पर निर्भर करता है, बिटकॉइन क्रिप्टोक्यूरेंसी नेटवर्क प्रतिस्पर्धी बिटकॉइन खनन को सक्षम करने के लिए अलग हैश-आधारित प्रूफ-ऑफ-वर्क चुनौती को नियोजित करता है। बिटकॉइन खनिक कंप्यूटर प्रोग्राम चलाता है जो नेटवर्क पर उपयोगकर्ताओं से अपुष्ट लेनदेन एकत्र करता है। साथ में, ये "ब्लॉक" बना सकते हैं और खनिक को भुगतान अर्जित कर सकते हैं, लेकिन ब्लॉक नेटवर्क द्वारा केवल तभी स्वीकार किया जाता है यदि उसका हैश नेटवर्क के कठिनाई लक्ष्य को पूरा करता है। इस प्रकार, हैशकैश की तरह, खनिकों को क्रूर बल द्वारा "नॉन्स" की खोज करनी चाहिए, जिसे ब्लॉक में सम्मिलित करने पर, स्वीकार्य हैश प्राप्त होता है।

हैशकैश के विपरीत, बिटकॉइन का कठिनाई लक्ष्य हैश में न्यूनतम संख्या में अग्रणी शून्य निर्दिष्ट नहीं करता है। इसके बजाय, हैश को (बहुत बड़े) पूर्णांक के रूप में व्याख्या किया जाता है, और यह पूर्णांक लक्ष्य पूर्णांक से कम होना चाहिए। यह आवश्यक है क्योंकि बिटकॉइन नेटवर्क को लगातार ब्लॉक के बीच 10 मिनट का औसत समय बनाए रखने के लिए समय-समय पर अपने कठिनाई स्तर को समायोजित करना होगा। यदि केवल अग्रणी शून्य पर विचार किया जाता है, तो कठिनाई को केवल दोगुना या आधा किया जा सकता है, जिससे औसत ब्लॉक समय में छोटे बदलावों के जवाब में समायोजन बहुत अधिक या कम हो सकता है। फिर भी, लक्ष्य में अग्रणी शून्यों की संख्या वर्तमान कठिनाई के एक अच्छे अनुमान के रूप में कार्य करती है। जनवरी 2020 में, ब्लॉक #614525 में 74 अग्र शून्य थे।

स्पैम फ़िल्टर
हैशकैश का उपयोग स्वचालित स्पैम फ़िल्टरिंग सिस्टम के साथ झूठी सकारात्मकता के लिए संभावित समाधान के रूप में किया जाता है, क्योंकि वैध उपयोगकर्ताओं को स्टांप निकालने में लगने वाले अतिरिक्त समय से शायद ही कभी असुविधा होगी। स्पैम ऐसासिन संस्करण 2.70 के बाद से हैशकैश टिकटों की जांच करने में सक्षम है, वैध, अव्ययित हैशकैश टिकटों के लिए ऋणात्मक स्कोर (यानी स्पैम होने की कम संभावना) निर्दिष्ट करता है। हालाँकि, हालाँकि हैशकैश प्लगइन डिफ़ॉल्ट रूप से चालू है, फिर भी इसे एड्रेस पैटर्न की एक सूची के साथ कॉन्फ़िगर करने की आवश्यकता है जो कि उपयोग करने से पहले हैशकैश संसाधन फ़ील्ड के विरुद्ध मेल खाना चाहिए।

ईमेल क्लाइंट
सोर्सफॉर्ज पर पेनी पोस्ट सॉफ्टवेयर प्रोजेक्ट मोज़िला थंडरबर्ड ईमेल क्लाइंट में हैशकैश लागू करता है। इस परियोजना का नाम पारंपरिक मेल सेवाओं की ऐतिहासिक उपलब्धता के लिए रखा गया है, जिसकी लागत प्रेषक को केवल एक पैसा है; इतिहास की ऐसी मेलिंग सेवाओं की जानकारी के लिए पेनी पोस्ट देखें।

ईमेल पोस्टमार्क
माइक्रोसॉफ्ट ने अपने कोऑर्डिनेटेड स्पैम रिडक्शन इनिशिएटिव (सीएसआरआई) के हिस्से के रूप में हैशकैश, ईमेल पोस्टमार्क, के समान और अभी तक असंगत, अब अप्रचलित ओपन स्पेक को डिजाइन और कार्यान्वित किया है। हैशकैश का माइक्रोसॉफ्ट ईमेल पोस्टमार्क वेरिएंट माइक्रोसॉफ्ट मेल इंफ्रास्ट्रक्चर घटकों एक्सचेंज, आउटलुक और हॉटमेल में लागू किया गया है। हैशकैश और माइक्रोसॉफ्ट के ईमेल पोस्टमार्क के बीच प्रारूप अंतर यह है कि पोस्टमार्क प्राप्तकर्ता के अलावा मुख्य भाग को हैश करता है, और हैश फ़ंक्शन के रूप में संशोधित एसएचए-1 का उपयोग करता है और कार्य भिन्नता के प्रमाण को कम करने के लिए कई उप-पहेलियों का उपयोग करता है।

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

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

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

आरएसए ने आरएफसी के संदर्भ में क्लाइंट-पहेलियों के बारे में आईईटीएफ को आईपीआर विवरण दिया है, जिसमें क्लाइंट-पहेलियों (हैशकैश नहीं) का वर्णन किया गया है। आरएफसी ने शीर्षक में हैशकैश को सम्मिलित किया है और हैशकैश को संदर्भित किया है, लेकिन इसमें वर्णित तंत्र एक ज्ञात-समाधान इंटरैक्टिव चुनौती है जो क्लाइंट-पहेलियों के समान है; हैशकैश नॉन-इंटरैक्टिव है और इसलिए इसका कोई ज्ञात समाधान नहीं है। किसी भी स्थिति में आरएसए का आईपीआर विवरण हैशकैश पर लागू नहीं हो सकता क्योंकि हैशकैश क्लाइंट-पहेलियाँ प्रकाशन (फरवरी 1999) और क्लाइंट-पहेलियाँ पेटेंट फाइलिंग यूएस7197639 (फरवरी 2000) से पहले का है।

यह भी देखें

 * पेनी ब्लैक (अनुसंधान परियोजना)

संदर्भ

 * Adam Back, "Hashcash - A Denial of Service Counter-Measure", technical report, August 2002 (PDF).
 * Ben Laurie and Richard Clayton, "'Proof-of-Work' Proves Not to Work", WEIS 04. (PDF).
 * Dwork, C. and Naor, M. (1992) "Pricing via Processing or Combating Junk Mail", Crypto '92, pp. 139–147. (PDF)

बाहरी संबंध

 * Hashcash homepage
 * Beat spam using hashcash David Mertz's article on hashcash, its applications and an implementation in Python
 * RSA IPR note to the IETF about hashcash (2004)