क्या वास्तव में निजता के लिए समान लेनदेन की आवश्यकता है? भाग एक: कैशफ़्यूज़न
हालांकि सातोशी नाकामोटो की सफ़ेद कागज सुझाव है कि गोपनीयता बिटकॉइन प्रोटोकॉल का एक डिज़ाइन लक्ष्य था, ब्लॉकचेन विश्लेषण अक्सर उपयोगकर्ताओं की गोपनीयता को तोड़ सकता है। यह एक समस्या है। बिटकॉइन उपयोगकर्ता शायद यह जानना नहीं चाहते हैं कि दुनिया उनके पैसे कहाँ खर्च करती है, वे क्या कमाते हैं या कितना उनके पास है, जबकि व्यवसाय प्रतिस्पर्धियों को लेनदेन का विवरण लीक नहीं करना चाहते हैं – कुछ उदाहरणों के नाम.
लेकिन CoinJoin की तरह प्राइवेसी फिर से हासिल करने के उपाय मौजूद हैं। आज उपलब्ध कुछ सबसे लोकप्रिय मिक्सिंग समाधान इस ट्रिक का उपयोग करते हैं, जिसमें वासाबी वॉलेट (जो ज़ीरोलिंक का लाभ उठाता है) और समुराई वॉलेट (जो व्हर्लपूल का लाभ उठाता है) शामिल हैं। दोनों ही मामलों में, उपयोगकर्ता अपने सिक्कों को एक दूसरे के साथ मिलाने के लिए समान मात्रा में काटते हैं। मिश्रण को प्रभावी बनाने के लिए समान मात्रा का उपयोग करना एक महत्वपूर्ण कदम माना जाता है.
हालांकि, एक नया मिश्रण प्रोटोकॉल कहा जाता है कैशफ्यूजन, बिटकॉइन कैश नेटवर्क के विकास में, इस धारणा को चुनौती देता है। प्रोटोकॉल के पीछे डेवलपर्स का दावा है कि कैशफ्यूजन CoinJoins के माध्यम से केवल समान मात्रा में मिश्रण करने की आवश्यकता के बिना गोपनीयता प्रदान करता है। अगर यह सच है, तो यह काफी बदल सकता है कि हम बिटकॉइन में गोपनीयता के बारे में कैसे सोचते हैं.
यदि सत्य हैं…
कॉइनजॉइन
शुरुआत में चलो। (या इस भाग को छोड़ दें यदि आप जानते हैं कि CoinJoin क्या है।)
एक विशिष्ट बिटकॉइन लेनदेन में एक या कई इनपुट होते हैं (मूल रूप से पते के सिक्के कहां से भेजे जाते हैं) और एक या कई आउटपुट (मूल रूप से पते के सिक्के भेजे जाते हैं)। यदि लेन-देन में एक से अधिक इनपुट होते हैं, तो यह आमतौर पर होता है क्योंकि प्रेषक ने आवश्यक सिक्कों को प्राप्त करने के लिए अपने सिक्कों (UTXOs) के कई हिस्सों का उपयोग किया है। यदि लेन-देन में एक से अधिक आउटपुट हैं, तो यह आमतौर पर होता है क्योंकि कई लोगों को एक बार (एक बैच किए गए लेनदेन) और / या भुगतानकर्ता को अपने स्वयं के पते में से एक के रूप में पैसा वापस भेजा जा रहा है क्योंकि परिवर्तन (क्योंकि चूजों को जोड़ा नहीं गया था सही सही राशि के लिए; यह अक्सर मामला है).
दुर्भाग्य से, एक विशिष्ट लेनदेन जैसा कि यहां बताया गया है, बहुत कुछ बताता है। उदाहरण के लिए, यह निष्कर्ष निकालना आसान है कि सभी इनपुट पते एक ही व्यक्ति के हैं, जो पता क्लस्टरिंग के लिए अनुमति देता है। लेन-देन से यह भी पता चलता है कि ब्लॉकचेन के ऊपर सिक्कों के निशान को प्रकट करते हुए किन पते से सिक्के चल रहे हैं। अधिक (सूक्ष्म) संकेत हो सकते हैं, और सभी गोपनीयता के लिए खराब हैं.
इस समस्या का एक संभावित समाधान, पहले प्रस्तावित 2013 में बिटकॉइन कोर के योगदानकर्ता ग्रेगरी मैक्सवेल को सिक्काजॉइन कहा जाता है। CoinJoin के पीछे का विचार सरल है: कई स्वतंत्र लेनदेन एक बड़े लेनदेन में विलय हो जाते हैं। इसलिए यदि दो लेनदेन में दो इनपुट और दो आउटपुट हैं, तो यह एक एकल लेनदेन में संयुक्त है जिसमें चार इनपुट और चार आउटपुट हैं। यह कम से कम इस धारणा को तोड़ता है कि सभी इनपुट पते एक ही व्यक्ति के हैं और सिक्कों के निशान को भी तोड़ने में मदद कर सकते हैं.
क्यों समान है
आमतौर पर यह माना जाता है कि जैसा कि ऊपर बताया गया है कि CoinJoin की गोपनीयता लाभ सीमित होगी। कई मामलों में, इनपुट में भेजी गई राशि और आउटपुट में प्राप्त मात्रा को एक साथ मिलाया जा सकता है, यह पता लगाने के लिए कि व्यक्तिगत लेनदेन संयुक्त CoinJoin लेनदेन में गया था।.
उदाहरण के लिए, दो लेन-देन करें, एक ऐलिस से कैरोल और एक बॉब से डेव तक। ऐलिस के पास 2.3 और 1.4 बिटकॉइन के दो सिक्के हैं, और वह कैरोल 3.2 बिटकॉइन का भुगतान करना चाहती है। बॉब के पास 3 और 2 बिटकॉइन की मात्रा है, और डेव 4 बिटकॉइन का भुगतान करना चाहता है.
सरलीकृत, ये लेनदेन इस तरह दिखते हैं:
2.3 + 1.4 = 3.2 + 0.5
तथा
3 + 2 = 4 + 1
(0.5 बीटीसी और 1 बीटीसी आउटपुट परिवर्तन हैं।)
एक साथ विलय, CoinJoin लेनदेन ऐसा लगेगा:
3 + 2.3 + 2 + 1.4 = 4 + 3.2 + 1 + 0.5
हालाँकि, लेन-देन को विलय कर दिया गया था, लेकिन यह रिडिजाइन करने के लिए तुच्छ था कि कौन सा इनपुट भुगतान करता है जो आउटपुट देता है, और इसलिए, यह भी कि एक ही प्रेषक से संबंधित इनपुट को एक साथ मिलान किया जा सकता है। यह मानते हुए कि दो भुगतानकर्ता हैं, राशियों को केवल एक संभावित कॉन्फ़िगरेशन: मूल लेनदेन के साथ मिलकर हैरान किया जा सकता है.
इस कारण से, ज़ीरोलिंक और व्हर्लपूल जैसे लोकप्रिय मिश्रण समाधान समान मात्रा में मिश्रण करने के लिए सीमित हैं। कोई फर्क नहीं पड़ता कि इनपुट के रूप में कितनी मात्रा में मिश्रण में डाला जाता है, मिश्रित आउटपुट एक दूसरे से अप्रभेद्य होते हैं, जिसका अर्थ है कि किसी भी प्रतिभागी को सिक्के का कोई निश्चित आकार का हिस्सा मिल सकता है।.
यदि निर्धारित मात्रा 1 BTC, ऐलिस, बॉब, कैरल और डेव के CoinJoin पर सेट की जाती है, तो ऐसा दिखेगा:
3 + 2.3 + 2 + 1.4 = 1 + 1 + 1 + 1 +1 + 1 + 1 + 1 + 0.5 + 0.2
यह एक बड़ा सुधार है, क्योंकि 1 के किसी भी अंश को दोनों मूल लेनदेन में से एक में वापस मिलाया जा सकता है। यह स्पष्ट नहीं है कि 1 में से कौन सा बीटीसी एलिस, बॉब, कैरल या डेव या यहां तक कि किस जोड़ी से संबंधित है.
हालाँकि, यह अभी भी सही नहीं है, क्योंकि असमान आउटपुट बाकी हैं। ये आउटपुट, वास्तव में क्योंकि उनके पास समान मात्रा नहीं है, फिर भी उन्हें विशिष्ट इनपुट्स से जोड़ा जा सकता है: ऐलिस। इसका अर्थ यह भी है कि ऐलिस के इनपुट को एक दूसरे से जोड़ा जा सकता है। और अगर, कई मिश्रणों के बाद, कोई अगले लेनदेन में असमान आउटपुट को जोड़ता है, जो गोपनीयता को नुकसान पहुंचाता है, तो: यह एक ही व्यक्ति को अलग-अलग हिस्सा जोड़ता है। इसके अलावा, अगर असमान आउटपुट को बाद में निश्चित-राशि के आउटपुट के साथ संयोजन में उपयोग किया जाता है, तो ये लीक्स प्रारंभिक मिश्रण प्रक्रिया को ही बर्बाद कर सकते हैं.
कैशफ्यूजन
कैशफ्यूजन, बिटकॉइन कैश डेवलपर्स मार्क लंडबर्ग और जोनल फ्युकबॉल द्वारा एक परियोजना, “बचे हुए” आउटपुट समस्या से निपटने के लिए निर्धारित की गई है। उन्होंने शुरुआत में इसे एक अतिरिक्त के रूप में बनाया कैशशफल, जो Bitcoin Cash के लिए CoinShuffle का कार्यान्वयन है, और समान मात्रा में मिलाता है। कैशफ्यूजन की कुछ हद तक आश्चर्यजनक क्षमता का मतलब यह भी हो सकता है कि यह स्वयं का स्टैंडअलोन मिक्सिंग प्रोटोकॉल बन जाता है.
इस क्षमता को समझने के लिए, लेन-देन के दूसरे सेट पर नज़र डालते हैं। बता दें कि एलिस कैरोल 4 के सिक्कों का भुगतान करना चाहती है, और उसके पास 2 और 3 सिक्कों के दो यूटीएक्सओ हैं। इस बीच, बॉब डेव 9 सिक्कों का भुगतान करना चाहता है, और उसके पास 7 और 8 सिक्कों के दो यूटीएक्सओ हैं.
सरलीकृत, ये लेनदेन इस तरह दिखते हैं:
3 + 2 = 4 + 1
तथा
8 + 7 = 9 + 6
एक साथ विलय, CoinJoin लेनदेन ऐसा लगेगा:
8 + 7 + 3 + 2 = 9 + 6 + 4 + 1
अब, इस CoinJoin लेनदेन से, मूल दो लेनदेन को एक साथ करना संभव है, बेशक। हालांकि, भले ही आपको पता हो कि दो भुगतानकर्ता हैं, कई अन्य संयोजन भी संभव हैं.
उदाहरण के लिए:
8 + 2 = 9 + 1
तथा
7 + 3 = 6 + 4
या:
8 + 2 = 6 + 4
तथा
7 + 3 = 9 + 1
या:
7 + 2 = 9
तथा
8 + 3 = 6 + 4 + 1
या:
7 = 6 + 1
तथा
8 + 3 + 2 = 9 + 4
सादगी के लिए, इस उदाहरण ने केवल गोल संख्याओं का उपयोग किया। यह अधिक संभावित कॉन्फ़िगरेशन को संभव बनाता है लेकिन वास्तव में वास्तविकता को बहुत बार प्रतिबिंबित नहीं करेगा। फ्लिपसाइड पर, इस सरलीकृत उदाहरण ने केवल दो मूल लेनदेन का उपयोग किया। वास्तव में, एक CoinJoin में दर्जनों या सैकड़ों मूल लेनदेन शामिल हो सकते हैं। इसलिए सरलीकृत करते समय, यह सरलीकरण दोनों कई विन्यास बनाने की क्षमता में मदद करता है और हानि पहुँचाता है.
कैशफ्यूजन सिद्धांत के आसपास बनाया गया है, के क्षेत्र से व्युत्पन्न है साहचर्य, एक बड़ा पर्याप्त CoinJoin लेनदेन अक्सर (यदि हमेशा नहीं होता) पहेली के कई अलग-अलग समाधान पेश करता है, तब भी जब यथार्थवादी मात्रा का उपयोग किया जाता है। और, चूंकि अधिक इनपुट और आउटपुट शामिल हैं, इसलिए अधिक संभावित कॉन्फ़िगरेशन इससे प्राप्त किए जा सकते हैं। (यह विशेष रूप से सच होना चाहिए अगर मात्रा एक ही बॉलपार्क में हो – जैसे 1 बीसीएच – जिसे कैशफ्यूजन उपयोगकर्ताओं को अपनी गोपनीयता की खातिर करने के लिए प्रोत्साहित किया जाता है।)
चूंकि पहेली के अधिक संभावित समाधान हैं, एक ब्लॉकचेन विश्लेषक के पास एक कठिन समय होगा जो यह पता लगाएगा कि कौन सा समाधान मूल कॉन्फ़िगरेशन था। यह सिक्कों के निशान को तोड़ना चाहिए और इनपुट को एक साथ जोड़ना कठिन बना सकता है। जैसे, यह गोपनीयता की पेशकश करनी चाहिए.
इस क्षमता को बेहतर बनाने के लिए, कैशफ्यूज़न में मूल कॉन्फ़िगरेशन को एक साथ जोड़ने के लिए इसे और भी कठिन बनाने के लिए एक अतिरिक्त ट्रिक शामिल है: यह उपयोगकर्ताओं को अर्ध-यादृच्छिक रूप से अपने आउटपुट को कई छोटे आउटपुट में काट देता है। इसलिए ऐलिस के बजाय 4 सिक्कों के एक आउटपुट कैरोल का भुगतान करते हुए, ऐलिस उदाहरण के लिए, 3 और 1 के सिक्के के कैरोल आउटपुट भेज सकता है। बॉब 9 सिक्कों के एक आउटपुट का भुगतान करने के बजाय, 5, 3 और 1 सिक्के के डेव आउटपुट भेज सकता है.
इस बीच, उपयोगकर्ताओं को कई इनपुट प्रदान करने के लिए प्रोत्साहित किया जाता है, शायद पिछले मिक्स से। यह उन्हें ब्लॉकचेन पर स्पष्ट होने के बिना, उनके छोटे विखंडू को एक बड़े चंक में समेकित करने की अनुमति देता है। (ऐलिस, उदाहरण के लिए, 2 + 2 + 1 के इनपुट प्रदान करेगा; बॉब 6 + 5 + 4 के इनपुट प्रदान करेगा।) वास्तव में, असमान बचे हुए विखंडू को बड़े आउटपुट में समेकित करना मूल विचार था और प्रोटोकॉल के मूल के रूप में कार्य करता है नाम: कैशफ्यूजन.
लेकिन क्या मान लिया गया है?
यदि आप इसे अंतिम निष्कर्ष की तलाश में पढ़ते हैं, तो आपको निराश करने के लिए: यह लेख इस सवाल का कोई निश्चित जवाब नहीं देगा कि क्या कैशफ्यूज़न की धारणाएं पकड़ में हैं या नहीं, या किस हद तक। ऐसा लगता है कि अभी कोई निश्चित उत्तर नहीं है। प्रस्ताव अब तक अपेक्षाकृत कम सहकर्मी समीक्षा के माध्यम से चला गया है, और जबकि कैशफ्यूजन के पीछे डेवलपर्स का मानना है कि उनका समाधान पर्याप्त गोपनीयता प्रदान करता है, दूसरों को थोड़ा अधिक संदेह दिखाई देता है.
इसके चेहरे पर, कैशफ्यूज़न का दृष्टिकोण गुमराह करने वाला लगता है, क्योंकि ब्लॉकचेन के शेयरधारक जैसी पहले की असमान राशि मिश्रण योजनाएँ थीं टूटा हुआ बहुत साल पहले। लेकिन महत्वपूर्ण अंतर, Lundeberg और Fyookball का मानना है कि, एक CashFusion लेनदेन में SharedCoin लेनदेन की तुलना में अधिक इनपुट और आउटपुट शामिल होंगे। अन्य nonintuitive गणितीय quirks के समान जन्मदिन की समस्या, संभावित कॉन्फ़िगरेशन की संख्या प्रत्येक जोड़े गए इनपुट और आउटपुट के लिए तेजी से बढ़ती है, समस्या को हल करना SharedCoin के पास था – हालांकि Lundeberg बेहतर गणित के प्रमाणों से सहमत हैं कि इसे ठीक से पुष्टि करने के लिए आवश्यक होगा.
कैशफ्यूजन विवरण में वही शामिल होता है जो लुंडेबर्ग स्वयं “नैपकिन गणित” पर विचार करता है, जिसमें से थोड़ा अधिक संस्करण भी था प्रकाशित उसके द्वारा रेडिट पर। ये अनुमान बताते हैं कि केवल 10 प्रतिभागियों के साथ, प्रत्येक को 10 आउटपुट प्रदान करने के लिए एक आउटपुट में समेकित किया जाना चाहिए (कुल 100 इनपुट और 10 आउटपुट के लिए), संभव कॉन्फ़िगरेशन की संख्या, औसतन, 100 क्विंटल की सीमा में होगी। (यह बीस शून्य के साथ एक है, या 10 ^ 20।) यहां तक कि इन सभी संभावनाओं की गणना करने में भी काफी समय लगेगा – मूल लेनदेन को सही तरीके से पुनर्स्थापित करना.
इस लेख को लिखने के समय, अधिक शोध जारी है; Fyookball ने हाल ही में अपना खुद का विश्लेषण प्रकाशित किया है इस ब्लॉग पोस्ट. अभी के लिए, Lundeberg, Fyookball और अन्य लोग कम से कम पर्याप्त रूप से कैशफ्यूजन प्रोटोकॉल के बारे में आश्वस्त हैं ताकि इसे तैनात करना चाहते हैं। कैशफ़्यूज़न सॉफ़्टवेयर का एक अल्फा क्लाइंट परीक्षण के लिए उपलब्ध है; महीनों के भीतर पूर्ण रिलीज की उम्मीद है.
लेकिन अन्य लोग आश्वस्त नहीं हैं। प्रस्ताव की एक आलोचना यह है कि – भले ही 10 ^ 20 नंबर (मोटे तौर पर) हो – कैशफ्यूज़न कॉइनजॉय का हर आउटपुट हर इनपुट से समान रूप से आने की संभावना नहीं होगी। दूसरे शब्दों में, जबकि कुछ प्रतिभागी महत्वपूर्ण गोपनीयता प्राप्त कर सकते हैं, अन्य एक ही मिश्रण से बहुत कम गोपनीयता प्राप्त कर सकते हैं। और किसी भी व्यक्तिगत उपयोगकर्ता के लिए, यह बताना मुश्किल होगा कि वे बहुत गोपनीयता प्राप्त कर रहे हैं या नहीं। (यह समालोचना और अन्य समालोचना में पाया जा सकता है यह हाल ही में बिटकॉइन-देव ईमेल धागा है.)
इसके विपरीत, समान-राशि मिश्रण सभी प्रतिभागियों को समान गोपनीयता प्रदान करता है और अधिकतम संभव कॉन्फ़िगरेशन में परिणाम देता है। एक तरह से, समान-राशि के मिश्रण का परिणाम एक “संपूर्ण” कैशफ्यूज़न कॉइनजॉइन में होता है और इसलिए, सख्ती से बेहतर है – यदि असमान परिवर्तन की समस्या को नजरअंदाज कर दिया जाए।.
फिर भी, भले ही कैशफ़्यूज़न पूरी तरह से समान-राशि के मिश्रण की जगह नहीं लेगा, यह सिर्फ असमान-परिवर्तन के मुद्दे को हल करने में मदद कर सकता है, जैसा कि मूल रूप से इरादा है …
लेखक का ध्यान दें: कैशफ़्यूज़न प्रस्ताव के लिए थोड़ा और अधिक है, जैसे कि कॉइनजॉइन लेनदेन का निर्माण कैसे किया जाता है। गोपनीयता की बात आती है तो कई और अधिक सूक्ष्म जोखिम और व्यापार बंद होते हैं, जैसे कि उपयोगकर्ता मिश्रण से पहले और बाद में अपने सिक्कों को कैसे संभालते हैं। सादगी और पठनीयता के लिए, यह लेख केवल केंद्रीय और यकीनन कैशफ्यूजन के पीछे सबसे दिलचस्प विचार पर केंद्रित है: असमान-राशि मिश्रण.
सूचना और प्रतिक्रिया के लिए मार्क लुंडेबर्ग को धन्यवाद.
इस लेख के भाग दो में एक और गैर-बराबर राशि मिश्रण तकनीक शामिल होगी, जिसे कहा जाता है बस्ता.