क्या CoinJoin को वास्तव में गोपनीयता के लिए समान लेन-देन की आवश्यकता है? भाग दो: नैकसेप
हालांकि सतोशी नाकामोटो की सफ़ेद कागज सुझाव है कि गोपनीयता बिटकॉइन प्रोटोकॉल का एक डिज़ाइन लक्ष्य था, ब्लॉकचेन विश्लेषण अक्सर उपयोगकर्ताओं की गोपनीयता को तोड़ सकता है। यह एक समस्या है। बिटकॉइन उपयोगकर्ता शायद यह जानना नहीं चाहते हैं कि वे अपने पैसे कहाँ खर्च करते हैं, वे क्या कमाते हैं या उनके पास कितना है, जबकि व्यवसाय प्रतियोगियों को लेनदेन का विवरण लीक नहीं करना चाहते हैं – कुछ उदाहरणों के नाम.
लेकिन CoinJoin की तरह प्राइवेसी फिर से हासिल करने के उपाय मौजूद हैं। आज उपलब्ध कुछ सबसे लोकप्रिय मिक्सिंग समाधान इस ट्रिक का उपयोग करते हैं, जिसमें वासाबी वॉलेट (जो ज़ीरोलिंक का लाभ उठाता है) और समुराई वॉलेट (जो व्हर्लपूल का लाभ उठाता है) शामिल हैं। दोनों ही मामलों में, उपयोगकर्ता अपने सिक्कों को एक दूसरे के साथ मिलाने के लिए समान मात्रा में काटते हैं। मिश्रण को प्रभावी बनाने के लिए समान मात्रा का उपयोग करना एक महत्वपूर्ण कदम माना जाता है.
बिटकॉइन कैश के लिए विकास में एक नया मिक्सिंग प्रोटोकॉल शामिल किया गया, जिसमें कैशफ्यूजन नामक एक चुनौती थी, जो एक सफल मिश्रण के लिए समान मात्रा में आवश्यक हैं।.
लेकिन 2017 में भी ए कागज़ गैर-बराबर राशि के संयोग की गहराई का विश्लेषण करते हुए, RWTH आचेन विश्वविद्यालय और कार्ल्स्रुहे इंस्टीट्यूट ऑफ टेक्नोलॉजी के शोधकर्ताओं ने कॉइनजेन के माध्यम से गोपनीयता हासिल करने के लिए एक समाधान का प्रस्ताव किया, जो समान मात्रा का उपयोग करने की आवश्यकता के बिना है: नक्सपैक मिक्सिंग.
लेखक का ध्यान दें: यदि आप नहीं जानते हैं कि एक CoinJoin लेनदेन क्या है या क्यों समान मात्रा में मिश्रण के लिए आवश्यक माना जाता है, तो आपको पहले इस मिनीसरीज का एक भाग पढ़ना चाहिए – या उस लेख के पहले दो खंडों को पढ़ना चाहिए.
मिक्स वर्सस पेइंग
जैसा कि इस मिनीसरीज के एक भाग में बताया गया है, बराबर-समान बिटकॉइन मिश्रण शायद आज बिटकॉइन ब्लॉकचेन पर सर्वश्रेष्ठ प्राप्त करने योग्य गोपनीयता प्रदान करता है। लेकिन यह उपयोगकर्ताओं को असमान-परिवर्तन वाले आउटपुट के साथ छोड़ देता है। ये समान स्तर की गोपनीयता प्रदान नहीं करते हैं और गोपनीयता जोखिम भी हो सकते हैं। कैशफ्यूजन इन असमान आउटपुट से निपटने में मदद कर सकता है.
लेकिन एक और समस्या है। समान मात्रा का उपयोग करने की आवश्यकता कॉइनजॉइन लेनदेन के माध्यम से उपयोगकर्ताओं को वास्तविक भुगतान करने से रोकती है: यह संभव नहीं है कि एक व्यापारी कॉइनजॉइन में आवश्यक सटीक राशि चार्ज करेगा। इसलिए, इसके बजाय, समान-राशि वाले CoinJoins वास्तव में केवल मिश्रण के लिए उपयोग किए जाते हैं *: प्रतिभागियों ने धनराशि डाली और उसी राशि को वापस प्राप्त किया। दुर्भाग्य से, इसका मतलब है कि मिश्रण को अतिरिक्त ब्लॉकचेन लेनदेन की आवश्यकता होती है, जिसमें लेनदेन शुल्क और समय खर्च होता है.
शोधकर्ता फेलिक्स कोन्स्टेंटिन मौरर (आरडब्ल्यूटीएच आचेन यूनिवर्सिटी के), टिल्ड न्यूडैकर और मार्टिन फ्लोरियन (कार्ल्स्रुहे इंस्टीट्यूट ऑफ टेक्नोलॉजी दोनों) ने अपने 2017 के पेपर में शीर्षक से इस समस्या को हल करने के लिए कहा था।बेनामी कॉइनजॉइन ट्रांजैक्शंस विथ आर्बिटवर्स वैल्यूज़.”उन्होंने एक CoinJoin समाधान प्रस्तावित किया जो वास्तविक भुगतानों के लिए उपयोगी हो सकता है – अर्थात, यह असमान मात्रा का उपयोग करता है – जबकि अभी भी महत्वपूर्ण.
के नाम पर रखा गया थपकी समस्या, उनके समाधान को नैकपैक मिक्सिंग के रूप में जाना जाता है.
मिक्सपैक मिक्सिंग
कैशफ्यूज़न की तरह, नैकसीप मिक्सिंग के पीछे मुख्य विचार एक कॉइनजेन ट्रांजेक्शन उत्पन्न करना है जिसे संभावित मूल लेनदेन के कई अलग-अलग कॉन्फ़िगरेशनों में एक साथ जोड़ा जा सकता है। विभिन्न विन्यास विभिन्न इनपुट्स को विभिन्न आउटपुट से जोड़ते हैं, जिससे ब्लॉकचेन पर सिक्कों का निशान टूट जाता है.
क्नैप्सैक मिक्सिंग कॉइनजेन ट्रांजैक्शन के लिए मूल आउटपुट से छोटे आउटपुट में छोटे आउटपुट में कटौती करके इसे प्राप्त करता है। इसके अलावा, यह सुनिश्चित करने के लिए अपेक्षाकृत सरल तरकीबों का उपयोग करता है कि छोटे आउटपुट के परिणामस्वरूप कई संभावित कॉन्फ़िगरेशन संभव हो रहे हैं.
मौरर, न्यूडेकर और फ्लोरियन के पेपर में नैकपैक मिश्रण के तीन संस्करण शामिल हैं। पहला संस्करण श्वेत पत्र में ही सबसे पुराना है। दूसरा और तीसरा संस्करण काफी हद तक समान हैं, जहां तीसरा संस्करण वास्तव में दूसरे संस्करण का एक बेहतर संस्करण है। (कागज के लेखक केवल कागज लिखने के एक देर के चरण में तीसरे संस्करण के साथ आए थे; इसे संभवतः अन्यथा अध्ययन में अधिक प्रमुख स्थान दिया गया होगा।)
आइए विभिन्न वेरिएंट को देखें.
वेरिएंट वन
मिक्सपैक मिश्रण के पहले संस्करण की व्याख्या करने के लिए, आइए इस मीनार में पहले लेख से एक कॉइनजॉइन का उदाहरण लें। एलिस कैरल 3.2 सिक्कों का भुगतान करना चाहती है और उसके पास क्रमशः 2.3 और 1.4 सिक्कों के दो इनपुट हैं। इस बीच, बॉब डेव 4 सिक्कों का भुगतान करना चाहते हैं और क्रमशः 3 और 2 सिक्कों के दो इनपुट हैं.
सरलीकृत, ये लेनदेन इस तरह दिखते हैं:
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
जैसा कि पिछले लेख में बताया गया था, लेन-देन को विलय कर दिया गया था, लेकिन आप यह जानते हुए कि दो भुगतानकर्ता हैं, केवल एक कॉन्फ़िगरेशन में राशियों को एक साथ मिलाया जा सकता है: मूल लेनदेन। इस प्रकार, यह पुर्नप्रयोग करने के लिए तुच्छ है कि कौन सा इनपुट भुगतान करता है, जो एक CoinJoin बनाने के बिंदु को पराजित करता है.
नैकसैप मिक्सिंग से इसमें बदलाव होता है। संक्षेप में, यह मूल उत्पादन को दो टुकड़ों में सबसे बड़े लेनदेन से एक छोटे से हिस्से में विभाजित करने के लिए दो मूल लेनदेन के बीच मूल्य अंतर का उपयोग करता है। यह कम से कम यह सुनिश्चित करता है कि दो कॉन्फ़िगरेशन हैं, जहां अधिकांश आउटपुट को किसी भी इनपुट से जोड़ा जा सकता है.
इस कदम को चरण दर चरण देखें। सबसे पहले, आउटपुट की कुल राशि प्रति लेनदेन में जोड़ी जाती है। ऐलिस और कैरोल के लेनदेन के लिए, यह 2.3 + 1.4 = 3.7 है। बॉब और डेव के लेन-देन के लिए, यह 3 + 2 = 5. है। बॉब और डेव का लेनदेन सबसे बड़ा है.
अगला, दोनों के बीच अंतर की गणना की जाती है: 5 – 3.7 = 1.3। फिर, यह अंतर सबसे बड़े लेनदेन से घटाया जाता है। बॉब और डेव का सबसे बड़ा लेन-देन है, और हम 4 आउटपुट को विभाजित करेंगे, इसलिए: 4 – 1.3 = 2.7.
इसलिए, सबसे बड़े लेन-देन से चार आउटपुट 1.3 और 2.7 में CoinJoin विभाजन में है.
इस बार, CoinJoin ऐसा दिखता है:
3 + 2.3 + 2 + 1.4 = 3.2 + 2.7 + १.३ + 1 + 0.5
अब हम वापस puzzling…
बेशक, मूल कॉन्फ़िगरेशन अभी भी संभव है। यह सिर्फ इतना है कि डेव को अब एक के बजाय दो आउटपुट मिलते हैं.
ऐसा लगेगा:
2.3 + 1.4 = 3.2 + 0.5
तथा
3 + 2 = 2.7 + १.३ + 1
लेकिन उस शीर्ष पर, अब एक नया विन्यास संभव है:
२.३ + १.४ = 2.7 + 1
तथा
3 + 2 = 3.2 + १.३ + 0.5
नतीजतन, ब्लॉकचैन विश्लेषक आउटपुट 3.2, 2.7, 1 या 0.5 को निश्चितता के साथ किसी भी इनपुट से लिंक नहीं कर सकते हैं! गोपनीयता के लिए एक वरदान, भले ही CoinJoin लेनदेन समान मात्रा का उपयोग नहीं करता था.
मिश्रण में एक नया लेन-देन जोड़ने के लिए, पिछले सभी लेन-देन को अलग रखें (मौजूदा कॉइनजॉइन को अलग रखें) को जोड़ा जाएगा जैसे कि यह एक लेनदेन था। फिर, पहली बार के आसपास, इन पिछले लेनदेन और नए लेनदेन के बीच मूल्य अंतर का उपयोग आउटपुट को विभाजित करने के लिए किया जाएगा। और इसके बाद अगले लेनदेन के लिए और उसके बाद कोई अतिरिक्त लेनदेन.
वेरिएंट टू और थ्री
जबकि नॉटपैक मिक्सिंग का एक प्रकार किसी भी इनपुट से अधिकांश आउटपुट को डिलिंक करने का अच्छा काम करता है, लेकिन इनपुट स्वयं को अभी भी अन्य इनपुट से जोड़ा जा सकता है। ये सेट दोनों कॉन्फ़िगरेशन के लिए समान हैं। यह गोपनीयता के लिए भी आदर्श नहीं है.
दो और तीन के मिश्रण वाले नैकपैक विशेष रूप से इनपुट को अनलिंक करने के लिए डिज़ाइन किए गए हैं। हालाँकि, वेरिएंट दो की आवश्यकता है, कि CoinJoin में सभी प्रतिभागी एक-दूसरे के इनपुट और आउटपुट सीखते हैं, जिसका अर्थ है कि यह वास्तव में बहुत गोपनीयता प्रदान नहीं करता है: वेरिएंट तीन इसे ठीक करता है। फिर भी, लेख के उद्देश्य के लिए (जो ब्लॉकचेन गोपनीयता पर केंद्रित है), अंतर एक बार में दोनों वेरिएंट को कवर करने के लिए पर्याप्त है.
हम ऊपर के समान उदाहरण ले रहे हैं। एलिस कैरल 3.2 सिक्कों का भुगतान करना चाहती है और बॉब डेव 4 सिक्कों का भुगतान करना चाहता है.
इसलिए:
2.3 + 1.4 = 3.2 + 0.5
तथा
3 + 2 = 4 + 1
दो और तीन वेरिएंट के लिए, एक “आभासी लेनदेन” उत्पन्न होता है। यह आभासी लेनदेन अन्यथा मौजूद नहीं है, लेकिन ब्लॉकचैन विश्लेषकों को यह सोचने के लिए छल किया जाएगा कि यह हो सकता है.
इस आभासी लेनदेन को बनाने के लिए, प्रत्येक मूल लेनदेन से एक इनपुट लिया जाता है। फिर, इन इनपुट्स का मूल्य जोड़ा जाता है.
उदाहरण के लिए, जैसे:
1.4 + 2 = 3.4
हमारे चयनित इनपुट का मूल्य 3.4 है। इसलिए, वर्चुअल ट्रांजेक्शन के आउटपुट का मूल्य भी 3.4 होना चाहिए.
यह पूरा करना आसान है। हम एक बार फिर सबसे बड़े मूल लेन-देन से एक आउटपुट लेते हैं, जो हमारे उदाहरण में, फिर से है। 4. हम उस आउटपुट को भी देखते हैं जो मूल रूप से इस मूल लेनदेन से मेल खाता था: 1. फिर हमने बड़े आउटपुट (4) को विभाजित किया वर्चुअल वैल्यू (3.4) उत्पन्न करने के लिए हाफ़वे में से एक को इसके मूल मैच (1) के साथ जोड़ा जा सकता है। इस मामले में, इसका मतलब है कि 4 को 2.4 और 1.6 में विभाजित किया गया है। (आखिरकार, 2.4 + 1 = 3.4।)
अब, CoinJoin ऐसा दिखता है:
3 + 2.3 + 2 + 1.4 = 3.2 + २.४ + 1.6 + 1 + 0.5
फिर, इस CoinJoin के आधार पर, मूल कॉन्फ़िगरेशन अभी भी संभव है। यह सिर्फ इतना है कि डेव एक बार फिर एक के बजाय दो आउटपुट प्राप्त करता है.
ऐसा लगेगा:
2.3 + 1.4 = 3.2 + 0.5
तथा
3 + 2 = २.४ + 1.6 + 1
लेकिन उसके ऊपर, एक नया “वर्चुअल कॉन्फ़िगरेशन” भी संभव है:
3 + 2.3 = 3.2 + 1.6 + 0.5
तथा
2 + 1.4 = २.४ + 1
न केवल अलग-अलग कॉन्फ़िगरेशन अलग-अलग आउटपुट के लिए अलग-अलग इनपुट से मेल खाते हैं, अलग-अलग कॉन्फ़िगरेशन भी एक-दूसरे के साथ अलग-अलग इनपुट से मेल खाते हैं!
नैकपैक कमजोरियां
साधारण चाल के आधार पर नैकसैप मिक्सिंग, विशेष रूप से सामान्य लेनदेन करने की तुलना में एक महत्वपूर्ण गोपनीयता सुधार प्रदान करता है.
फिर भी, knapsack का मिश्रण उतना निजी नहीं है जितना कि बराबर-मात्रा के मिश्रण का। समान मात्रा में मिश्रण अनिवार्य रूप से अधिकतम मात्रा में कॉन्फ़िगरेशन के लिए अनुमति देता है; यहां तक कि सबसे अच्छा knapsack मिश्रण से भी अधिक आवश्यक। और शायद अधिक विशेष रूप से, knapsack मिश्रण अभी भी कुछ इनपुट और आउटपुट के कुछ लिंकिंग के लिए अनुमति देता है – या कम से कम अधिक संभावना वाले लिंकेज.
दरअसल, ऊपर के उदाहरणों में, कुछ इनपुट और आउटपुट दोनों संभावित कॉन्फ़िगरेशन में मेल खाते थे। वैरिएंट एक में, 1.3 आउटपुट का मिलान 3 और 2 इनपुट के साथ किया गया था। इसलिए जब ब्लॉकचेन विश्लेषण से यह पता नहीं चलेगा कि मूल लेनदेन क्या थे, तो यह अभी भी 3 और 2 इनपुट और 1.3 आउटपुट के बीच एक लिंक को प्रकट नहीं करता है। वेरिएंट दो और तीन, एक दूसरे से इनपुट को डिलीट करते समय, इनपुट और आउटपुट के बीच और भी अधिक मैच की अनुमति देते हैं.
यह भी ध्यान देने योग्य है कि भुगतान के लिए एक नॉटअली सिक्काजोन को अतिरिक्त आउटपुट की आवश्यकता होती है और इसलिए, अभी भी नियमित लेनदेन या यहां तक कि नियमित रूप से कॉइनजॉइन लेनदेन की तुलना में अधिक शुल्क खर्च करना होगा। इसके लिए व्यापारियों को केवल एक के बजाय भुगतान करने पर दो पते देने की आवश्यकता हो सकती है.
दूसरे शब्दों में, जबकि ब्लॉक-स्पेस दक्षता और शुल्क के बराबर राशि के मिश्रण में सुधार, और एक बड़ा सुधार बनाम नियमित लेनदेन या गोपनीयता के लिए नियमित रूप से कॉइनजॉइन लेन-देन, नैकपैक मिश्रण अभी भी थोड़ी अतिरिक्त परेशानी और लागत के साथ आता है।.
* इस लेख के प्रकाशन के बाद, यह सही ढंग से बताया गया कि JoinMarket भी CoinJoin के माध्यम से भुगतान की अनुमति देता है.
लेखक का ध्यान दें: नॉटपैक मिक्सिंग प्रस्ताव के लिए थोड़ा और अधिक है, जैसे कि कॉइनजॉइन लेनदेन का निर्माण कैसे किया जाता है। गोपनीयता की बात आने पर कई और अधिक सूक्ष्म जोखिम और व्यापार बंद हो जाते हैं, जैसे कि उपयोगकर्ता मिश्रण से पहले और बाद में अपने सिक्कों को कैसे संभालते हैं। सादगी और पठनीयता के लिए, यह लेख केवल केंद्रीय और निस्संदेह मिश्रण के पीछे सबसे दिलचस्प विचार पर केंद्रित है: असमान-राशि मिश्रण.