पी 2 पी नेटवर्क छुपा स्थिति?


13

मैं सुरक्षित गेमिंग के लिए P2P आर्किटेक्चर पर काम कर रहा हूं और मैंने इस समस्या को पांच उप-समस्याओं में विभाजित किया है:

  • भेजे गए खेल राज्य का गैरकानूनी संशोधन
  • सटीक रूप से ड्रॉप थिएटर
  • एक खेल राज्य पर सहमत होना
  • "आगे देखो" धोखा से बचना
  • विरोधियों से संवेदनशील जानकारी छिपाना

पहले चार मैं बहुत ज्यादा हल है, लेकिन यह आखिरी है जिसके साथ मैं परेशान हूं।

इससे पहले कि मैं विवरण में जाऊं, मैं पूछना चाहता हूं कि क्या कोई चीज है जो मैंने "धोखा सबूत" पी 2 पी नेटवर्क बनाने की अपनी सूची में याद की है। मुझे धोखा देने में कोई दिलचस्पी नहीं है जैसे कि aimbots का उपयोग करना, मैं केवल p2p नेटवर्क को एक केंद्रीकृत सर्वर के रूप में सुरक्षित बनाने में दिलचस्पी रखता हूं।

इसलिए मेरे प्रयास में अब तक संवेदनशील जानकारी छुपाने के लिए मैंने एक ऐसे खेल में खिलाड़ियों की स्थिति पर ध्यान केंद्रित किया है जहाँ आपके प्रतिद्वंद्वी की स्थिति को हमेशा नहीं जाना चाहिए। तब समस्या यह हो जाती है कि कैसे निर्धारित किया जाए कि आपको अपने प्रतिद्वंद्वी की स्थिति को जाने बिना आपको अपने प्रतिद्वंद्वी को स्थिति भेजनी चाहिए।

मैंने ऐसे तरीकों को खारिज कर दिया है, जैसे विरोधी आपकी तुलना करने के लिए कई झूठे पदों को भेज रहा है, क्योंकि आपका प्रतिद्वंद्वी आसानी से इस तरह की व्यवस्था का दुरुपयोग कर सकता है क्योंकि वह आपकी स्थिति को प्राप्त कर लेगा यदि कोई गलत स्थिति आपके स्थान से "दृश्यमान" हुई।

जिस विधि पर मैं ध्यान केंद्रित कर रहा हूं, उसमें आपको अपने प्रतिद्वंद्वी से "दृश्य क्षेत्र" प्राप्त होता है और यह निर्धारित कर सकता है कि आपको अपनी स्थिति भेजनी चाहिए या नहीं। यह हालांकि लीग ऑफ लीजेंड्स जैसे खेलों में एक समस्या है जहां आपके प्रतिद्वंद्वी का दृश्य क्षेत्र भी अत्यधिक संवेदनशील जानकारी है। मैंने एक विलक्षण मैट्रिक्स का उपयोग करके विज़ुअल फ़ील्ड को परिवर्तित करके इसे हल करने का प्रयास किया है जिसका अर्थ है कि आप विज़ुअल फ़ील्ड के परिवर्तित संस्करण से मूल संस्करण पर वापस नहीं जा सकते हैं, लेकिन चूंकि यह एक रैखिक परिवर्तन है, तब भी आप यह पता लगा सकते हैं कि आपकी स्थिति अंदर है या नहीं दृश्य क्षेत्र या नहीं।

हालांकि यह पूरी तरह से काम नहीं करता है, परिवर्तन के बाद सटीक दृश्य क्षेत्र को बहाल नहीं किया जा सकता है, लेकिन दृश्य क्षेत्र में "ढलान" के बारे में जानकारी (दृश्य क्षेत्र कई लाइनों द्वारा निर्मित है, और प्रत्येक पंक्ति का ढलान निर्धारित किया जा सकता है) बहाल किया गया और इसका उपयोग मूल दृश्य क्षेत्र को अपेक्षाकृत सस्ते में पुनर्निर्माण के लिए किया जा सकता है।

संक्षेप में, मुझे जो चाहिए वह एक फ़ंक्शन है जो यह निर्धारित कर सकता है कि कोई पद "दृश्यमान" है या नहीं, और इस फ़ंक्शन / विज़ुअल फ़ील्ड को फिर से संगठित करना इतनी कम्प्यूटेशनल रूप से मांग करना है कि एक बार जब आप विज़ुअल फ़ील्ड का पुनर्निर्माण कर रहे हों तो यह अब प्रासंगिक नहीं है कार्रवाई में खेल। क्या कोई सुपर स्मार्ट व्यक्ति है जो इस तरह की विधि के बारे में जानता है?

संपूर्ण "विज़न फ़ील्ड" के बारे में लोगों को सीम की तरह संपादित करें ताकि मैं यहाँ अधिक विस्तृत विवरण देना चाहूँ। दृष्टि क्षेत्र में लाइनों के एक समूह के समूह होते हैं, आप आसानी से देख सकते हैं कि क्या कोई स्थिति इन समूहों में से किसी एक के अंदर है बस जाँच करके कि आपकी स्थिति रेखा के किस तरफ है, यदि यह उस समूह की सभी पंक्तियों के लिए एक ही तरफ है, जिसे आप जानते हैं यह उस समूह के अंदर है और इस प्रकार दृष्टि क्षेत्र के अंदर है।

हालाँकि भेजी जा रही जानकारी यह रेखा नहीं है, लेकिन लाइन का रूपांतरण और परिवर्तन (2 बाय 2 एक मैट्रिक्स), आप अभी भी जाँच कर सकते हैं कि आपके द्वारा प्राप्त किए गए परिवर्तन का उपयोग करते हुए आपकी स्थिति किस लाइन पर पहली बार बदल रही है। और उस मान को रूपांतरित रेखा से तुलना करना। यहां कुंजी यह है कि परिवर्तन एकवचन है, जिसका अर्थ है कि मूल रेखा पर वापस जाने के लिए एक व्युत्क्रम खोजना असंभव है। हालाँकि, यह उस रेखा के ढलान को निर्धारित करना संभव है जो लाइन को फिर से जाँच कर बनाता है, जिस पर परिवर्तित लाइन के किस तरफ बहुत सारे पॉइंट झूठ होते हैं, जब तक आपने लाइन की उत्पत्ति को बहुत कम कम्प्यूटेशनल रूप से सस्ता कर दिया हो अगर आपको पता नहीं है रेखा का ढलान।

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


1
मैंने इस सटीक समस्या पर ध्यान केंद्रित करते हुए लगभग 11 साल बिताए हैं, और आपके द्वारा सूचीबद्ध पहली 4 चीजें तुच्छ हैं, लेकिन आपने जो पूछा है वह एसई उत्तर में फिट नहीं होगा। मैं अंत में इस पर एक व्हाइटपेपर पा लूंगा।
मिकेल

मुझे लगता है कि यह अन्य समस्याओं के लिए आपके दृष्टिकोण पर बहुत निर्भर होगा
फीनिक्स

इस समस्या को हल करने के लिए आपके पास सबसे अच्छा तरीका क्या है? :) और आप दृश्यमान / इंटरैक्शन फ़ील्ड का उपयोग करने के बारे में क्या सोचते हैं? क्या यह कुछ आपने देखा है?
एलोन

मैंने रूपांतरित क्षेत्रों की जांच की है और दिखाया है कि यह पूरी तरह असुरक्षित है। एक खिलाड़ी हमेशा दूसरे खिलाड़ी की स्थिति का पता लगाने में सक्षम होगा, भले ही आप परिवर्तन को कैसे छिपाएं, क्योंकि न तो खिलाड़ी कुछ भी सीख सकते हैं जब तक कि उनमें से सभी के पास आवश्यक जानकारी न हो, जिस बिंदु पर वे दूसरे खिलाड़ी की स्थिति सीखते हैं अन्य खिलाड़ी को बताए बिना प्रोटोकॉल को समाप्त कर सकता है।
मिकेल

जैसा कि "सर्वश्रेष्ठ" पद्धति के लिए ... मैं ऊपर गंभीर था, यहां तक ​​कि सबसे सरल विधि एक जटिल विषय है जिसे समझाने के लिए वास्तव में एक पूरे श्वेतपत्र की आवश्यकता होती है।
मिकेल

जवाबों:


1

मुझे लगता है कि अगर आपके पास दृष्टि क्षेत्र के लिए एक अपरिवर्तनीय एल्गोरिथ्म है, तो भी लोग गणना करके लाभ प्राप्त कर सकते हैं यदि उनके पास के अंक उस स्थान के एक चौराहे पर परिणामित होते हैं और एक विरोधी दृश्य क्षेत्र प्रतिच्छेद होगा। एक बुरे मामले में (नक्शे के अनुपात के लिए एक बड़ी दृष्टि क्षेत्र की) आप अपने दुश्मन के सटीक बिंदु को समाप्त करने की प्रक्रिया द्वारा गणना कर सकते हैं।

मुझे लगता है कि इसके बजाय शायद सभी जुड़े साथियों को यह घोषणा करनी चाहिए कि वे नक्शे के किस हिस्से में हैं, यह निर्धारित करने के लिए कि क्या वे एक दूसरे को देख सकते हैं या नहीं। यदि तीसरा आयाम महत्वपूर्ण है तो पहले मानचित्र को 2x2 या 2x2x2 में विभाजित करें। फिर हर कोई एक दूसरे को बताता है कि क्या वे 1,0 1,1 0,1 या 0,0 में हैं। यदि वे एक ही चतुर्थांश में नहीं हैं, तो उनकी बातचीत अगले चेक तक खत्म हो गई है। यह उनके सटीक स्थान की सुरक्षा करता है। यदि वे एक ही चतुर्थांश में मौजूद हैं, तो वे इस स्थान को 4 नए क्वाइड में विभाजित करेंगे, और तब तक जारी रखेंगे जब तक वे यह निर्धारित नहीं कर लेते कि वे एक-दूसरे द्वारा देखे जाने के लिए पर्याप्त हैं।

बेशक क्वाडंटेंट की सीमाओं के साथ समस्याएं हैं, लेकिन पड़ोसी क्वाडंट्स को अतिरिक्त प्रश्नों द्वारा हल करना चाहिए।


-1

इसे एक निश्चित उत्तर के रूप में न लें, विषय वास्तव में व्यापक है (यदि कोई आपके प्रश्न को ध्वजांकित करता है तो मुझे आश्चर्य नहीं होगा)।

आप कुछ खिलाड़ियों को सर्वर के रूप में उपयोग करके इसे हल कर सकते हैं, और जब एक खिलाड़ी को सर्वर के रूप में उपयोग किया जाता है तो यह उन खिलाड़ियों के खेल में भाग नहीं ले सकता है जो वास्तव में इस सर्वर से खेल रहे हैं

यदि आपका गेम बहुत ज्यादा डिमांडिंग नहीं है, तो आप एक ही प्लेयर मशीन से कई सर्वर चला सकते हैं (निश्चित रूप से यह उपयोगी होगा, क्योंकि NAT समस्या के कारण सभी खिलाड़ी सर्वर के रूप में नहीं चल सकते, धन्यवाद IPv6 !!)।

यहां मुख्य समस्या यह है कि चूंकि एक यादृच्छिक खिलाड़ी को सर्वर के रूप में उपयोग किया जाएगा, इसलिए एक मामूली मौका होगा कि यह एक "समझौता" खिलाड़ी होगा या यह एक "समझौता" खिलाड़ी को सिमुलेशन पास करेगा, जिससे संवेदनशील जानकारी को पारित किया जा सकेगा ( वास्तव में, वास्तव में उस बिंदु पर सर्वर मनमाना डेटा भेज सकता है और वैसे भी जीत को बाध्य कर सकता है)।

यदि आप प्राधिकरणों और लॉगिन की जांच के लिए एक केंद्रीय सर्वर का उपयोग करते हैं तो आप खेलों को बेहतर ढंग से व्यवस्थित करने और खिलाड़ियों को आसानी से प्रतिबंधित करने की अनुमति दे सकते हैं (हालांकि यह अब एक शुद्ध पी 2 पी नेटवर्क नहीं होगा)।

आप दुनिया को स्लाइस में भी विभाजित कर सकते हैं और दिखाई देने वाले स्लाइस के एक हैश की गणना कर सकते हैं, लेकिन यह आसानी से धोखा दे सकता है, सबसे आम दिखाई देने वाले स्लाइस बहुत जल्दी हैश की एक तालिका बनाने की अनुमति देगा।

मेरे लिए आपका प्रश्न क्रिप्टोग्राफ़िक फ़ंक्शन की खोज करने की कोशिश करने जैसा है। परीक्षा जल्दी होनी चाहिए, लेकिन पाशविक बल धीमा होना चाहिए ।।

मेरे दिमाग में आने वाली सबसे सरल बात (मेरे काम से संबंधित) भी कुछ त्वरित दृष्टि पहचान एल्गोरिथ्म (संवर्धित वास्तविकता जैसी) का उपयोग करना है।

यदि आप अपने स्थान का एक त्वरित "स्नैपशॉट" (स्लाइस के लिए अनुकूल) बनाने का प्रबंधन करते हैं, तो केवल तब ही पहचाना जा सकता है जब कुछ दिखाई दे रहा हो, तब आप इसे करने जा रहे हैं। खासकर अगर नक्शे में समयबद्ध तत्व हैं जो त्वरित फेंक दूर मान्यता पैटर्न उत्पन्न करने की अनुमति देते हैं।

हालांकि, भले ही ऐसे एल्गोरिदम मोबाइल पर भी बहुत तेज़ हो जाएं, मुझे नहीं लगता कि वे पहले व्यक्ति शूटर के लिए पर्याप्त तेज़ होंगे।

इसके अलावा, यदि आप उन्हें बहुत तेज़ बनाते हैं, तो आपके पास नकली सकारात्मकता होगी! और एक खिलाड़ी वैसे भी एक गेम बना सकता है जो कुछ "कॉमन विजुअल" की कोशिश करता है ताकि विज़ुअल में से एक फीचर डिटेक्शन एल्गोरिदम के लिए सकारात्मक मेल खाए।

मुझे आश्चर्य नहीं होगा कि क्वांटम कम्प्यूटिंग में आपकी समस्या का एकमात्र संभव समाधान संभव होगा, और कुछ वर्षों के भीतर किसी ने एक पेपर प्रकाशित किया जो पी 2 पी नेटवर्क में आंतरिक सीमा है।


हाँ, मुझे लगता है कि 4GB डेटा के साथ भी आप आसानी से धोखा देने के लिए पर्याप्त हैश स्टोर कर सकते हैं। मैंने एक गणित क्षेत्र के बारे में पढ़ा जो एन्क्रिप्टेड डेटा पर परिवर्तनों के बारे में था (जैसे एक एन्क्रिप्टेड मूल्य के मूल्य को समेटना ताकि वास्तविक मूल्य का खुलासा किए बिना यह बढ़ जाए), शायद आप उस क्षेत्र में कुछ पा सकते हैं, लेकिन ईमानदारी से मुझे समझ में नहीं आता है वह क्षेत्र ^ ^
कॉफिडेवेलर

शायद मुझे "दृष्टि क्षेत्र" पर स्पष्ट होना चाहिए, इसमें लाइनों का एक गुच्छा होता है ताकि आप गणना कर सकें कि इस रेखा के किस तरफ एक बिंदु है, ऐसी रेखाओं के समूह उत्तल क्षेत्र बनाते हैं और ऐसे क्षेत्रों के समूह पूरे बनाते हैं। "दृष्टि क्षेत्र"। परिवर्तन प्रत्येक रेखा को एक बिंदु में बदल देता है और फिर उस बिंदु के एक तरफ सभी बिंदु इस बिंदु के एक तरफ बदल जाते हैं ताकि आप अभी भी गणना कर सकें कि मूल रूप से लाइन के किस तरफ, यहां तक ​​कि आप गणना नहीं कर सकते मूल पंक्ति।
एलोन

"और जब एक खिलाड़ी को सर्वर के रूप में उपयोग किया जाता है तो वह खिलाड़ियों के खेल में भाग नहीं ले सकता है जो वास्तव में उस सर्वर को खेल रहे हैं" तो आपका मतलब पी 2 पी छोड़ने की तरह है?
होब्बामोक

-3

जब आप 'विरोधियों से संवेदनशील जानकारी छिपाना' कहते हैं, तो इसका मतलब है कि आप पैकेट सूँघने वाले लोगों से अपने ट्रैफ़िक को सुनने और अपने गेम के बारे में जानकारी प्राप्त करने से बचना चाहते हैं?

यदि हां, तो इसका एक आसान जवाब है; अधिकांश AAA गेम (और निश्चित रूप से कंसोल गेम) एन्क्रिप्शन का उपयोग करते हैं। वास्तव में, यह इतना सामान्य है कि पहले से ही गेम में उपयोग किए जाने वाले कई नेटवर्किंग बिचौलियों में पहले से ही पैकेट एन्क्रिप्शन है।

आमतौर पर यह इस तरह से काम करता है: जब आप किसी अन्य मशीन से कनेक्शन खोलते हैं, तो सॉकेट सक्रिय होने से पहले, एक कुंजी एक्सचेंज होता है। मुझे पता है कि XBox पर यह डिफी-हेलमैन प्रमुख एक्सचेंज हुआ करता था; मुझे कोई पता नहीं है कि वे अभी भी इसका उपयोग करते हैं। फिर एक बार जब आपके पास आपकी चाबियाँ होती हैं, तो भेजे गए सभी डेटा कुंजियों का उपयोग करके एन्क्रिप्ट किए जाते हैं और रसीद पर अनएन्क्रिप्टेड होते हैं। यदि कोई आपके पैकेटों को पढ़ने के लिए एक स्निफर का उपयोग करता है, तो वे जिबरिश की तरह दिखेंगे और यह संभावना नहीं है कि वे उन्हें डिक्रिप्ट कर सकते हैं, क्योंकि उनके पास चाबी नहीं है। (उन्नत हैकर्स रनिंग गेम की प्रक्रिया मेमोरी तक पहुंचकर उन्हें प्राप्त करने में सक्षम हो सकते हैं, लेकिन यह दुर्लभ और संभावना नहीं है)

एन्क्रिप्शन नियम का एकमात्र अपवाद VoiceChat डेटा है; अमेरिका में कानून द्वारा, वॉइस चैट को स्पष्ट रूप से भेजा जाना चाहिए ताकि यदि वे चाहें तो सीआईए सुन सके। कंसोल आमतौर पर वॉयस डेटा को टैग करने का एक तरीका प्रदान करते हैं ताकि यह एन्क्रिप्ट न हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.