क्या SHA-256 को क्रिप्टोग्राफ़िक हस्ताक्षर के लिए क्रूड प्रतिस्थापन के रूप में उपयोग किया जा सकता है?

image

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

एक सरल समाधान I वेबसर्वर के लिए एक घूमने वाला यादृच्छिक कोड प्रदान करने का विचार है जिसे एक साझा कुंजी के साथ जोड़ा जाएगा और फिर प्रत्येक अनुरोध के साथ सर्वर द्वारा सत्यापित करने के लिए sha256 के साथ हैश किया जाएगा, ताकि केवल कुंजी वाले क्लाइंट ही सही हैश उत्पन्न कर सकें। मैंने इसे सामान्य क्रिप्टोग्राफ़िक साइनिंग के बजाय चुना क्योंकि Apple शॉर्टकट सीधे sha256 का समर्थन करते हैं और इसे लागू करना बहुत आसान है।

मुझे यह जानना होगा कि क्या इस योजना में कोई बड़ी खामियां हैं जो मेरे सिस्टम को कमजोर बना देंगी, और कोई अन्य संभावित समाधान जिसे Apple शॉर्टकट में लागू करना आसान होगा।

आपके प्रश्न का सीधे उत्तर देने के लिए: आप डिजिटल हस्ताक्षर के सममित समकक्ष के रूप में हैश-आधारित संदेश प्रमाणीकरण कोड (HMAC) का उपयोग कर सकते हैं। तो, हां, एक विशिष्ट निर्माण के साथ, SHA-256 और एक साझा कुंजी का उपयोग करके डेटा पर 'हस्ताक्षर' करना संभव है।

हालांकि, मैं दृढ़ता से अनुशंसा करता हूं कि आप अपने स्वयं के नेटवर्क प्रोटोकॉल का आविष्कार करने का प्रयास न करें। यहां तक ​​कि कम सुरक्षा आवश्यकताओं वाले सरल प्रोटोकॉल को भी पेशेवर रूप से डिजाइन करने और सहकर्मी-समीक्षा करने की आवश्यकता है, अन्यथा अत्यधिक जोखिम है कि वे घातक रूप से त्रुटिपूर्ण हैं - जो आपके मामले में कुछ गंभीर परिणाम हो सकते हैं।

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

इसे लागू करना बहुत आसान होना चाहिए। यदि Apple शॉर्टकट HTTP हेडर सेट करने का समर्थन नहीं करते हैं, तो आप URL में पैरामीटर के रूप में API कुंजी शामिल कर सकते हैं (बढ़िया नहीं लेकिन स्वीकार्य)।

Ask AI
#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60 #61 #62 #63 #64 #65 #66 #67 #68 #69 #70