ट्रांसपोर्ट नेटवर्क आईडी जाँच

Proposal 147
Closed
Author zzz
Created 2019-02-28
Last Updated 2019-08-13
Target Version 0.9.42
Implemented In 0.9.42

अवलोकन

NTCP2 (प्रस्ताव 111) सत्र अनुरोध चरण में विभिन्न नेटवर्क आईडी से कनेक्शन को अस्वीकार नहीं करता है। वर्तमान में कनेक्शन को सत्र पुष्टि चरण में अस्वीकार किया जाना चाहिए, जब बॉब एलिस का RI जांचता है।

इसी प्रकार, SSU सत्र अनुरोध चरण में विभिन्न नेटवर्क आईडी से कनेक्शन को अस्वीकार नहीं करता है। वर्तमान में कनेक्शन को सत्र पुष्टि चरण के बाद अस्वीकार किया जाना चाहिए, जब बॉब एलिस का RI जांचता है।

यह प्रस्ताव दोनों ट्रांसपोर्ट्स के सत्र अनुरोध चरण में नेटवर्क आईडी को शामिल करने के लिए परिवर्तन करता है, एक पिछड़ा-संगत तरीके से।

प्रेरणा

गलत नेटवर्क से आने वाले कनेक्शन्स को शीघ्रता से अस्वीकार कर दिया जाना चाहिए और सहकर्मी को ब्लैकलिस्ट में डाल देना चाहिए।

लक्ष्य

  • परीक्षण नेटवर्क्स और फोर्क्ड नेटवर्क्स का क्रॉस-कंटैमिनेशन रोकना

  • NTCP2 और SSU हैंडशेक में नेटवर्क आईडी जोड़ना

  • NTCP2 के लिए, रिसीवर (इनकमिंग कनेक्शन) को यह पहचानने में सक्षम होना चाहिए कि नेटवर्क आईडी भिन्न है, ताकि वह सहकर्मी के IP को ब्लैकलिस्ट कर सके।

  • SSU के लिए, रिसीवर (इनकमिंग कनेक्शन) सत्र अनुरोध चरण में ब्लैकलिस्ट नहीं कर सकता है, क्योंकि इनकमिंग IP को स्पूफ किया जा सकता है। हैंडशेक की क्रिप्टोग्राफी में परिवर्तन करना पर्याप्त है।

  • गलत नेटवर्क से रीसीडिंग को रोकना

  • यह पिछड़ा-संगत होना चाहिए

गैर-लक्ष्य

  • NTCP 1 अब उपयोग में नहीं है, इसलिए इसे नहीं बदला जाएगा।

डिजाइन

NTCP2 के लिए, एक वैल्यू को XOR करने से केवल एन्क्रिप्शन असफल हो सकता है, और रिसीवर के पास उत्पत्तिकर्ता को ब्लैकलिस्ट करने के लिए पर्याप्त जानकारी नहीं होगी, इसलिए यह दृष्टिकोण पसंद नहीं किया जाता है।

SSU के लिए, हम सत्र अनुरोध में कहीं नेटवर्क आईडी को XOR करेंगे। चूंकि यह पिछड़ा-संगत होना चाहिए, हम (id - 2) को XOR करेंगे ताकि यह वर्तमान नेटवर्क आईडी मान 2 के लिए एक नो-ऑप हो।

विनिर्देशन

प्रलेखन

वैध नेटवर्क आईडी मानों के लिए निम्नलिखित विनिर्देशन जोड़ें:

उपयोगनेटआईडी संख्या
आरक्षित0
आरक्षित1
वर्तमान नेटवर्क (डिफ़ॉल्ट)2
आरक्षित भविष्य नेटवर्क3 - 15
फोर्क्स और परीक्षण नेटवर्क16 - 254
आरक्षित255

जावा I2P कॉन्फ़िगरेशन डिफ़ॉल्ट बदलने के लिए “router.networkID=nnn” है। इसे बेहतर तरीके से दस्तावेज़ित करें और फोर्क्स व परीक्षण नेटवर्क को अपने कॉन्फ़िगरेशन में इस सेटिंग को जोड़ने के लिए प्रोत्साहित करें। अन्य कार्यान्वयन को इस विकल्प को लागू करने और दस्तावेज़ित करने के लिए प्रोत्साहित करें।

NTCP2

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

SSU

SSU के लिए, HMAC-MD5 गणना में ((netid - 2) « 8) का एक XOR जोड़ें।

मौजूदा:

HMAC-MD5(encryptedPayload + IV + (payloadLength ^ protocolVersion), macKey)

  '+' जोड़ने का मतलब है और '^' का मतलब है exclusive-or।
  payloadLength एक 2 बाइट बिना चिन्ह का पूर्णांक है
  protocolVersion एक बाइट 0x00 है

नया:

HMAC-MD5(encryptedPayload + IV + (payloadLength ^ protocolVersion ^ ((netid - 2) << 8)), macKey)

  '+' जोड़ने का मतलब है, '^' का मतलब है exclusive-or, '<<' का मतलब है left shift।
  payloadLength एक दो बाइट बिना चिन्ह का पूर्णांक है, big endian
  protocolVersion दो बाइट्स 0x0000 हैं, big endian
  netid एक दो बाइट बिना चिन्ह का पूर्णांक है, big endian, वैध मान 2-254 हैं

रीसीडिंग

रिसीड su3 फ़ाइल को लाने के लिए एक पैरामीटर ?netid=nnn जोड़ें। रिसीड सॉफ़्टवेयर को netid की जाँच करने के लिए अपडेट करें। यदि यह मौजूद है और “2” के बराबर नहीं है, तो इसे एक त्रुटि कोड के साथ अस्वीकार कर देना चाहिए, शायद 403। टेस्ट या फोर्क्ड नेटवर्क के लिए एक वैकल्पिक netid कॉन्फ़िगर करने के लिए रिसीड सॉफ़्टवेयर में एक कॉन्फ़िगरेशन विकल्प जोड़ें।

नोट्स

हम परीक्षण नेटवर्क्स और फोर्क्स को नेटवर्क आईडी बदलने के लिए मजबूर नहीं कर सकते। सबसे अच्छा जो हम कर सकते हैं वह है प्रलेखन और संचार। यदि हमें अन्य नेटवर्क्स के साथ क्रॉस-कंटैमिनेशन का पता चलता है, तो हमें नेटवर्क आईडी बदलने के महत्व की व्याख्या करने के लिए डेवलपर्स या ऑपरेटर्स से संपर्क करने का प्रयास करना चाहिए।

मुद्दे

माइग्रेशन

यह वर्तमान नेटवर्क आईडी मान 2 के लिए पिछड़ा-संगत है। यदि कोई अलग नेटवर्क आईडी मान के साथ नेटवर्क्स (परीक्षण या अन्यथा) चला रहा है, तो यह परिवर्तन पिछड़ा-असंगत है। हालांकि, हमें इसके बारे में किसी के ज्ञान नहीं है। यदि यह केवल एक टेस्ट नेटवर्क है, तो कोई समस्या नहीं है, बस सभी राउटर को एक बार में अपडेट कर दें।