डेटा को बंडल / एन्क्रिप्ट करने के लिए आप क्या उपयोग करते हैं?


14

अधिक से अधिक गेम डेटा संचालित मार्ग पर जा रहे हैं जिसका मतलब है कि आसान हेरफेर के आसपास सुरक्षा की एक परत होने की आवश्यकता है। मैंने इसे देखा है जहां खेल पूरी तरह से उनकी संपत्ति (ऑडियो, कला, डेटा) को बंडल करते हैं और मैं सोच रहा हूं कि वे कैसे प्रबंधित कर रहे हैं? क्या ऐसे एप्लिकेशन / लाइब्रेरी हैं जो आपके भीतर संपत्तियों के प्रबंधन के लिए बंडल करेंगे और आपकी सहायता करेंगे? यदि ऐसा कोई अच्छा संसाधन नहीं है जिसे आप पैकिंग / अनपैकिंग / एन्क्रिप्शन के लिए इंगित करेंगे?

यह विशिष्ट प्रश्न C ++ के चारों ओर घूमता है, लेकिन मैं यह सुनने के लिए खुला रहूंगा कि यह C # / XNA में भी कैसे प्रबंधित किया जाता है।

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


अच्छा सवाल है, जबकि मुझे विश्वास नहीं है कि 100% इसकी रक्षा करने का एक तरीका है, मैं यह मानता हूँ कि इसे व्यवस्थित और व्यवस्थित करने के बड़े तरीके हैं और मैं इसके बारे में अधिक जानना चाहता हूँ ...
Prix

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

मैं मुख्य रूप से संवेदनशील डेटा से संबंधित हूं जो डेटा-संचालित गेम (उदाहरण के लिए xml फाइलें) चलाता है। मैंने अभी-अभी गेम्स को एक या दो फाइलों में एक साथ सब कुछ बंडल करते देखा है।
डेविड मैकग्रा 19

4
उस डेटा के साथ खिलाड़ियों के आसपास रहने में क्या गलत है?
jsimmons

अपने खुद के ड्रम को हरा करने के लिए .. CFL: iki.fi/sol/cfl
जरी कोमप्पा

जवाबों:


8

एक अच्छी रणनीति खरोंच से अपना स्वयं का संग्रह प्रारूप बनाना है, और इसे अपने संग्रह में संपूर्ण अनुक्रमिक फ़ाइलों को संग्रहीत करने के बजाय डेटा विखंडू को इंगित करने वाली तालिका के साथ एक अनुक्रमित बनाना है, फिर अपनी सूचकांक तालिका को एन्क्रिप्ट करें और LZMA का उपयोग करके हर चंक को अलग से संपीड़ित करें। bzip2।

एक अन्य दृष्टिकोण यहाँ और वहाँ प्रक्रियात्मक डेटा जनरेटर के बिट्स का उपयोग कर रहा है (यदि आप उस तक जाना चाहते हैं, तो आप एक अतिरिक्त उपाय के रूप में ऑन-लाइन सर्वर से उक्त जनरेटर के लिए 'पैरामीटर' भी प्राप्त कर सकते हैं), और कुछ काम को बंद करके GPU के लिए आप पूर्ण मेमोरी डंप को रोक सकते हैं और खोए हुए प्रदर्शन के लिए कुछ बना सकते हैं।

फिर भी मुझे ऐसी तकनीकों का पता चलता है जो आमतौर पर प्रदर्शन और विकास के समय को बाधित करती हैं, जबकि सभी अंत उपयोगकर्ता को कुछ भी नहीं देते हैं लेकिन संभावित समस्याएं और अनावश्यक कीड़े हैं।

फिर भी, कुछ भी 100% सुरक्षित नहीं है।


इसके लिए +1। संपीड़न दोनों को बाधित करने की आवश्यकता को संतुष्ट करता है, और लोडिंग समय और ऐप फ़ुटप्रिंट में सुधार करेगा। पुरालेख / डेटा की पैकिंग को वैसे भी एक अमूर्त परत की आवश्यकता होगी, इसलिए इसे किसी ऐसी चीज़ के साथ मिलाकर जो लोड हो सकता है / जगह से विघटित हो सकती है, बहुत अधिक इंजीनियरिंग नहीं होनी चाहिए। यदि आप संपीड़न के साथ जाते हैं, तो मैं संपीड़न / अपघटन तर्क को लोडिंग / संग्रह सामग्री से अलग रखना सुनिश्चित करूँगा। इस तरह से आप बाद की तारीख में एक बेहतर एल्गोरिथ्म में स्वैप कर सकते हैं, इसके लिए आवश्यक इन्फ्रास्ट्रक्चर एल्गोरिदम के बीच नहीं बदलता है।
MrCranky

@ क्रैन्स्की: यदि आप ईए को उनके .package (DBPF) संग्रह प्रारूप (SPORE और द सिम्स गेम में प्रयुक्त) के साथ जिस तरह से देखते हैं, आप वास्तव में इसे एक्शन में देखेंगे। उनके इंजन में "संपीड़न प्रकार" के लिए सूचकांक तालिका में एक अतिरिक्त क्षेत्र है, जो कि एल्गोरिथ्म का उपयोग करने के लिए एक आंतरिक कोड है। वे चंक प्रकार के आधार पर अलग-अलग संपीड़न एल्गोरिदम का उपयोग करते हैं (टेक्स्ट चंक्स उदाहरण के लिए एक विशेष संपीड़न का उपयोग करते हैं) वे जिस संस्करण प्रणाली का उपयोग करते हैं वह मॉड्स और बैकवर्ड संगतता के एकीकरण के लिए भी अनुमति देता है। यहाँ DBPF प्रारूप पर और अधिक: simswiki.info/DatabasePackedFile
voodooattack

दिलचस्प सामान: मैंने इसे कभी भी #define के साथ संकलित समय पर किया है, लेकिन रनटाइम कुछ अच्छी संभावनाओं को खोलता है (जैसे कि आपके गेम के लिए हर फ़ाइल को फिर से बनाने के बिना आपके संपीड़न प्रकार को बदलने में सक्षम होना)।
MrCranky

11

संवेदनशील डेटा शिप न करें।

वहाँ है एन्क्रिप्टेड डेटा को शिप करने कोई तरीका नहीं है ताकि केवल गेम ही इसे एक्सेस कर सके। आप वास्तव में कठिन प्रयास कर सकते हैं, लेकिन आप जल्दी से DRM मुद्दों में शामिल हो सकते हैं।

यदि आप अपने खेल की संपत्ति को चुभने वाली नज़रों से दूर रखना चाहते हैं।

  1. इसे ज़िप करें
  2. xor फ़ाइल
  3. कुछ उबाऊ करने के लिए विस्तार (यानी my_level.zip.xor, उपयोग नहीं my_level.map)।

यह 95% शरारती उपयोगकर्ताओं को रोक देगा। अन्य 5% इसे प्राप्त करने जा रहे हैं इससे कोई फर्क नहीं पड़ता कि आप क्या करते हैं।
आप वास्तव में ज़िप करने की जरूरत नहीं है और xor। आप lzma के बजाय AES का उपयोग कर सकते हैं और एक ज्ञात कुंजी के साथ। बात यह है कि इस पर बहुत समय खर्च नहीं करना है।


यह वही है जो मैं आमतौर पर ज्यादातर खेलों से देखता हूं ... आपके लिए कुकी।
प्रिक्स

2
वास्तव में सिर्फ ज़िप + नाम ही काफी है।
कोडरंगर

1
मुझे ऐसा नहीं लगता, मैं That will stop 95% of mischeivieous users.इसे तोड़ने से बाहर पसंद करता हूं , जबकि मैं विश्वास करता हूं कि अभी भी लोग हैं जो वास्तव में इसे प्राप्त करेंगे मैं सराहना करता हूं यदि सभी और प्रत्येक में सक्षम नहीं हैं। इन दिनों अधिकांश 10 y पुराने बच्चों को पता है कि नोटपैड में फाइलें कैसे खोली जाती हैं और उसका नाम बदल दिया जाता है ...
Prix

1
जानिए, कैसे। कभी देखभाल करेंगे, नहीं।
कोडरेंजर

ज़िप + नाम पर्याप्त नहीं है। लिनक्स फ़ाइल प्रकार निर्धारित करने के लिए फ़ाइल एक्सटेंशन का उपयोग शायद ही कभी करता है। इसके बजाय यह पहले कुछ बाइट्स को देखता है और इसके प्रकार को निर्धारित करने के लिए उपयोग करता है। एक नामांकित ज़िप अभी भी लिनक्स में एक ज़िप के रूप में दिखाई देता है। विंडोज एक्सपी ऐसा नहीं करता है, यह अभी भी एक्सटेंशन का उपयोग करता है। मुझे नहीं पता कि विंडोज 7 यह कैसे करता है, लेकिन मुझे उम्मीद है कि भविष्य में विंडोज एक समान तकनीक का उपयोग करेगा।
deft_code

4

इस पर किसी भी बड़ी राशि को खर्च करना शायद मूर्खतापूर्ण है। GPU से सीधे बनावट और मॉडल डेटा को हथियाने के लिए उपकरण हैं, और ध्वनियों को एक आभासी लूपबैक डिवाइस पर आसानी से बताया जा सकता है। कुछ भी जो वास्तव में सुरक्षित होने के लिए एक सर्वर पर रहने और केवल चुनौती / प्रतिक्रिया के माध्यम से काम करने की आवश्यकता है। ग्राहक डेटा सत्यापन कर रहा है एक और कहानी है, वाल्व की तरह कुछ और -verify_all। यह अभी भी कठिन है, क्योंकि आप इसे लागू करने के लिए स्थानीय निष्पादन योग्य पर भरोसा नहीं कर सकते हैं (या कम से कम आप अपने एंड-पॉइंट एंटी-चीट सिस्टम पर भरोसा नहीं कर सकते हैं, जो कि एक मूर्खतापूर्ण विचार है)।


4

मेरा काम एंटीटामपर सॉफ्टवेयर में है। मैं किसी ऐसे व्यक्ति को जानता हूं जो एक पुराने स्कूल का पटाखा है। वह सांस लेने जैसे खेल में दरार डालता है। आप उसके जैसे लोगों को रोक नहीं सकते। यदि आपका गेम पर्याप्त लोकप्रिय है, तो आपके गेम के कई क्रैक किए गए संस्करण टोरेंट साइटों को केवल कुछ दिनों के बाद ही हिट करेंगे, चाहे आप कुछ भी करें। मेरी सलाह यह है कि औसत जौ को बाहर रखने के लिए बस नंगे न्यूनतम करना चाहिए जो सोचता है कि वह इस रिवर्स इंजीनियरिंग चीज को एक छुरा देना चाहता है।


1
यही लक्ष्य है। मुझे हैकर्स से लड़ने की बिल्कुल इच्छा नहीं है।
डेविड मैकग्रा

1

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

1) आप क्या सुरक्षित कर रहे हैं, किससे और क्या प्रभाव है अगर वह डेटा असुरक्षित है - सुरक्षा व्यवस्थित तकनीकी समाधानों की तुलना में जोखिम मूल्यांकन के बारे में कहीं अधिक है
2) मुझे लगता है कि आपका प्लेटफ़ॉर्म डेस्कटॉप है (उदाहरण के लिए विंडोज़ / ओएसएक्स) उस मामले में आपके पास है PS3 / क्सीनन जैसे मालिकाना हार्डवेयर की तुलना में एक अलग समस्या का स्थान है जिसकी कर्नेल स्तर सुरक्षा पर अपने स्वयं के प्रयास हैं (चाहे यह बहस के लिए एक वैध समाधान है)
3) एन्क्रिप्शन! = सुरक्षा। एन्क्रिप्शन केवल यह गारंटी देता है कि आपका डेटा पढ़ा नहीं जा सकता है , यह गारंटी नहीं देता है कि आपका डेटा लिखा नहीं जा सकता है या फिर से खेलना / अनुमानित नहीं किया जा सकता है

यदि आपकी आवश्यकताओं को आपके डेटा को छेड़छाड़ करने वाला सबूत बनाना है, तो आपको अपने डेटा को हैशिंग के बारे में सोचने की ज़रूरत है (अधिमानतः SHA-256 या SHA-512 के साथ) फिर से पुनरावृति करने के लिए, इस बारे में सोचें कि यह महत्वपूर्ण क्यों है और आप अपने सुरक्षा को जोड़ने से क्या हासिल करते हैं। प्रणाली।
यह भी जानने योग्य है कि आपके उत्पाद में एन्क्रिप्शन टेक जोड़ने से निर्यात प्रतिबंधों के कारण कानूनी प्रभाव पड़ सकता है (एन्क्रिप्शन तकनीक को वर्गीकृत किया गया है क्योंकि प्रतिबंधित हथियार ग्रेड तकनीक यह मानती है या नहीं) इसलिए इन कानूनी मुद्दों को दूर करने वाले पुस्तकालयों का उपयोग करना उचित है।
अंत में - कभी नहीं, कभी भी अपनी स्वयं की एन्क्रिप्शन तकनीक को रोल करें - अच्छी तरह से ज्ञात, प्रलेखित, शोधित एल्गोरिदम जैसे एईएस, ब्लोफिश, आरएसबी आदि का उपयोग करें।

ps सार्वजनिक / निजी कुंजी डेटा की बड़ी मात्रा को एन्क्रिप्ट करने के लिए उपयुक्त या व्यावहारिक नहीं है इसलिए DRM / PGP आदि एक संकर RSA + सममित प्रणाली का उपयोग करते हैं अर्थात RSA के साथ सममित कुंजी सुरक्षित करें फिर उस कुंजी का उपयोग करके मानक सममित एन्क्रिप्शन करें

यह एक बहुत बड़ा जटिल विषय है और मैंने निश्चित रूप से इसे न्याय नहीं किया है

उम्मीद है की वो मदद करदे


1

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

http://wiki.devklog.net/index.php?title=The_MoPaQ_Archive_Format

सामान्य आर्काइव लेआउट इस प्रकार है:

पुरालेख शीर्षलेख फ़ाइल डेटा फ़ाइल डेटा - विशेष फ़ाइलें हैश तालिका ब्लॉक तालिका विस्तारित ब्लॉक तालिका सशक्त डिजिटल हस्ताक्षर

इस प्रारूप में सब कुछ है। अवरोधक, विस्तारित अवरोधक, क्षेत्रों में डेटा विभाजन (आसान स्ट्रीमिंग के लिए), 7 के लिए समर्थन (!) संपीड़न एल्गोरिदम (यदि आप ध्वनि संपीड़न की गणना करते हैं) जो मनमाने ढंग से, कमजोर डिजिटल हस्ताक्षर, मजबूत डिजिटल हस्ताक्षर और इतने पर जोड़ा जा सकता है।

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


लिंक के लिए धन्यवाद, मैंने कभी एमपीक्यू के विवरण में अधिक देखने के लिए नहीं सोचा था (और आम तौर पर माना जाता है कि वे अनुपलब्ध होंगे)
बिल

यदि यह इतना सुरक्षित है, तो इसे इस हद तक रिवर्स इंजीनियरिंग क्यों किया गया है और यहां तक ​​कि इसके साथ बातचीत करने के लिए 3 पार्टी लाइब्रेरी भी हैं? ;-)
कोडरंग

अधिकांश (पढ़ें: सभी) * .mpq फ़ाइलों के साथ बातचीत के लिए उपकरण स्टॉर्मलिब पर निर्भर करते हैं, जो एक आदमी द्वारा लिखा और बनाए रखा जाता है।

जहां तक ​​मुझे पता है, स्टॉर्मलिब के लिए आपको मूल गेम की आवश्यकता होती है, जो संग्रह से उपजा है, क्योंकि डिक्रिप्शन के लिए कुंजी निष्पादन योग्य में संग्रहीत हैं। हालांकि, यह इतना सुरक्षित क्यों है, इसका सबसे बड़ा कारण यह नहीं है कि इसे तोड़ना असंभव है। लेकिन नेट के माध्यम से भेजे गए ऑन-द-फ्लाई डेटा के लिए, यह किसी से पीछे नहीं है। डेटा इतना भारी एन्क्रिप्टेड है कि यह फ़्लाई पर डिक्रिप्ट करने के लिए तीसरे पक्ष के लिए निरर्थक होगा।

और वास्तव में 'वर्ल्ड ऑफ Warcraft' के साथ, ब्लिज़ार्ड ने स्ट्रीमिंग तकनीक का बीड़ा उठाया है, जिससे आप अपने हार्डड्राइव पर डाउनलोड किए गए संपूर्ण डेटा के केवल कुछ प्रतिशत के साथ गेम खेल सकते हैं। इस तरह की नौकरी पर * .mpq फॉर्मेट एक्सेल होता है। इस बात का उल्लेख नहीं है कि जब गेम की आधिकारिक रिलीज़ से कुछ दिन पहले बर्फ़ीला तूफ़ान द्वारा Starcraft 2 इंस्टॉलर को रिलीज़ किया गया था, तो उसके अभिलेखागार को इतना भारी एन्क्रिप्ट किया गया था कि वे गेम रिलीज़ होने के बाद तक खुले नहीं थे। : पी

0

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

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

विपक्षी, एन्क्रिप्शन के लिए एक अच्छा दायित्व का उल्लेख करना भूल गए (C ++ में) LibTomCrypt है

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