कीकार्ड: सुरक्षा सुविधाओं का अवलोकन

 

कीकार्ड: सुरक्षा सुविधाओं का अवलोकन



कीकार्ड निजी कुंजी के प्रबंधन और लेनदेन पर हस्ताक्षर करने के लिए एक ओपन-सोर्स हार्डवेयर वॉलेट है। यह क्रेडिट-कार्ड का फॉर्म-फैक्टर लेता है और स्टेटस मोबाइल ऐप के साथ संपर्क रहित अनुभव के लिए एनएफसी तकनीक का उपयोग करता है।

पिछले लेख ने कीकार्ड तकनीक का अवलोकन दिया और सुरक्षा पहलुओं पर संक्षेप में बात की। यह आलेख विशेष रूप से विभिन्न अंतर्निहित सुरक्षा सुविधाओं में गहराई से गोता लगाता है।

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

इसलिए, Keycard के हर पहलू को उच्चतम सुरक्षा को ध्यान में रखकर डिजाइन किया गया है। हम उन्हें क्रिप्टोग्राफी, एक्सेस कंट्रोल, स्मार्ट कार्ड सुरक्षा, संचार सुरक्षा, एप्लेट सुरक्षा और पारदर्शिता की छह श्रेणियों के नीचे वर्णित करते हैं।

क्रिप्टोग्राफी

Keycard के लिए प्राथमिक उपयोग का मामला एक हार्डवेयर क्रिप्टो वॉलेट है जिसके लिए यह BIP-32 पदानुक्रमित नियतात्मक (HD) वॉलेट को लागू करता है। इस तरह के बटुए की नींव को बीज वाक्यांश के रूप में जाना जाता है।

बीज वाक्यांश

यह आमतौर पर 12-24 शब्दों का BIP-39 वाक्यांश है जिसे 2048 शब्दों की सूची से यादृच्छिक रूप से चुना जाता है। यह एक बाइनरी बीज प्राप्त करने के लिए आवश्यक एन्ट्रापी प्रदान करता है जो PBKDF2 फ़ंक्शन का उपयोग करके उत्पन्न होता है। बाइनरी बीज का उपयोग तब BIP-32 वॉलेट के लिए असममित कुंजी जोड़े उत्पन्न करने के लिए किया जाता है। उपयोगकर्ता से बीज वाक्यांश को कहीं सुरक्षित लिखने की अपेक्षा की जाती है क्योंकि बाद में किसी अन्य कार्ड या फोन या वॉलेट पर चाबियों को पुनर्स्थापित करने के लिए इसकी आवश्यकता हो सकती है।

वर्तमान स्थिति कार्यान्वयन में, बीज वाक्यांश में स्टेटस मोबाइल ऐप पर उत्पन्न 12 शब्द होते हैं और इसलिए 128-बिट्स एन्ट्रॉपी प्रदान करते हैं (शब्द की प्रत्येक पसंद 11-बिट्स प्रदान करती है, क्योंकि 2^11 = 2048; 12 * 11 = 132; 128-बिट्स एन्ट्रापी + 4-बिट्स चेकसम = 132) यह 24-शब्द बीज वाक्यांश के लिए एक विकल्प प्रदान करने के लिए कीकार्ड रोडमैप पर है जो 256-बिट्स की बढ़ी हुई एन्ट्रॉपी देता है।

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

वॉलेट और चैट कुंजियाँ

वॉलेट कुंजी जोड़ी मानक BIP-44 m/44'/60'/0'/0/0 पथ पर उत्पन्न होती है  चैट की जोड़ी को EIP-1581 के अनुसार m/43'/60'/1581'/0/0 पथ पर बनाया गया है और इसे कीकार्ड से स्टेटस ऐप में निर्यात किया जाता है ताकि ऐप बिना किसी चैट संदेश के हर चैट संदेश को स्वचालित रूप से एन्क्रिप्ट और डिक्रिप्ट कर सके। उपयोगकर्ता को हर बार पासकोड (अगला भाग देखें) दर्ज करने की आवश्यकता होती है जो बोझिल होगा।

चैट संदेशों को m/43'/60'/1581'/1/0 पर कुंजी युग्म से प्राप्त एक कुंजी के साथ एन्क्रिप्ट करके स्टेटस ऐप डेटाबेस में सहेजा जाता है  यह तभी होता है जब उपयोगकर्ता अपने Status ऐप के साथ Keycard का उपयोग करता है। अन्यथा, चैट संदेश डेटाबेस पासवर्ड से प्राप्त एक कुंजी का उपयोग करके एन्क्रिप्ट किया गया है।

इसका चाबियों की वसूली पर प्रभाव पड़ता है। वर्तमान में, स्टेटस ऐप पासवर्ड बदलने का समर्थन नहीं करता है क्योंकि इसके लिए डेटाबेस के पुन: एन्क्रिप्शन की आवश्यकता होती है। तो, पासवर्ड भूलने का मतलब है कि कोई केवल मूल वाक्यांश से वॉलेट संपत्ति को पुनर्प्राप्त कर सकता है लेकिन चैट इतिहास खो देता है।

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

पहुँच नियंत्रण

कीकार्ड तक पहुंच एक पासकोड और एक व्यक्तिगत-अनलॉकिंग-कुंजी कोड (पीयूके कोड) से सुरक्षित है। कीकार्ड का ही उपयोग स्टेटस ऐप को प्रमाणित करने के लिए किया जा सकता है।

पासकोड : पासकोड एक 6-अंकीय संख्यात्मक कोड है जो सेटअप के दौरान बनाया जाता है। प्रत्येक वॉलेट लेनदेन को अधिकृत करने के लिए उपयोगकर्ता को इस कोड को दर्ज करना आवश्यक है। गलत पासकोड को तीन बार दर्ज करने से कीकार्ड फ्रीज हो जाता है जिसके बाद उपयोगकर्ता को कार्ड को अनफ्रीज करने और पासकोड को रीसेट करने के लिए पीयूके कोड दर्ज करने की आवश्यकता होती है। यह एक हमलावर को रोकता है जिसके पास उपयोगकर्ता का फोन और कीकार्ड दोनों हैं, बिना पासकोड जाने अनधिकृत लेनदेन निष्पादित करने से।

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

टू-फैक्टर ऑथेंटिकेशन (2FA) : कीकार्ड के साथ, उपयोगकर्ता पासवर्ड के बजाय कीकार्ड का उपयोग करके स्टेटस ऐप में साइन-इन कर सकते हैं। कीकार्ड को फोन पर टैप करना होगा और फिर स्टेटस ऐप में आने के लिए 6 अंकों का पासकोड डालना होगा। यह प्रभावी रूप से स्टेटस ऐप में टू-फैक्टर ऑथेंटिकेशन लाता है, जो आपके पास है, यानी कीकार्ड, व्हाट-यू-नो, यानी संबद्ध पासकोड के साथ है।

कीकार्ड के उपयोग के साथ, किसी के पास पहले की तरह पासवर्ड का उपयोग करने का विकल्प नहीं रह गया है। यदि कोई केवल लेन-देन पर हस्ताक्षर करने के लिए कीकार्ड का उपयोग करना चाहता है, लेकिन स्टेटस ऐप में 2FA लॉगिन के लिए नहीं, तो किसी को स्टेटस ऐप में आने के लिए फोन के बायोमेट्रिक टच आईडी पर निर्भर रहना होगा।

स्मार्ट कार्ड सुरक्षा

कीकार्ड आईएसओ मानकों (7810, 7816 और 14443) पर आधारित एक जावाकार्ड है और सामान्य मानदंड EAL5+ प्रमाणित है। यह दुनिया भर में कॉन्टैक्टलेस पेमेंट क्रेडिट/डेबिट कार्ड के लिए भरोसेमंद लोगों के समान है। विभिन्न वित्तीय उपयोग के मामलों के लिए स्मार्ट कार्ड व्यापक रूप से बहुत सुरक्षित माने जाते हैं। स्मार्ट कार्ड तकनीक पर आधारित कीकार्ड के लिए यह प्राथमिक प्रेरणा है। स्मार्ट कार्ड की सुरक्षा गारंटी उनमें इस्तेमाल किए गए टैम्पर-रेसिस्टेंट सिक्योर एलिमेंट (एसई) से आती है।

साइड-चैनल अटैक

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

साइड-चैनल खतरनाक हो सकते हैं यदि हमलावर कटौती करने में सक्षम है, उदाहरण के लिए, चाबियां उत्पन्न या उपयोग की जा रही हैं। लेकिन स्मार्ट कार्ड के मामले में, ऐसे हमले आमतौर पर कार्ड की भौतिक पहुंच और पावर या समय की विशेषताओं का अनुमान लगाने के लिए महंगे हार्डवेयर पर निर्भर करते हैं। हम नवीनतम पीढ़ी के स्मार्ट कार्डों पर व्यावहारिक साइड-चैनल हमलों के किसी भी प्रलेखित मामलों से अवगत नहीं हैं, जैसे कि कीकार्ड के लिए उपयोग किए जाने वाले JCOP4 कार्ड।

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



संचार सुरक्षा

क्लाइंट/उपयोगकर्ता डिवाइस पर कीकार्ड और मोबाइल ऐप के बीच संचार नियर-फील्ड कम्युनिकेशंस (एनएफसी) पर होता है। एनएफसी एक मानक-आधारित शॉर्ट-रेंज वायरलेस कनेक्टिविटी तकनीक है जो आज मोबाइल उपकरणों और उपभोक्ता इलेक्ट्रॉनिक्स में व्यापक रूप से उपयोग की जाती है। अधिकांश स्मार्टफोन एनएफसी के साथ शिप होते हैं जहां इसका उपयोग कॉन्टैक्टलेस क्रेडिट/डेबिट कार्ड के साथ भुगतान के लिए किया जाता है। एनएफसी का उपयोग करने वाली प्रौद्योगिकियां कई सुरक्षा सुविधाओं का लाभ उठा सकती हैं

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

पेयरिंग कोड

पेयरिंग कोड एक 16-वर्णों का अल्फ़ान्यूमेरिक कोड है जो कार्ड सेटअप के दौरान केवल एक बार उत्पन्न और प्रदर्शित होता है। यह, पासकोड के साथ, किसी भी समय आवश्यक होता है जब उपयोगकर्ता कीकार्ड को किसी भिन्न फोन से जोड़ना चाहता है। यह एक हमलावर को दूसरे फोन पर उपयोगकर्ता के कीकार्ड को हमलावर के ऐप से पेयरिंग कोड को जाने बिना जोड़ने से रोकता है।

वर्तमान में, किसी भी समय पांच क्लाइंट को कीकार्ड के साथ जोड़ा जा सकता है। और पहले से जोड़े गए क्लाइंट को अनपेयर करना संभव है।

एप्लेट सुरक्षा

जैसा कि पहले के लेख में बताया गया है , कीकार्ड पर चलने वाले तीन जावा एप्लेट में सभी मौजूदा कीकार्ड कार्यक्षमता लागू की गई है:

1.      वॉलेट : यह एप्लेट 12-शब्द बीआईपी-39 बीज वाक्यांश की पीढ़ी/लोडिंग की सुविधाओं के साथ एक बीआईपी-32 एचडी वॉलेट लागू करता है, एक कुंजी जोड़ी लोड कर रहा है, बीआईपी-32 कुंजी व्युत्पत्ति और प्रमुख हस्ताक्षर सभी ईसीडीएसए secp256k1 पर आधारित हैं। निजी कुंजी एप्लेट को कभी नहीं छोड़ती है और एप्लेट के साथ सभी संचार एक साझा रहस्य यानी पेयरिंग कोड के आधार पर एक सुरक्षित चैनल पर होता है। इस एप्लेट के साथ सभी इंटरैक्शन के लिए पासकोड की आवश्यकता होती है।

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

3.      एनडीईएफ : यह एप्लेट एनएफसी टैग इम्यूलेशन लागू करता है जहां एसडीके एपीआई का इस्तेमाल लिंक या क्यूआर कोड को स्टोर करने के लिए एनएफसी डेटा एक्सचेंज फॉर्मेट (एनडीईएफ) रिकॉर्ड सेट करने के लिए किया जा सकता है। इस एप्लेट का उपयोग किसी ऐप के डाउनलोड को लागू करने या पसंद के डिवाइस पर डीएपी लिंक खोलने के लिए किया जाता है।

GlobalPlatform जारीकर्ता सुरक्षा डोमेन

नए एप्लेट लोड करने या इंस्टॉल किए गए एप्लेट को हटाने के लिए, किसी को ग्लोबलप्लेटफॉर्म (जीपी) जारीकर्ता सुरक्षा डोमेन (आईएसडी) तक पहुंच की आवश्यकता होती है जिसका उपयोग कीकार्ड के साथ किया जाता है। अभी के लिए, Status with Keycard द्वारा उपयोग किया जाने वाला यह GP-ISD डेवलपर्स को कीकार्ड्स पर अपने स्वयं के एप्लेट के साथ परीक्षण करने की अनुमति देने के लिए ऑनलाइन प्रकाशित किया गया है।

लेकिन कुछ परिदृश्यों में एक हमलावर संभावित रूप से इसका दुरुपयोग कर सकता है। उदाहरण के लिए, यदि कीकार्ड वॉलेट एप्लेट या बीआईपी -32 वॉलेट को लागू करने वाला कोई अन्य एप्लेट स्वयं बीज वाक्यांश उत्पन्न करता है (इसके बजाय संबंधित मोबाइल ऐप पर), तो एक हमलावर भौतिक कीकार्ड को उपयोगकर्ता द्वारा आरंभ करने से पहले इंटरसेप्ट कर सकता है। s) और सार्वजनिक रूप से विज्ञापित GP-ISD कुंजी का उपयोग करके एक दुर्भावनापूर्ण एप्लेट लोड करें। यह दुर्भावनापूर्ण एप्लेट जेनरेट-मेनेमोनिक कार्यान्वयन को संशोधित करके एक यादृच्छिक बीज वाक्यांश की पीढ़ी को नकली बना सकता है जैसे कि यह हमेशा पूर्व-निर्धारित हमलावर-ज्ञात बीज वाक्यांश प्रदान करता है। यह हमलावर को ऐसे सभी Keycards से धन निकालने की अनुमति देगा। यह एक उदाहरण है जिसे "आपूर्ति-श्रृंखला" हमले यादुष्ट-दासी " हमले के रूप में जाना जाता है।

यह काल्पनिक हमला संभव है क्योंकि वर्तमान में कोई भी प्रकाशित GP-ISD कुंजी का उपयोग करके किसी भी एप्लेट को कीकार्ड में लोड कर सकता है। इसे कम करने के कम से कम तीन तरीके हैं:

1.      GP-ISD कुंजी को निजी बनाएं ताकि कोई अन्य व्यक्ति Keycard पर एप्लेट को लोड/डिलीट कर सके।

2.      मोबाइल ऐप से संबंधित कीकार्ड एप्लेट्स के साथ संचार करने से पहले उनकी अखंडता को सत्यापित करें।

3.      पहले से इंस्टॉल किए गए एप्लेट के साथ कीकार्ड शिपिंग के बजाय मोबाइल ऐप से सही एप्लेट इंस्टॉल करवाएं।

इन न्यूनीकरण के कुछ फायदे/नुकसान हैं जिन पर प्रासंगिक खतरे के मॉडल के लिए समाधान तैयार करते समय विचार किया जाना चाहिए।

पारदर्शिता

कीकार्ड एप्लेट , जावा/गो/स्विफ्ट एसडीके और कमांड-लाइन टूल सभी खुले स्रोत हैं, जिन्हें कोई भी समीक्षा, संशोधित और अनुकूलित कर सकता है। कीकार्ड सामान्य मानदंड EAL5+ प्रमाणित तकनीक पर आधारित है  अस्पष्टता के माध्यम से सुरक्षा पर कोई निर्भरता नहीं है।

कीकार्ड के पीछे का विजन क्रिप्टो स्मार्ट कार्ड्स के लिए एक खुला ढांचा तैयार करना है। डेवलपर्स को कीकार्ड एप्लेट के साथ नए ऐप एकीकरण बनाने या खुले एसडीके का उपयोग करके पूरी तरह से नए एप्लेट विकसित करने के लिए प्रोत्साहित किया जाता है। व्यवसायों को कीकार्ड्स को व्हाइट-लेबल करने या कार्डों के डिज़ाइन और निर्माण के स्रोत के लिए प्रोत्साहित किया जाता है।

सारांश

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

सुरक्षा सुविधाओं, वर्तमान कार्यान्वयन, संभावित शोषण परिदृश्यों और संबंधित शमन का वर्णन किया गया है, उम्मीद है कि कीकार्ड के सुरक्षा विचारों का एक अच्छा विचार दें। इस श्रृंखला का अगला लेख विभिन्न सुरक्षा प्रवाहों और परिदृश्यों पर चर्चा करेगा।

स्टेटस टीम कीकार्ड की सुरक्षा स्थिति में लगातार सुधार करने का प्रयास करती है क्योंकि हम इसके लिए और अधिक सुविधाओं और अनुप्रयोगों का पता लगाते हैं। यदि आपके कोई सुझाव या प्रश्न हैं, तो कृपया बेझिझक सुरक्षा @status.im पर हमसे संपर्क करें

Comments

Popular posts from this blog

वेब विकास

इथेरियम सिंगल साइन-ऑन