मेरे पास एक वेब एप्लिकेशन है, और Google को Google खातों में जो कुछ जोड़ा गया है, उसके समान सुरक्षा के लिए सुरक्षित साइन-ऑन जोड़ने के साथ काम किया गया है।किसी वेब एप्लिकेशन को एक्सेस करने के लिए कंप्यूटर को अधिकृत करना
प्रयोग करें प्रकरण
अनिवार्य रूप से, जब कोई उपयोगकर्ता में लॉग करता है, हम अगर उपयोगकर्ता पहले से इस कंप्यूटर को प्राधिकृत किया है पता लगाने के लिए चाहते हैं। यदि कंप्यूटर को अधिकृत नहीं किया गया है, तो उपयोगकर्ता को एक बार का पासवर्ड भेजा जाता है (ईमेल, एसएमएस या फोन कॉल के माध्यम से) कि उन्हें दर्ज करना होगा, जहां उपयोगकर्ता इस कंप्यूटर को याद रखना चुन सकता है। वेब एप्लिकेशन में, हम अधिकृत डिवाइसों को ट्रैक करेंगे, जिससे उपयोगकर्ताओं को यह देखने की अनुमति मिल जाएगी कि वे उस डिवाइस से कब/कहां लॉग इन करते हैं, और यदि वे चुनते हैं तो किसी भी डिवाइस को प्राधिकृत करें।
हमें ऐसे समाधान की आवश्यकता है जो बहुत हल्का स्पर्श (अर्थात्, क्लाइंट-साइड सॉफ़्टवेयर स्थापना की आवश्यकता नहीं है), और सफारी, क्रोम, फ़ायरफ़ॉक्स और आईई 7+ (दुर्भाग्य से) के साथ काम करता है। हम x509 सुरक्षा प्रदान करेंगे, जो पर्याप्त सुरक्षा प्रदान करता है, लेकिन हमें अभी भी उन ग्राहकों के लिए समाधान की आवश्यकता है जो x509 का उपयोग नहीं कर सकते हैं या नहीं।
मेरा इरादा कुकीज (या, संभावित रूप से, स्थानीय संग्रहण का उपयोग करके, फ़्लैश कुकीज़ में गिरावट, और फिर सामान्य कुकीज़) का उपयोग करके प्राधिकरण जानकारी संग्रहीत करना है।
पहले ब्लश पर
ट्रैक दो अलग-अलग मान (स्थानीय डेटा या कुकीज़): एक हैश एक सुरक्षित प्रवेश पर टोकन, साथ ही एक डिवाइस टोकन का प्रतिनिधित्व। दोनों मान वेब अनुप्रयोग द्वारा संचालित (और दर्ज) होते हैं, और ग्राहक को निर्देशित करते हैं। एसएसओ टोकन डिवाइस पर एक अनुक्रम संख्या पर निर्भर है। यह प्रभावी ढंग से उपकरणों को अनधिकृत करने की अनुमति देता है (सभी एसएसओ टोकन अमान्य हो जाते हैं) और अनुक्रम संख्या के उपयोग के माध्यम से प्रभावी ढंग से नहीं, हालांकि, मैं इस प्रश्न को पूछ रहा हूं), और एक गैर-उपयोग का उपयोग करता है।
समस्या
इस समाधान के साथ, यह संभव है किसी को सिर्फ एसएसओ और डिवाइस टोकन कॉपी और दूसरे अनुरोध में उपयोग करने के लिए। जबकि अनुक्रम संख्या मुझे इस तरह के दुर्व्यवहार का पता लगाने में मदद करेगी और इस प्रकार डिवाइस को प्राधिकृत करने में मदद करेगी, पहचान और प्रतिक्रिया वैध डिवाइस के बाद ही हो सकती है और दुर्भावनापूर्ण अनुरोध दोनों प्रयासों का उपयोग कर सकते हैं, जो क्षति के लिए पर्याप्त समय है।
मुझे लगता है कि एचएमएसी का उपयोग करना बेहतर होगा। डिवाइस को ट्रैक करें, अनुक्रम, एक निजी कुंजी के साथ एक nonce, timestamp, और हैश बनाएं, फिर हैश प्लस उन मानों को सादे पाठ के रूप में भेजें। सर्वर वही करता है (डिवाइस और अनुक्रम को सत्यापित करने के अलावा) और तुलना करता है। यह बहुत आसान लगता है, और बहुत अधिक भरोसेमंद .... मानते हुए कि हम निजी कुंजी को सुरक्षित रूप से बातचीत, विनिमय और स्टोर कर सकते हैं।
प्रश्न
तो फिर, मैं कैसे सुरक्षित रूप से अधिकृत डिवाइस के लिए एक निजी कुंजी के लिए बातचीत कर सकते हैं, और फिर सुरक्षित रूप से उस कुंजी की दुकान? क्या यह अधिक संभव है, कम से कम, अगर मैं स्थानीय स्टोरेज या फ्लैश कुकीज़ का उपयोग करके निजी कुंजी को संग्रहीत करने के लिए बसता हूं और कहता हूं कि यह "पर्याप्त अच्छा" है? या, क्या मैं अपने मूल मसौदे में कुछ ऐसा कर सकता हूं जो मैं वर्णित भेद्यता को कम करता हूं?
हम "अपरिचित" मशीनों के लिए एक बार का पासवर्ड इस्तेमाल करेंगे, या जिनके दावों में विफल रहता है। जैसा कि मैंने प्रश्न में उल्लेख किया है, अन्य सुझावों के लिए मुझे "हल्का स्पर्श" लागू करना है (जिसका अर्थ है कि इसे कोई अतिरिक्त सॉफ़्टवेयर की आवश्यकता नहीं है), अन्यथा मैं उस मार्ग पर जाऊंगा। मेरा मूल समाधान इस तथ्य के प्रकाश में "सर्वोत्तम प्रयास" का प्रस्ताव करता है कि, जैसा कि आपने कहा था, मैं ग्राहक को उन बाधाओं को नियंत्रित नहीं कर सकता जो मुझे दी गई हैं, जहां सभी अन्य विफल हो जाते हैं, हम खाते को ध्वजांकित करते हैं और 1TP सत्यापन की आवश्यकता होती है। – HackedByChinese
हालांकि, आप सिस्टम का स्थानांतरित होने पर पता लगाने का उल्लेख करते हैं। मैंने उपयोगकर्ताओं के अनुमानित शहर को रिकॉर्ड करने के लिए भू-आईपी एपीआई का उपयोग करने के बारे में सोचा था। उस पर विस्तार, शायद मैं अजीब व्यवहार की कोशिश करने और पता लगाने के लिए क्लाइंट आईपी पते पर हेरिस्टिक को नियोजित कर सकता हूं, जब किसी प्रकार का पता चला है तो 1TP सत्यापन पर वापस आना। वास्तव में मोबाइल ग्राहकों के लिए, हमें केवल x509 ऑथ या क्लाइंट सॉफ़्टवेयर की स्थापना की आवश्यकता हो सकती है। वैसे भी, इस बारे में सोचने में समय लगाने के लिए धन्यवाद। – HackedByChinese
मदद करने के लिए खुशी हुई। मुझे बस दो अन्य प्रासंगिक SO प्रश्न मिले जो आपको कुछ विचार दे सकते हैं: [विशिष्ट रूप से कंप्यूटर की पहचान करना] (http://stackoverflow.com/questions/671876/whats-a-good-way-to-uniquely-identify-a- कंप्यूटर/671 9 14 # 671 9 14) और [नेटवर्क पर सुरक्षित ग्राहक पहुंच के लिए डिवाइस फिंगरप्रिंट] (http://stackoverflow.com/questions/7649074/device-fingerprint-for-secure-client-access-over-tls-network)। –