BIP324 बताता है कि Bitcoin नोडों के बीच आदान-प्रदान होने वाले संदेशों को कैसे एन्क्रिप्ट किया जाए। नोड ऐसा प्रोग्राम है जो लेनदेन और ब्लॉक की जाँच करता है और नेटवर्क के दूसरे सहभागियों से संपर्क रखता है। नेटवर्क के प्रतिभागियों के बीच ऐसे सीधे कनेक्शन P2P कहलाते हैं और इनके एन्क्रिप्टेड रूप को v2 transport कहते हैं। केवल कनेक्शन को सुन रहा कोई व्यक्ति उसकी सामग्री आसानी से न पढ़ सके, यही उद्देश्य है। लेकिन एन्क्रिप्शन अपने आप यह पुष्टि नहीं करता कि आप वास्तव में किस नोड से बात कर रहे हैं। सार्वजनिक ब्लॉकचेन और लेनदेन की वैधता के नियम नहीं बदलते।
ब्लॉक लेनदेन का एक समूह है जिसे Bitcoin के साझा इतिहास में जोड़ा जाता है। ब्लॉक सार्वजनिक हैं, लेकिन उनका फैलना देखना तैयार चेन पढ़ने जैसा नहीं है। बिना एन्क्रिप्शन के कनेक्शन में संदेशों का क्रम, अनुरोध और नोड ने लेनदेन कब आगे भेजा, यह भी दिखता है। इससे नेटवर्क गतिविधि को लोगों से जोड़ने में मदद मिल सकती है। BIP324 निष्क्रिय पर्यवेक्षक के लिए इस सामग्री को आसानी से पढ़ना सीमित करता है। [1] [2] [7]
इस सुविधा से लैस दोनों नोड कनेक्शन बनाते समय कुंजियाँ तय करते हैं और फिर एन्क्रिप्टेड संचार करते हैं। उन्हें पहले से एक-दूसरे की पहचान जानने या केंद्रीय प्राधिकरण का प्रमाणपत्र रखने की ज़रूरत नहीं है। इसलिए एन्क्रिप्टेड का अर्थ भरोसेमंद नहीं होता। दूसरा नोड संदेश पढ़ता ही है और वह किसी हमलावर का भी हो सकता है। [1]
कनेक्शन शुरू होने पर handshake नाम की शुरुआती प्रक्रिया में दोनों नोड अस्थायी कुंजियाँ बनाते हैं। निजी कुंजी एक गुप्त संख्यात्मक मान है; उससे जुड़ी सार्वजनिक कुंजी दूसरों के साथ साझा की जा सकती है। ECDH की मदद से दोनों अपनी निजी कुंजियाँ एक-दूसरे को भेजे बिना वही साझा गुप्त मान निकाल लेते हैं। उससे डेटा भेजने की प्रक्रिया को सुरक्षित रखने वाली कुंजियाँ निकाली जाती हैं। ElligatorSwift सार्वजनिक कुंजियों को लिखने का ऐसा तरीका है जिससे आदान-प्रदान का यह हिस्सा यादृच्छिक डेटा जैसा दिखता है और किसी तय पैटर्न से पहचानना कठिन होता है। ये कुंजियाँ केवल नेटवर्क कनेक्शन के लिए हैं। ये बिटकॉइन खर्च करने वाली निजी कुंजियाँ या seed नहीं हैं; seed वह गुप्त शुरुआती मान है जिससे वॉलेट की कुंजियाँ निकाली जाती हैं। एन्क्रिप्टेड ट्रांसपोर्ट चालू करने के लिए वॉलेट का बैकअप किसी को देना जरूरी नहीं है। [1] [8]
मान लीजिए कोई रास्ते में संदेश पकड़कर उसकी सामग्री बदल देता है। BIP324 में ChaCha20Poly1305 इस्तेमाल होता है: एन्क्रिप्शन के साथ यह जाँच कि संदेश कनेक्शन की कुंजी से मेल खाता है और बदला नहीं गया है। कुंजी न होने पर हमलावर केवल डेटा बदलकर वैध संदेश नहीं बना सकता। लेकिन यह जाँच साबित नहीं करती कि कुंजी उसी नोड के साथ साझा है जिससे आप जुड़ना चाहते थे। कोई सक्रिय बिचौलिया कनेक्शन बनते समय दोनों पक्षों के सामने दूसरे पक्ष का रूप ले सकता है। तब उसके पास दो अलग एन्क्रिप्टेड कनेक्शन होते हैं और वह उनके बीच संदेश पढ़कर आगे भेजता है। इसलिए संदेशों की सुरक्षा और सामने वाले की पहचान की पुष्टि अलग काम हैं। [1]
संचार के दौरान कुंजियाँ बदलती हैं। पुराने रहस्य सही तरह मिटाए जाएँ तो बाद में मौजूदा कुंजियाँ मिलने से पूरा पुराना रिकॉर्ड अपने-आप नहीं खुल जाता। इस गुण को forward secrecy कहते हैं। लेकिन दूसरे नोड ने जो संदेश पहले ही पढ़ या सहेज लिए हैं, उन्हें यह सुरक्षित नहीं कर सकती। कंप्यूटर पर लगातार नियंत्रण रखने वाले हमलावर के खिलाफ भी यह मदद नहीं करती; संदेशों का सबसे हाल का समूह भी उजागर हो सकता है। [1]
अनुकूलता के लिए पुराना v1 transport समर्थित रहता है। v2 कनेक्शन विफल हो तो सॉफ़्टवेयर v1 आज़मा सकता है। इसलिए सक्रिय हमलावर एन्क्रिप्टेड कनेक्शन रोककर बिना एन्क्रिप्शन वाला विकल्प मजबूर करने का प्रयास कर सकता है। BIP324 निष्क्रिय निगरानी की लागत बढ़ाता है, पर सामान्य downgrade प्रतिरोध या कनेक्शन की उपलब्धता की गारंटी नहीं देता। [1] [4]
BIP324 IP पता या ट्रैफ़िक के समय और मात्रा के सभी पैटर्न नहीं छिपाता। IP पता वह नेटवर्क पता है जिसका इस्तेमाल कोई उपकरण इंटरनेट पर संचार के लिए करता है। Tor समस्या का दूसरा हिस्सा संभाल सकता है, लेकिन दोनों का उपयोग भी अपने-आप गुमनामी नहीं देता। संदेश किसी भी रास्ते आए, Full Node को लेनदेन, हस्ताक्षर और ब्लॉक जाँचना होता है। केवल एन्क्रिप्शन उस Eclipse Attack को नहीं रोकता जिसमें हमलावर नोड को घेर लेते हैं। [1] [6]
Bitcoin Core 26.0 ने 2023 में v2 समर्थन जोड़ा, जो शुरू में डिफ़ॉल्ट रूप से बंद था। संस्करण 27.0 ने इसे डिफ़ॉल्ट रूप से चालू किया। इसलिए इस प्रविष्टि का वर्ष Bitcoin Core के पहले समर्थन का है, प्रस्ताव की शुरुआत का नहीं। हर कनेक्शन में डेटा भेजने का तरीका अलग से तय होता है; सॉफ़्टवेयर समर्थन का मतलब यह नहीं कि सभी जुड़े peers v2 इस्तेमाल करते हैं। [3] [4]
Bitcoin Core का संचालक bitcoin-cli getpeerinfo से कनेक्शन की स्थिति पढ़ सकता है। यह RPC के जरिए की गई क्वेरी है; RPC नोड को नियंत्रित करने और जानकारी लेने का इंटरफेस है। यह कमांड Bitcoin नेटवर्क में लेनदेन प्रसारित नहीं करती और सेटिंग नहीं बदलती। परिणाम में हर कनेक्शन अलग दिखता है। transport_protocol_type में v2 का मतलब एन्क्रिप्टेड ट्रांसपोर्ट, v1 का मतलब पुराना बिना एन्क्रिप्शन वाला ट्रांसपोर्ट और detecting का मतलब अभी तय न हुई स्थिति है। session_id में v2 कनेक्शन का पहचानकर्ता होता है; बाकी मामलों में यह खाली है। केवल उसका होना दूसरे पक्ष की पुष्टि नहीं करता। दो संचालक किसी दूसरे भरोसेमंद माध्यम से अपने आपसी कनेक्शन का पहचानकर्ता मिलाकर बिचौलिए का पता लगा सकते हैं; सामान्य कनेक्शन यह जाँच अपने आप नहीं करते। परिणाम उस एक कनेक्शन के बारे में है, नेटवर्क में लेनदेन की पूरी यात्रा के बारे में नहीं। आउटपुट में नेटवर्क की ऐसी जानकारी भी होती है जिसे सार्वजनिक करना जरूरी नहीं है। [5] [1]
BIP324 के लेखक Dhruv Mehta, Tim Ruffing, Jonas Schnelli और Pieter Wuille हैं। नंबर 2019 में आवंटित हुआ; 17 अक्टूबर 2026 की समीक्षा में स्थिति Deployed है। इसे अपनाने के लिए Soft Fork या बिटकॉइन आपूर्ति में बदलाव नहीं चाहिए। यह नोड संचार का क्रमिक सुधार है, जिसका लाभ सही कार्यान्वयन और वास्तव में उपयोग किए जा रहे कनेक्शन पर निर्भर है। [1]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Full Node, Eclipse Attack, Bitcoin में गोपनीयता, Bitcoin Core. इस प्रविष्टि का उल्लेख यहाँ भी है Mix Network.