SNICKER: कैसे ऐलिस और बॉब बिटकॉइन को बिना बातचीत के मिला सकते हैं
बिटकॉइन के बढ़ते गोपनीयता टूलबॉक्स में स्निकर अगला उपकरण हो सकता है.
हालांकि सतोशी नाकामोटो की सफ़ेद कागज सुझाव है कि गोपनीयता बिटकॉइन प्रोटोकॉल का एक डिज़ाइन लक्ष्य था, ब्लॉकचेन विश्लेषण अक्सर उपयोगकर्ताओं की गोपनीयता को तोड़ सकता है। यह एक समस्या है। बिटकॉइन उपयोगकर्ता शायद यह जानना नहीं चाहते हैं कि दुनिया उनके पैसे कहाँ खर्च करती है, वे क्या कमाते हैं या कितना उनके पास है, जबकि व्यवसाय प्रतियोगियों को लेनदेन का विवरण लीक नहीं करना चाहते हैं – कुछ उदाहरणों को सूचीबद्ध करने के लिए.
सौभाग्य से, बिटकॉइन डेवलपर्स और शोधकर्ता अपनी गोपनीयता को पुनः प्राप्त करने के लिए उपयोगकर्ताओं के लिए अधिक से अधिक समाधान के साथ आ रहे हैं। बिटकॉइन गोपनीयता के लिए इन चैंपियनों में से एक एडम “वैक्सिंग” गिब्सन है, जो शायद JoinMarket में अपने योगदान के लिए जाना जाता है, एक प्रोटोकॉल जो उपयोगकर्ताओं को उनके सिक्कों को मिलाने देता है – और इस तरह के मिक्स में भाग लेने के लिए वित्तीय इनाम प्रदान करता है।.
अभी हाल ही में, गिब्सन ने एक नया विचार प्रस्तुत किया: SNICKER (सिंपल नॉन-इंटरएक्टिव कॉइनजॉइन विद कीज़ फॉर एनक्रिप्शन अप्रूव्ड)। अब एक के रूप में प्रस्तुत किया मसौदा Bitcoin सुधार प्रस्ताव (BIP), SNICKER बिना किसी तुल्यकालन या इंटरैक्शन के सिक्के के मिश्रण की अनुमति देगा: उपयोगकर्ताओं को एक ही समय में समन्वय या ऑनलाइन होने की कोई आवश्यकता नहीं है।.
कॉइनजॉइन
SNICKER, अब तक, अच्छी तरह से स्थापित, बिटकॉइन मिक्सिंग तकनीक CoinJoin पर आधारित है। आज उपलब्ध कुछ सबसे लोकप्रिय मिक्सिंग समाधान इस ट्रिक का उपयोग करते हैं, जिसमें वासाबी वॉलेट (जीरोलिंक), समौरी वॉलेट (व्हर्लपूल) और JoinMarket शामिल हैं.
आगे पढ़ना: बिटकॉइन मिक्सर क्या हैं?
CoinJoin अनिवार्य रूप से कई लेनदेन को एक में मर्ज करने का एक उपकरण है। तो मान लीजिए कि ऐलिस कैरोल को एक बिटकॉइन का भुगतान करना चाहता है, और बॉब डेव को एक बिटकॉइन का भुगतान करना चाहता है। इस उदाहरण में, एलिस और बॉब एक बड़ा लेनदेन बनाने में सहयोग कर सकते हैं, जहां दोनों एक बिटकॉइन (दो कुल) खर्च करते हैं, और कैरोल और डेव प्रत्येक एक बिटकॉइन प्राप्त करते हैं। एक ब्लॉकचेन स्पाई यह नहीं बता पाएगा कि किस प्रेषक ने भुगतान किया है कि कौन से प्राप्तकर्ता सभी की गोपनीयता का लाभ उठा रहे हैं.
हकीकत में, हालांकि, बिटकॉइन के लेन-देन की मात्रा अक्सर गोपनीयता लीक होती है। यदि ऐलिस कैरोल को एक बिटकॉइन का भुगतान करना चाहता है, लेकिन बॉब डेव को दो बिटकॉइन का भुगतान करना चाहता है, तो यह स्पष्ट होगा कि भुगतान किसने भेजा और प्राप्त राशि का मिलान करके.
यही कारण है कि CoinJoin का उपयोग आम तौर पर मिश्रण के लिए किया जाता है। किसी और को भुगतान करने के बजाय, ऐलिस और बॉब दोनों अपने लिए एक बिटकॉइन भेजते हैं। इसे एक लेन-देन में विलय करके, ब्लॉकचेन जासूस यह नहीं बता सकते कि किसको कौन सा सिक्का वापस मिला: सिक्के मिश्रित हैं, जिससे ऐलिस और बॉब की गोपनीयता दोनों सुरक्षित हैं।.
कॉइनजॉइन मिक्सर आज काम करते हैं, लेकिन उनके पास एक खामी है: उन्हें अन्तरक्रियाशीलता की आवश्यकता होती है। एक CoinJoin लेनदेन केवल तभी मान्य है जब सभी भाग लेने वाले उपयोगकर्ता पूरे लेनदेन पर हस्ताक्षर करते हैं – लेकिन पूरे लेनदेन पर हस्ताक्षर करने के लिए, भाग लेने वाले उपयोगकर्ताओं को पहले अपने सभी सिक्कों और नए प्राप्त पते को इसमें जोड़ना होगा। आम तौर पर इसका मतलब है कि उन्हें लेनदेन को कुछ समय के लिए पास करने की आवश्यकता होती है और आमतौर पर उन सभी को एक ही समय में ऑनलाइन होने की आवश्यकता होती है.
इस तरह की आवश्यकताएं कई उपयोगकर्ताओं के लिए थोड़ी बाधा होती हैं, जो एक कारण है कि कॉइनजॉइन लेनदेन बहुत आम नहीं हैं। ये आवश्यकताएं हैं जो SNICKER को मिलती हैं.
SNICKER संस्करण 1
इस खंड में वर्णित प्रोटोकॉल SNICKER का पहला प्रस्तावित संस्करण है। यह संस्करण वैकल्पिक संस्करणों की तुलना में समझने में थोड़ा आसान है, लेकिन यह ध्यान रखना महत्वपूर्ण है कि यह वास्तव में प्रोटोकॉल का सबसे अच्छा संस्करण नहीं है, या वह संस्करण जो कार्यान्वित होने की सबसे अधिक संभावना है। (बाद में वैकल्पिक संस्करणों पर अधिक)
इसके साथ ही कहा गया है, कि यहां SNICKER संस्करण 1 कैसे काम करता है:
कहो कि एलिस के पास एक बिटकॉइन है जिसे वह ब्लॉकचैन पर एक अनपेक्षित लेनदेन आउटपुट (UTXO) द्वारा मिश्रण करना चाहता है। पहली बात वह इस बिटकॉइन को फिर से भेजना है … उसी पते पर। यह अधिकार, SNICKER के इस संस्करण में, वह एक पते का पुन: उपयोग कर रहा है, जो Bitcoin की सर्वोत्तम प्रथाओं का उल्लंघन करता है। लेकिन यह काम में आता है: यह सार्वजनिक रूप से मिश्रण के लिए उपलब्ध (संभवत:) के रूप में UTXO को चिह्नित करता है.
इसका मतलब यह नहीं है कि ऐलिस सिक्का का उपयोग नहीं कर सकता है, वैसे। यह अभी भी उसके बटुए में बैठा है, किसी भी समय खर्च करने के लिए तैयार है। यदि किसी को परवाह है, तो यह केवल चिह्नित है.
बॉब के पास मिश्रण करने के लिए एक सिक्का भी है। (वास्तव में, राशियों को पहले से समान होने की आवश्यकता नहीं है – बॉब को कम से कम ऐलिस के रूप में अधिक होने की आवश्यकता है।) बॉब ऐलिस को नहीं जानता, लेकिन वह जानता है कि ऐलिस जैसे उपयोगकर्ता अपने यूटीएक्सओ को चिह्नित कर रहे हैं। मिश्रण के रूप में। इसलिए बॉब संभावित मैचों के लिए ब्लॉकचेन को स्कैन करता है। वह ऐलिस के UTXO को ढूँढता है, और शायद कुछ और मिलान वाले UTXO, जिनमें गलत पॉज़िटिव (सभी पुन: उपयोग किए गए पते वास्तव में मिश्रण के लिए उपलब्ध नहीं हैं) शामिल हैं। लेकिन चलो, अब के लिए, सादगी के लिए, मान लें कि बॉब केवल एक मैच पाता है: ऐलिस का UTXO। (हम बाद में अन्य संभावित मैचों और झूठी सकारात्मकता पर वापस लौट आएंगे।)
मैच के साथ, बॉब अब पुन: उपयोग किए गए पते के लिए सार्वजनिक कुंजी लेता है। यह बिल्कुल संभव है क्योंकि पते का पुन: उपयोग किया जाता है: इसे पहली बार खर्च करके, ऐलिस ने उस सार्वजनिक कुंजी को ब्लॉकचेन पर प्रकाशित किया। (सार्वजनिक कुंजी ब्लॉकचैन पर दिखाई देती है जब सिक्के खर्च होते हैं, जबकि पते हमेशा दिखाई देते हैं।)
इस बिंदु पर, बॉब के पास ऐलिस का UTXO है (क्योंकि उसने इसे चिह्नित किया था) और उसकी सार्वजनिक कुंजी (क्योंकि उसने एक बार अपने पते से खर्च की थी).
अब, बॉब ऐलिस की सार्वजनिक कुंजी का उपयोग करता है और इसे अपनी निजी कुंजी के साथ जोड़ती है (“उस सिक्के के लिए जिसे वह मिश्रण करना चाहता है)” एक गुप्त रहस्य बनाने के लिए। काफी हद तक क्रिप्टोग्राफी की किताब में सबसे पुरानी चाल है, इस रहस्य को साझा किया जाता है क्योंकि केवल ऐलिस और बॉब इसे उत्पन्न कर सकते हैं: बॉब अपनी निजी कुंजी और ऐलिस की सार्वजनिक कुंजी के साथ, और ऐलिस अपनी निजी कुंजी और बॉब की सार्वजनिक कुंजी (सिक्कों के अनुरूप) मिश्रण करना).
तो अब, बॉब के पास ऐलिस की UTXO और उसकी सार्वजनिक कुंजी है, और एक साझा रहस्य है (क्योंकि उसने इसे ऐलिस की सार्वजनिक कुंजी और उसकी निजी कुंजी के साथ उत्पन्न किया है).
बॉब एक साझा तरीके से साझा रहस्य का उपयोग करता है। वह इसका उपयोग गणितीय रूप से एलिस की सार्वजनिक कुंजी “ट्विक” करने के लिए करता है। यह ट्वीकिंग वास्तव में एक नई सार्वजनिक कुंजी बनाता है। सिवाय … किसी के पास इसके लिए निजी कुंजी नहीं है। अभी तक.
दिलचस्प है, क्रिप्टो जादू के एक और बिट के लिए धन्यवाद, ट्विक किए गए सार्वजनिक कुंजी के लिए ट्विक निजी कुंजी को ऐलिस द्वारा भी खोजा जा सकता है! यदि वह अपनी मूल निजी कुंजी को एक ही साझा रहस्य के साथ साझा नहीं करती है, तो परिणामी रूप से बनाई गई निजी कुंजी, सार्वजनिक सार्वजनिक कुंजी के अनुरूप होगी.
दूसरे शब्दों में, बॉब एक नई सार्वजनिक कुंजी उत्पन्न कर सकता है और इसलिए ऐलिस के लिए एक नया बिटकॉइन पता, जो केवल वह ही खर्च कर सकता है। यहां तक कि अभी उसे जाने बिना!
तो, बॉब के पास अब ऐलिस का UTXO और उसकी सार्वजनिक कुंजी है, एक साझा रहस्य, और ऐलिस के लिए एक नया बिटकॉइन पता (उसकी सार्वजनिक कुंजी और साझा रहस्य के साथ उत्पन्न).
यह एक वैध CoinJoin लेनदेन बनाने के लिए लगभग पर्याप्त है। विशेष रूप से, बॉब ऐलिस का UTXO लेता है और अपने खुद के सिक्के के लिए UTXO जोड़ता है, इसलिए दो इनपुट हैं। उसके बाद वह ऐलिस का नया पता और स्वयं के पते को आउटपुट के रूप में जोड़ता है (साथ ही फीस और कुछ अन्य विवरण, यदि आवश्यक हो तो खुद के लिए एक परिवर्तन पते की तरह)। और वह लेन-देन पर हस्ताक्षर करता है.
अब केवल एक चीज गायब है ऐलिस के हस्ताक्षर.
ऐलिस तक पहुँचना
अंतिम चरण – ऐलिस तक पहुंचना – वास्तव में सुनने में आसान है, लेकिन इसके लिए एक आखिरी चाल की आवश्यकता है.
ऐलिस को खोजने के लिए बॉब बस लगभग-पूरा कॉइनजॉइन लेनदेन प्रकाशित कर सकता था। उदाहरण के लिए, SNICKER उपयोगकर्ताओं को समर्पित बुलेटिन बोर्ड पर; अधिमानतः एक टो छिपी हुई सेवा पर या अन्यथा प्रकाशकों की गुमनामी की पेशकश करने की गारंटी.
हालांकि, अगर सादे पाठ में किया जाता है, तो यह अभी भी आदर्श नहीं होगा। यदि कोई जासूस बुलेटिन बोर्ड पर नज़र रखता है, तो वे यह देख सकते हैं कि प्रस्तावक के पास कौन सा इनपुट है (इस मामले में बॉब), और कौन सा इनपुट लेने वाले का है (इस मामले में ऐलिस): हस्ताक्षरित प्रस्तावक का है। यह अपने आप में एक गोपनीयता रिसाव हो सकता है। लेकिन यह और भी बुरा होगा यदि बॉब अलग-अलग सिक्कों को मिलाने के लिए अधिक प्रस्ताव करता है। उस स्थिति में, जासूस सभी अलग-अलग UTXOs को बॉब से जोड़ने में सक्षम हो सकता है, उदाहरण के लिए, क्योंकि उनके प्रस्तावों का एक ही समय बुलेटिन बोर्ड को पोस्ट किया गया था.
इसके बजाय, बॉब ऐलिस की सार्वजनिक कुंजी के साथ कॉइनजॉइन ट्रांजैक्शन … को एन्क्रिप्ट करता है! इस तरह, केवल ऐलिस लेनदेन को डिक्रिप्ट कर सकता है और जासूस कुछ भी नहीं सीख सकता है.
बुलेटिन बोर्ड पर एन्क्रिप्टेड लेनदेन को पोस्ट करने के बाद, बॉब ने वह सब किया जो उसे करने की जरूरत है। अगर वह ऐसा करे तो वह ऑनलाइन गायब हो सकता है.
ऐलिस की बारी
जैसा कि CoinJoin लेनदेन अब एन्क्रिप्ट किया गया है, यह एक आखिरी, थोड़ी जटिलता का परिचय देता है। जबकि ऐलिस को पता है कि पैकेज के लिए कहाँ देखना है – SNICKER बुलेटिन बोर्ड पर – वह नहीं जानती कि क्या देखना है: बुलेटिन बोर्ड पर सभी CoinJoin लेनदेन एन्क्रिप्टेड ब्लॉब्स की तरह दिखते हैं.
केवल एक ही रास्ता है। ऐलिस को अपनी निजी कुंजी के साथ सभी पैकेजों की कोशिश करने और डिक्रिप्ट करने की आवश्यकता है, उम्मीद है कि उनमें से एक उपयोगी चीज में बदल जाता है.
लेकिन जब बॉब का एन्क्रिप्टेड ब्लो एक कॉइनजॉइन ट्रांजैक्शन में बदल जाता है, तो ऐलिस के पास वह सब कुछ होता है जो उसे मिक्स को पूरा करने के लिए चाहिए। साझा रहस्य उत्पन्न करने के लिए वह अपनी निजी कुंजी और बॉब की सार्वजनिक कुंजी (जो कि उनके इनपुट में शामिल है) का उपयोग करती है, जो वह कर सकती है, बदले में, अपनी नई, निजी कुंजी का उपयोग करने के लिए। यह जांचने के बाद कि नई कुंजी आउटपुट में उसके नए प्राप्त पते से मेल खाती है, वह बिटकॉइन नेटवर्क के लिए लेनदेन पर हस्ताक्षर करती है और प्रसारित करती है.
ऐलिस और बॉब ने अपने सिक्कों को मिलाया, भले ही उन्होंने कभी बातचीत नहीं की, और न ही उन्हें उसी समय ऑनलाइन होने की आवश्यकता थी.
और जब प्रक्रिया पाठ में कुछ हद तक श्रमसाध्य लग सकती है, तो ध्यान रखें कि यह सब सॉफ्टवेयर द्वारा दूर किया जा सकता है, लैपटॉप या फोन स्क्रीन पर कुछ बटन में अनुवादित किया जा सकता है, या पूरी तरह से स्वचालित भी हो सकता है।.
SNICKER संस्करण 2
अब तक के रूप में समझाया गया, प्रस्ताव का पहला संस्करण है। पहले से ही, गिब्सन ने एक दूसरे संस्करण का सुझाव दिया है, और अन्य विविधताएं टेबल पर भी हैं.
दूसरा SNICKER संस्करण समान है, लेकिन पता पुन: उपयोग की आवश्यकता से बचा जाता है – थोड़ी अधिक जटिलता की कीमत पर.
इस दूसरे संस्करण में, बॉब ने ऐलिस की सार्वजनिक कुंजी को पुन: उपयोग किए गए पते से प्राप्त नहीं किया है। इसके बजाय, बॉब उसी लेनदेन के इनपुट से सार्वजनिक कुंजी लेता है जिसने ऐलिस का UTXO बनाया है। बॉब मानता है कि उस लेनदेन में कम से कम एक इनपुट एलिस ने खुद बनाया था और वह अभी भी इन के लिए निजी कुंजी है.
बॉब यह धारणा बनाता है क्योंकि इस बार, ऐलिस का UTXO और भी स्पष्ट रूप से मिश्रण के लिए उपलब्ध है, और यह केवल इतना स्पष्ट रूप से चिह्नित किया जाएगा यदि ऐलिस इनपुट के अनुरूप निजी कुंजी को नियंत्रित करता है। SNICKER BIP यह निर्दिष्ट नहीं करता है कि प्रारंभिक अंकन कैसे किया जाएगा, लेकिन यह बताता है कि कुछ वॉलेट्स (जैसे JoinMarket वॉलेट्स) इस तरह की जानकारी को अनजाने में प्रकट करते हैं। वैकल्पिक रूप से, ऐलिस बस बुलेटिन बोर्ड पर अपने UTXO के विज्ञापन का संदेश दे सकती थी.
लेकिन इससे भी बेहतर: एक बार जब SNICKER का उपयोग शुरू किया जाता है, तो नए मैच ढूंढना बहुत आसान हो जाना चाहिए। ऐसा इसलिए है क्योंकि SNICKER लेनदेन स्वयं को पहचानने के लिए तुच्छ होगा, और मौजूदा SNICKER उपयोगकर्ता अपने सिक्कों को फिर से मिलाना चाहते हैं। दूसरे शब्दों में, शुरुआती बूटस्ट्रैपिंग चरण के बाद, अनमैक्स किए गए सिक्कों को पहले के मिश्रित सिक्कों के साथ मिलाया जाएगा, जिसके परिणामस्वरूप अधिक मिश्रित सिक्के होंगे जो बदले में अधिक मिश्रण के लिए लीवरेज किए जा सकते हैं।.
चुनौतियां और अवसर
जैसा कि ऊपर उल्लेख किया गया है, SNICKER BIP अभी भी केवल एक मसौदा है और समीक्षा और संभावित सुधार के अधीन है। (पहले से, यह विचार कुछ पहलुओं में विकसित हुआ है क्योंकि यह पहली बार सार्वजनिक रूप से गिब्सन द्वारा प्रस्तावित किया गया था ब्लॉग पोस्ट.) प्रस्ताव को अब बीआईपी बनने के लिए प्रस्तुत किया गया है ताकि इसे मानकीकृत किया जा सके और लाइन से नीचे, अलग-अलग वॉलेट के बीच संगत बनाया जा सके।.
SNICKER को कुछ खुले प्रश्नों और चुनौतियों का भी सामना करना पड़ता है, हालाँकि इनमें से कोई भी असंभव नहीं लगता है। इनमें शामिल हैं, उदाहरण के लिए, जिसे UTXO को मैचों के रूप में चुना जाना चाहिए, और विशेष रूप से, झूठी सकारात्मक की संख्या को कैसे सीमित किया जाए। पुन: उपयोग किए गए पते के अलावा, संभावित मैचों को मात्राओं के लिए फ़िल्टर किया जा सकता है, UTXO की आयु या विशिष्ट प्रकार के बटुए.
लेकिन जैसा कि इस लेख में पहले बताया गया था, भले ही कई मैच (झूठी सकारात्मक सहित) हो, यह केवल एक छोटी सी समस्या है। प्रस्तावक (“बॉब”) केवल उन सभी के लिए उम्मीदवार लेनदेन बना सकते हैं। यहां तक कि अगर ये प्रस्ताव संघर्ष करते हैं (क्योंकि बॉब अपने सभी के लिए उसी UTXO का उपयोग करता है), तो इसका सीधा सा मतलब है कि प्रतिक्रिया देने वाले पहले लेने वाले (पहले “एलिस”) को मिल जाएगा – अन्य संभावित लेने वालों को लगेगा कि उन्हें बहुत देर हो गई, लेकिन कोई नुकसान नहीं हुआ किया जाएगा। झूठी सकारात्मकता के लिए, कोई वास्तविक नुकसान नहीं हुआ है, बॉब का प्रस्ताव सिर्फ बुलेटिन बोर्ड पर बैठेगा, हमेशा के लिए अनदेखा कर दिया जाएगा (या जब तक इसे हटाया नहीं जाता).
हालांकि, एक विशेष रूप से महत्वपूर्ण समस्या क्या हो सकती है, स्पैम है। क्योंकि बुलेटिन बोर्ड डेटा के एन्क्रिप्टेड ब्लॉप्स की मेजबानी करेगा, इसलिए “नकली” प्रस्तावों को फ़िल्टर करना असंभव होगा: SNICKER प्रोटोकॉल को बाधित करने के लिए एक हमलावर द्वारा रैंडम गिबिश को पोस्ट किया गया। गिब्सन ने अपने ड्राफ्ट बीआईपी में इस समस्या के कुछ समाधान प्रस्तावित किए, लेकिन ये नए ट्रेड-ऑफ पेश करेंगे, जैसे एक प्रस्ताव पोस्ट करने के लिए.
फ़्लिप्सीड पर, SNICKER कुछ लाभ भी प्रदान करता है जो स्पष्टीकरण के लिए अब तक सरलता के लिए छोड़ दिए गए हैं। ऐसा ही एक लाभ यह है कि ऑफ़रर्स) कुछ फंड को एक टेकर के आउटपुट में जोड़ सकते हैं, मिश्रण को स्वीकार करने के लिए कुछ वित्तीय प्रोत्साहन जोड़ सकते हैं। एक ही समय में दो से अधिक उपयोगकर्ताओं के साथ SNICKER मिक्स का संचालन करना भी संभव हो सकता है – हालांकि यह चाल को और अधिक जटिल बना देगा.
और वास्तव में क्योंकि प्रोटोकॉल गैर-सक्रिय है, गिब्सन का मानना है कि कुछ अन्य गोपनीयता तकनीकों की तुलना में SNICKER को वॉलेट्स में लागू करना अपेक्षाकृत आसान होगा, जैसे कि JoinMarket। अब तक, इलेक्ट्रम वॉलेट ने प्रस्ताव को अपनाने में रुचि दिखाई है – हालांकि इसका वास्तविक कार्यान्वयन अभी भी एक लंबा रास्ता तय कर सकता है.
SNICKER की अधिक जानकारी और पृष्ठभूमि के लिए, देखें मसौदा बी.आई.पी., बिटकॉइन-डे मेलिंग सूची का पालन करें विचार-विमर्श या गिब्सन पढ़ा (थोड़ा पुराना) ब्लॉग पोस्ट प्रस्ताव पर.