दिलचस्प पोस्ट
क्या संग्रह हमेशा आवंटित या कभी-कभी आवंटित ढेर होता है? यूनिक्स टाइमस्टैम्प क्या है और इसका उपयोग क्यों करना है? निष्पादन करने वाले AsyncTask को रद्द करने का आदर्श तरीका आईफ़ोन – UIView पर पारदर्शी आयत को देखने के लिए नीचे देखने के लिए जांचें कि क्या स्ट्रिंग में नंबर शामिल हैं जावा डेटाबेस में प्रत्येक तालिका में अभिलेखों की संख्या को सूचीबद्ध करने के लिए प्रश्न खिड़की के बिना टंकिनर संदेशबॉक्स? SQLite INSERT – डुप्लिकेट कुंजी अद्यतन पर रूबी में कुंजी है, रिटर्न हैश में हैश सॉर्ट करें क्या मैं ट्विटर के बूटस्ट्रैप टूलटिप के साथ जटिल एचटीएमएल का उपयोग कर सकता हूं? सबवर्जन: किसी क्लाइंट पर स्थानीय रूप से एक फ़ाइल में संशोधन को केवल उपेक्षा करें सी # में निलंबित प्रक्रिया बनावट का प्रयोग THREE.js में टेक्स्ट या एनटेक्स्ट डेटाटाइप पर जगह देने के विकल्प माइक्रो फ्यूजन और एड्रेसिंग मोड

GUIDs कितनी सुरक्षित हैं?

कुछ समय पहले मैंने एक वेब अनुप्रयोग पर काम किया था जहां उपयोगकर्ता टिकट खरीद सकते थे। जिस तरह से हमारे ग्राहक की प्रक्रियाएं काम की गईं, आपकी खरीद के परिणामस्वरूप जो प्रभावी ढंग से मिला वह उसमें टिकट संख्या वाला यूआरएल था

ये मध्य पूर्व में संपत्ति खरीदने के लिए टिकट थे, और प्रत्येक टिकट संभावित रूप से 3,00,000,000 डॉलर मूल्य के थे। स्पष्ट रूप से अनुक्रमिक पूर्णांकियों को डैश करना एक बुरा विचार होता। हम GUIDs का इस्तेमाल करते हैं क्योंकि वे मूल रूप से अप्रासंगिक हैं, लेकिन मेरा सवाल है: क्या वे पर्याप्त सुरक्षित हैं?

जैसा कि मैं समझता हूं, GUID .NET उत्पाद पूरी तरह छद्म यादृच्छिक (कुछ गैर-अलग-अलग बिट्स को छोड़कर) है। हालांकि, मुझे नहीं पता है कि उन्हें पैदा करने के लिए एल्गोरिदम किस प्रकार उपयोग किया जाता है।

एमएसडीएन प्रलेखन हमें बताता है कि Random तेजी से और असुरक्षित है, और RNGCryptoServiceProvider धीमा और सुरक्षित है। अर्थात्, यह मानना ​​उचित है कि किसी को Random के नतीजे की भविष्यवाणी करने के लिए पर्याप्त प्रयास किया जा सकता है, लेकिन RNGCryptoServiceProvider नहीं।

यदि आपने GUIDs का एक लंबा अनुक्रम देखा है, तो भविष्य की भविष्यवाणी करना संभव होगा? यदि हां, तो आपको कितने लोगों को देखना होगा?

[हमारे विशेष मामले में बाद में भौतिक सुरक्षा जांच हुई थी – आपको अपना टिकट खरीदने के लिए पासपोर्ट पेश किया था – इसलिए अगर कोई किसी और के GUID का अनुमान लगाया होता तो यह बहुत बुरा नहीं होता, इसलिए हम इसे पसीना नहीं करते उस समय पर। GUID को डेटाबेस कुंजी के रूप में उपयोग करने की सुविधा ने इसे उपयोग करने के लिए एक उपयोगी डेटाटाइप बनाया है।]


संपादित करें:

तो जवाब "पर्याप्त नहीं है"

नीचे दिए गए 0xA3 के उत्तर का उपयोग करके और उसके द्वारा लिंक किए गए प्रश्न के लिंक्स निम्नलिखित कोड से क्रिप्टोग्राफ़िक रूप से यादृच्छिक GUID उत्पन्न करेगा जो आरएफसी 4122 की धारा 4.4 के द्वारा मान्य है:

 static Guid MakeCryptoGuid() { // Get 16 cryptographically random bytes RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] data = new byte[16]; rng.GetBytes(data); // Mark it as a version 4 GUID data[7] = (byte)((data[7] | (byte)0x40) & (byte)0x4f); data[8] = (byte)((data[8] | (byte)0x80) & (byte)0xbf); return new Guid(data); } 

यह GUIDs को Guid.NewGuid() से अधिक धीरे धीरे पैदा करता है, लेकिन "बहुत यादृच्छिक" डेटा के 122 बिट्स के साथ, वे सुरक्षित रूप से अप्रत्याशित हैं।

बेशक, किसी क्रिप्टोग्राफ़िक रूप से यादृच्छिक पाठ टिकट संख्या के लिए किया होता, लेकिन GUID बहुत आसान है। 🙂

अन्य संस्करण के साथ 4 GUIDs में विशिष्टता की कोई पूर्ण गारंटी नहीं है, लेकिन बाधाएं प्रभावशाली हैं। जब तक आपके पास 326,915,130,069,135,865 (यानी एसकेआरटी ( -2 * 2 ^ 122 * एलएन (0.9 9) ) से कम खेल में GUIDs एक साथ, आप 99% से अधिक हो सकते हैं यकीन है कि कोई टक्कर नहीं हैं एक और रास्ता डालें: यदि आपके आवेदन की तरह सभी जगहों पर अतिप्रवाह त्रुटियां होंगी यदि आपके पास int.MaxValueint.MaxValue से ज्यादा कुछ है, तो आप 99.9999999999999999% से अधिक नहीं हो सकते हैं, कोई भी टकराव नहीं (यानी ई ^ – ((2 ^ 31-1) ^ 2) / (2 * 2 ^ 122)) ) यह लगभग 1,000 गुना अधिक निश्चित है कि आप यह हो सकते हैं कि एक उल्का पृथ्वी पर जाने वाले आवेदन के एक-दूसरे के भीतर पृथ्वी पर अधिकतर जीवन को मिटा नहीं देगा (यानी प्रति 100 मिलियन वर्ष )।

Solutions Collecting From Web of "GUIDs कितनी सुरक्षित हैं?"

UUIDs / GUIDs को आरएफसी 4122 द्वारा निर्दिष्ट किया गया है यद्यपि संस्करण 4 यूयूआईडी यादृच्छिक संख्या से बनाए गए हैं धारा 6 सुरक्षा पर एक स्पष्ट बयान देता है:

मान लें कि यूयूआईडी अनुमान लगाने में मुश्किल है ; उन्हें सुरक्षा क्षमताओं के रूप में उपयोग नहीं किया जाना चाहिए (उदाहरण के लिए जिन पहचानकर्ताओं का कब्ज़ा करने की अनुमति है), उदाहरण के लिए। एक उम्मीदवार यादृच्छिक संख्या स्रोत स्थिति को बढ़ाएगा।

GUID की यादृच्छिकता की एक अच्छी चर्चा भी इस प्रश्न में पाई जा सकती है:

रैंडम कैसे है System.Guid.NewGuid ()? (दो ले लो)

यह एक सुरक्षा उदाहरण के बारे में सोचने का एक आदर्श उदाहरण है दुर्भाग्यवश यह है कि डेवलपर्स के अधिकांश लोग सुरक्षा के बारे में क्या सोचते हैं …

… लगभग $ 3,000,000 के लायक मूल्य … क्या वे पर्याप्त सुरक्षित हैं? …

नहीं। कई समस्याओं का सामना करने के लिए कई संसाधन लाए जा सकते हैं जिनमें प्रति टिकट $ 3 एम का संभावित भुगतान होता है। इस तरह के पैसे बहुत से संसाधनों वाले लोगों को आकर्षित कर सकते हैं … कुछ बहुत गंभीर लोग एक सामान्य प्रयोजन यादृच्छिक संख्या जनरेटर पर निर्भर करता है जो कुछ भी का उपयोग बहुत यादृच्छिक नहीं है … इस प्रकार बहुत सुरक्षित नहीं है क्रिप्टोग्राफी की तुलना में यह अधिक अस्पष्टता है

… भौतिक सुरक्षा जांच … को पासपोर्ट का इस्तेमाल करना था …

दोबारा, लाइन पर शेडर की उस मात्रा के साथ … मैं आपको कोई भी पासपोर्ट प्राप्त कर सकता हूं जो आप चाहते हैं।

… भविष्य की भविष्यवाणी करना संभव है? …

हाँ। सवाल यह है कि … यह कब तक ले जाएगा? … प्रसंस्करण कार्य के कुछ यूनिट के अनुसार

… यदि हां, तो आपको कितने लोगों को देखना होगा? …

यह उनके सृजन के बारे में मैं क्या जानता हूं … ओएस, सीपीयू, आदि … और मुझे यकीन है कि मुझे आपकी फर्म में कोई मिल सकता है जो कि कुछ जानकारी देने में दिलचस्पी होगी … $ 100,000 या, अधिक संभावना, कम

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

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

संपादित करें: टेकडे की टिप्पणी पर …

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

GUID एक बहुत अच्छी तरह से ज्ञात एल्गोरिथ्म द्वारा उत्पन्न होते हैं इसमें कोई भी यादृच्छिकता नहीं है, जैसे कि नेटवर्क कार्ड आईडी और टाइमस्टैम्प के रूप में जाना जाता मूल्य जैसे कि उन्हें उत्पन्न करने के लिए उपयोग किया जाता है

उन्हें कभी भी सुरक्षा के साधन के रूप में इस्तेमाल नहीं करना चाहिए।

संपादित करें

ऐसा प्रतीत होता है कि GUID/UUID एल्गोरिदम का नया संस्करण उनके मूल्यों के भागों के लिए अब हार्डवेयर एड्रेस का उपयोग नहीं करता है और इसके बजाय छद्म-यादृच्छिक संख्या का उपयोग करता है लेकिन ये वास्तव में यादृच्छिक नहीं हैं और अभी भी सुरक्षा महत्वपूर्ण अनुप्रयोगों के लिए उपयोग नहीं किया जाना चाहिए।