मुझे एहसास है कि OAuth कल्पना ConsumerKey, ConsumerSecret, AccessToken, RequestToken, TokenSecret, या Verifier कोड की उत्पत्ति के बारे में कुछ भी निर्दिष्ट नहीं करता है, लेकिन अगर कोई सुरक्षित टोकन (विशेष रूप से टोकन) बनाने के लिए कोई सर्वोत्तम प्रथा है तो मैं उत्सुक हूं। गुप्त संयोजन)।
जैसा कि मैंने देखा, टोकन बनाने के लिए कुछ दृष्टिकोण हैं:
- बस यादृच्छिक बाइट्स का उपयोग करें, उपभोक्ता / उपयोगकर्ता के साथ जुड़े डीबी में स्टोर करें
- कुछ उपयोगकर्ता / उपभोक्ता-विशिष्ट डेटा, उपभोक्ता / उपयोगकर्ता से जुड़े DB में स्टोर करें
- उपयोगकर्ता / उपभोक्ता-विशिष्ट डेटा एन्क्रिप्ट करें
(1) के लिए लाभ हैं डेटाबेस जानकारी का एकमात्र स्रोत है जो सबसे सुरक्षित लगता है। (2) या (3) की तुलना में हमला करना कठिन होगा।
वास्तविक डेटा को नष्ट करना (2) संभवतः पहले से ही ज्ञात डेटा से टोकन को फिर से बनाने की अनुमति देगा। वास्तव में (1) को कोई लाभ प्रदान नहीं किया जा सकता है क्योंकि वैसे भी स्टोर / लुकअप करने की आवश्यकता होगी। (1) की तुलना में अधिक सीपीयू गहन।
वास्तविक डेटा को एन्क्रिप्ट करना (3) जानकारी को डिक्रिप्ट करने की अनुमति देगा। इसके लिए (1) और (2) की तुलना में कम संग्रहण और संभावित रूप से कम लुकअप की आवश्यकता होगी, लेकिन संभवतः कम सुरक्षित भी।
क्या कोई अन्य दृष्टिकोण / फायदे / नुकसान हैं जिन पर विचार किया जाना चाहिए?
संपादित करें: एक और विचार यह है कि टोकन में किसी प्रकार का यादृच्छिक मूल्य होना चाहिए क्योंकि नए टोकन को समाप्त करने और फिर से जारी करने की क्षमता मौजूद होनी चाहिए, इसलिए इसमें केवल वास्तविक डेटा शामिल नहीं होना चाहिए।
सवालों का पालन करें :
क्या क्रिप्टोग्राफ़िक रूप से सुरक्षित बनाने के लिए न्यूनतम टोकन लंबाई है? जैसा कि मैं इसे समझता हूं, लंबे समय तक टोकन रहस्य अधिक सुरक्षित हस्ताक्षर बनाएगा। क्या यह समझ सही है?
क्या हैशिंग दृष्टिकोण से किसी विशेष एन्कोडिंग का उपयोग करने के फायदे हैं? उदाहरण के लिए, मैं हेक्स एनकोडिंग्स (उदाहरण GUID स्ट्रिंग्स) का उपयोग करके बहुत सारे एपीआई देखता हूं। OAuth हस्ताक्षर एल्गोरिथ्म में, टोकन को एक स्ट्रिंग के रूप में उपयोग किया जाता है। हेक्स स्ट्रिंग के साथ, बेस 64 एनकोडिंग के साथ कहने के मुकाबले उपलब्ध वर्ण सेट बहुत छोटा (अधिक अनुमानित) होगा। यह मुझे लगता है कि समान लंबाई के दो तारों के लिए, बड़े वर्ण सेट के साथ एक बेहतर / व्यापक हैश वितरण होगा। यह मुझे लगता है कि यह सुरक्षा में सुधार करेगा। क्या यह धारणा सही है?
OAuth कल्पना 11.10 एन्ट्रॉपी ऑफ़ सीक्रेट्स में इस मुद्दे को उठाती है ।