प्रौद्योगिकी

KeyMeld: आईफ़ोन और एंड्रॉयड के लिए सामान्य कुंजी और ज़ीरो वॉल्ट आर्किटेक्चर योजना

KeyMeld स्वयं में Zero Vault नहीं है। यह एक स्वतंत्र SaaS सेवा है, जो डेवलपर को सार्वभौमिक कुंजी को बैकएंड से बाहर निकालने, iOS और Android क्लाइंट को जोड़ने और अपने एप्लिकेशन के लिए Zero Vault मॉडल पर आर्किटेक्चर बनाने में मदद करता है।

क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन में ऐसी समस्या होती है, जिस पर उपयोगकर्ता अक्सर ध्यान नहीं देता। स्क्रीन पर वह एक ही खाता देखता है और हर डिवाइस पर समान कार्यप्रणाली की उम्मीद करता है। लेकिन अंदरूनी तौर पर iPhone और Android अलग-अलग सुरक्षा प्रणालियों का उपयोग करते हैं और स्थानीय कुंजी के साथ अलग तरीके से काम करते हैं।

iPhone पर ऐप स्थानीय कुंजी को Apple Keychain के माध्यम से सुरक्षित कर सकता है। Android के लिए इसके लिए Android Keystore का इस्तेमाल किया जाता है। ये तकनीकें संवेदनशील कुंजी को डिवाइस के सुरक्षित वातावरण में रखने के लिए हैं, लेकिन वे परस्पर स्थानांतरण योग्य नहीं हैं।

उपयोगकर्ता के लिए इससे कोई फर्क नहीं पड़ता। वह बस चाहता है कि वह iPhone पर ऐप खोलें, फिर इसे Android पर इंस्टॉल करें और सुरक्षित डेटा के साथ काम करना जारी रखें।

डेवलपर के लिए यहाँ एक वास्तुशिल्प सवाल उठता है: दोनों प्लेटफ़ॉर्म पर सामान्य पहुंच कैसे व्यवस्थित की जाए, बिना स्थानीय कुंजी को ट्रांसफर किए और उसकी एक कॉपी को अपने बैकएंड में संग्रहित किए बिना?

KeyMeld में समझते हुए मैंने देखा कि यह इस उद्देश्य के लिए एक अलग, सामान्य कुंजी प्रदान करता है, जो iOS और Android के आंतरिक सुरक्षा प्रणालियों में हस्तक्षेप किए बिना काम करती है।

विभिन्न प्लेटफ़ॉर्म के लिए सामान्य कुंजी

स्थानीय डिवाइस कुंजी विशिष्ट फोन से संबंधित होती है और संबंधित ऑपरेटिंग सिस्टम के माध्यम से सुरक्षित की जाती है। यह विशिष्ट डिवाइस के सुरक्षित वातावरण में रहती है और डिवाइस के बीच स्वतंत्र रूप से ट्रांसफर करने के लिए नहीं है।

KeyMeld का सार्वभौमिक कुंजी एक अलग इकाई है। यह विशेष प्रोजेक्ट, अकाउंट और सुरक्षित क्षेत्र के लिए बनाई जाती है और विभिन्न प्लेटफ़ॉर्म पर मान्य ग्राहकों के बीच सामान्य हो जाती है।

यह सेवा iPhone से कुंजी नहीं लेती, उसे Android पर स्थानांतरित नहीं करती और दोनों अलग-अलग कुंजियों को एक में बदलने का प्रयास नहीं करती। प्लेटफ़ॉर्म सुरक्षा स्वतंत्र रहती है, और ऐप अपने प्रोजेक्ट के लिए आधारभूत पहुंच स्तर प्राप्त करता है।

यही वे मुख्य भूमिका है जो KeyMeld निभाता है: यह iOS और Android को समान बनाता नहीं है और उनके आंतरिक तंत्र को बदलता नहीं है। यह केवल एक सामान्य स्तर जोड़ता है ताकि परियोजना को उनके बीच कुंजी वितरण का स्वतंत्र प्रबंधन न करना पड़े।

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

Zero Vault परियोजना का हिस्सा है

तत्काल ध्यान देना जरूरी है: Zero Vault खुद में KeyMeld का नाम नहीं है। यह एक वास्तुशिल्प मॉडल है, जिसे जोड़ने वाला प्रोडक्ट बना सकता है।

KeyMeld एक स्वतंत्र SaaS सेवा के रूप में काम करता है। इसे बैकएंड के अंदर स्थापित या प्रोजेक्ट की डेटाबेस के पास एक अतिरिक्त प्रोग्राम मोड्यूल के रूप में नहीं रखा जाता। सार्वभौमिक कुंजी को एक अलग SaaS कॉन्टूर में होस्ट किया जाता है, जो Eigen प्रोडक्ट के बैकएंड से बाहर है।

इस तरह की वास्तुशिल्प संरचना को बनाए रखने के लिए, प्रोजेक्ट और KeyMeld के बीच विश्वास की सीमाएँ स्वतंत्र और अलग रहनी चाहिए। इसके लिए बैकएंड और बाहरी सेवा के खाता विवरण, अधिकार और प्रबंधन तंत्र अलग होने चाहिए।

इसे ही Zero Vault मॉडल कहा जा सकता है: इसका सर्वर बैकएंड ग्राहक सुरक्षित भंडारण से कुंजी संग्रहित नहीं करता।

Zero Vault का मतलब यह नहीं है कि प्रोडक्ट का बैकएंड कोई भी डेटा नहीं रखता। उसके पास खाते, सेटिंग्स, व्यापारिक डेटा और एप्लिकेशन के संचालन के लिए जरूरी सब कुछ रहता है। लेकिन उनके साथ सार्वभौमिक कुंजी मौजूद नहीं होती।

सर्वर बैकएंड का समझौता अपने आप में सार्वभौमिक कुंजी को उजागर नहीं करता: यह उपयोगकर्ता खातों या अन्य सर्वर डेटा के साथ नहीं संग्रहीत होती। इस मॉडल का उद्देश्य विशेष रूप से क्लाइंट भंडारण से सार्वभौमिक कुंजी को प्रोजेक्ट के डेटाबेस से अलग रखना है।

सजीव परिदृश्य: आईफ़ोन और Android पर एक ही खाता

मान लीजिए कि एक ऐसा ऐप है जिसमें स्थानीय सुरक्षित डेटा है। यह हो सकता है कि प्रमाणीकरण, कॉर्पोरेट क्लाइंट या कोई भी सेवा हो, जिसे डिवाइस पर सीधे एनकोडेड जानकारी के साथ कार्य करना जरूरी है।

iPhone पर ऐप iOS की सुरक्षा का उपयोग करता है। Android पर भी अपनी सुरक्षा प्रणाली है। आंतरिक डिवाइस कुंजी अलग होती है, और यह स्वाभाविक है।

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

यह अलग-अलग schemes बना सकते थे, थर्मली लोकल कुंजी स्थानांतरित कर सकते थे या उनका कॉपी सर्वर पर रख सकते थे।

KeyMeld स्थानीय कुंजी ट्रांसफर करने और सर्वर पर कॉपी रखने की आवश्यकता को खत्म करता है, एक सामान्य सार्वभौमिक कुंजी जोड़कर।

आईफ़ोन और Android क्लाइंट तक उस सार्वभौमिक कुंजी तक पहुंच होती है, जो वे एक मान्य प्रोजेक्ट और खाता के अंतर्गत साझा करते हैं। इस प्रयास में, हर फोन अपनी सुरक्षा व्यवस्था का उपयोग करना जारी रखता है।

यह उपयोगकर्ता के लिए ऐसा दिखता है जैसे कि एक ही खाता दोनों डिवाइस पर है। उसे यह नहीं जानने की जरूरत है कि iPhone के अंदर कौन सा तंत्र काम कर रहा है और Android पर कौन सा।

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

बैकएंड अनुरोध की प्रमाणीकरण में भाग लेता है, लेकिन सार्वभौमिक कुंजी केवल अधिकृत क्लाइंट के लिए होती है और उसके प्रोडक्ट के सर्वर डेटाबेस में संग्रहीत नहीं होती।

KeyMeld खुद एप्लिकेशन का डेटाबेस स्थानांतरित नहीं करता और न ही उपयोगकर्ता रिकॉर्ड के सिंक प्रणाली की जगह लेता है। उसकी भूमिका स्पष्ट है: क्लाइंट को वह कुंजी प्रदान करना, जो सुरक्षित डेटा के साथ कार्य करने के लिए आवश्यक है। भंडारण सामग्री और उसके अपडेट का कार्य उत्पाद के ऊपर रहता है।

तीन अलग प्रकार की कुंजियाँ और रहस्यों

आर्किटेक्चर की विभिन्न भागों को भ्रमित न होने देने के लिए, तीन अवधारणाओं में स्पष्ट भिन्नता जरूरी है।

  • स्थानीय डिवाइस कुंजी – विशिष्ट फोन से संबंधित होती है और iOS या Android के माध्यम से सुरक्षित की जाती है।

  • सार्वभौमिक कुंजी – एक ही प्रोजेक्ट और खाता के अधिकृत क्लाइंट द्वारा इस्तेमाल होती है। यही प्रोडक्ट स्तर पर विभिन्न प्लेटफ़ॉर्म को जोड़ती है।

  • सहायक रहस्य – बैकएंड को Secured इंटरैक्शन के लिए चाहिए होता है। यह मोबाइल ऐप या ब्राउज़र के साथ साझा नहीं किया जाता।

सहायक रहस्य और सार्वभौमिक कुंजी अलग-अलग कार्यों के लिए हैं। Zero Vault आर्किटेक्चर में, सार्वभौमिक कुंजी को प्रोडक्ट के डेटाबेस में सुरक्षा से संबंधित डेटा के साथ संग्रहीत नहीं किया जाता।

KeyMeld के संचालन के लिए व्यक्ति का नाम, पासवर्ड, TOTP स्टोरेज, या रिकॉर्ड का व्यापारिक अर्थ जरूरी नहीं है। सेवा के लिए जरूरी है कि प्रोजेक्ट, अकाउंट और क्लाइंट को अधिकार प्राप्त करें ताकि सार्वभौमिक कुंजी मिल सके।

संपर्क की पहुंच अभी भी नियंत्रित है

सार्वभौमिक कुंजी प्राप्त करने का अधिकार कोई भी क्लाइंट नहीं है।

अगर डिवाइस अधिक भरोसेमंद नहीं माना जाता, खाता का स्टेटस बदला जाता है या टीम ने प्रोजेक्ट का एक्सेस रद्द कर दिया है, तो KeyMeld इस क्लाइंट को आगे सार्वभौमिक कुंजी जारी नहीं करेगा।

यह जरूरी नहीं कि यह तुरंत मौजूदा स्थानीय कुंजी को समाप्त कर दे। इसका मतलब है कि आगे की कुंजी प्राप्ति और नए क्लाइंट्स की कनेक्शन पर नियंत्रण।

यह उपयोगकर्ता के लिए ऐसा है जैसे कि नए उपकरण जोड़ना और उनका एक्सेस प्रबंधित करना एक ही प्रणाली का हिस्सा है।

डेवलपर के लिए इसका अर्थ है कि ऐसी लॉजिक खुद से अलग iOS और Android के लिए बनाने की जरूरत नहीं पड़ती। फिर भी, Zero Vault का अंतिम मॉडल इस बात पर निर्भर करता है कि प्रोजेक्ट अपने पास सार्वभौमिक कुंजी रखता है या नहीं और क्या अपनी अवसंरचना और KeyMeld के बीच विभाजन करता है या नहीं।

KeyMeld क्या नहीं करता

KeyMeld पासवर्ड मैनेजर नहीं है और उपयोगकर्ता की TOTP रिकॉर्ड्स को संग्रहित नहीं करता। यह एक क्लाउड अप्लिकेशन डेटाबेस नहीं है और न ही इसकी जगह सिंक सिस्टम लेता है।

यह Apple Keychain या Android Keystore का स्थान नहीं है। सेवा अपने प्लेटफ़ॉर्म के स्थानीय तंत्र को वहीं रहने देती है और अपने के ऊपर एक सामान्य स्तर जोड़ती है।

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

अंत में, KeyMeld स्वतः Zero Vault नहीं बनाता। यह प्रोजेक्ट को एक बाहरी कॉन्टूर प्रदान करता है। इस वास्तुशिल्प संरचना को बनाए रखने के लिए, डेवलपर को सार्वभौमिक कुंजी अपने सर्वर पर नहीं रखना चाहिए और भरोसेमंद क्षेत्रों को अलग रखना चाहिए।

यह किसके लिए उपयोगी हो सकता है

यह दृष्टिकोण उन एप्लिकेशनों के लिए उपयोगी है जो तुरंत कई प्लेटफ़ॉर्म पर काम करते हैं और स्थानीय सुरक्षित डेटा का उपयोग करते हैं।

यह प्रमाणीकरण उपकरण, कॉर्पोरेट ऐप, SaaS उत्पाद, मल्टी-डिवाइस सेवा या कोई भी प्रोजेक्ट हो सकता है, जिसमें एक ही खाता iPhone और Android दोनों पर समान रूप से काम करना चाहिए।

डेवलपर के लिए, इसका मूल्य न सिर्फ प्लेटफ़ॉर्म विशिष्ट लॉजिक को कम करना है। बल्कि जिम्मेदारी को विभाजित करने की क्षमता भी महत्वपूर्ण है। प्रोडक्ट बैकएंड अपने डेटा को रखता है, वहीं KeyMeld एक बाहरी SaaS सेवा के रूप में सार्वभौमिक कुंजी प्रदान करता है और उसकी अगली वितरण का नियंत्रण करता है।

मैं इस प्रोजेक्ट को देखकर, KeyMeld को एक तैयार Zero Vault के रूप में देखने के बजाय, एक उपकरण के रूप में वर्णित करूँगा, जिसकी मदद से डेवलपर अपने प्रोडक्ट के लिए इससे जैसी संरचना बना सकता है।

iOS और Android अपनी सुरक्षा प्रणालियों का उपयोग जारी रखते हैं। क्लाइंट को एक सामान्य सार्वभौमिक कुंजी मिलती है। और यदि बैकएंड अपने पास यह कुंजी नहीं रखता और अपनी अवसंरचना और KeyMeld के बीच भेद करता है, तो यह एक क्लाइंट भंडारण से कुंजी का सीधा अभिगम नहीं बनता।

यह उपयोगकर्ता को दोनों प्लेटफार्मों पर एक जैसी पहुंच प्रदान करता है। डेवलपर को अपनी बैकएंड से सार्वभौमिक कुंजी बाहर निकालने का विकल्प देता है। और पूरे प्रोजेक्ट के लिए, Zero Vault की आर्किटेक्चर बनाता है, जिसमें एप्लिकेशन सर्वर ग्राहक के सुरक्षित डेटा की कुंजी नहीं रखता।

प्रोजेक्ट के बारे में अधिक: KeyMeld