हैशकैश

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

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

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

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

तकनीकी विवरण
हेडर लाइन कुछ इस तरह दिखती है: एक्स-हैशकैश: 1:20:1303030600:anni@cypherspace.org::McMybZIhxKXu57jd:ckvi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

आरएसए ने क्लाइंट-पहेलियों के बारे में आईईटीएफ को आईपीआर विवरण दिया है RFC के संदर्भ में जिसमें क्लाइंट-पहेलियाँ (हैशकैश नहीं) का वर्णन किया गया है। आरएफसी ने शीर्षक में हैशकैश को शामिल किया और हैशकैश को संदर्भित किया, लेकिन इसमें वर्णित तंत्र एक ज्ञात-समाधान इंटरैक्टिव चुनौती है जो क्लाइंट-पहेलियाँ के समान है; हैशकैश गैर-संवादात्मक है और इसलिए इसका कोई ज्ञात समाधान नहीं है। किसी भी स्थिति में आरएसए का आईपीआर विवरण हैशकैश पर लागू नहीं हो सकता क्योंकि हैशकैश पहले से मौजूद है (मार्च 1997) क्लाइंट-पहेलियाँ प्रकाशन (फरवरी 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)