silabs 21Q2 सुरक्षित BLE डिवाइस सुरक्षा लैब
BLE सुरक्षा लैब मैनुअल
इस प्रयोगशाला में, आप देखेंगे कि अधिक सुरक्षित BLE डिवाइस कैसे डिज़ाइन किया जाए। हम एक ओवरव्यू से शुरुआत करेंगेview हम स्टैक की कुछ विशेषताओं का उपयोग करने के बारे में जानेंगे तथा अधिक सुरक्षित कनेक्शन के लिए तकनीकों के बारे में कुछ सामान्य सलाह पर आगे बढ़ेंगे और अंत में हम देखेंगे कि किसी परिधीय उपकरण को प्रामाणिक के रूप में पहचानने के लिए BLE पर डिवाइस प्रमाणपत्रों का उपयोग कैसे किया जाए।
शुरू करना
ब्लूटूथampजिस एप्लिकेशन पर आप निर्माण करेंगे, उसका उद्देश्य बूटलोडर के साथ उपयोग करना है। यदि आप एकदम नए EFR32MG21B के साथ काम कर रहे हैं, तो इसमें बूटलोडर नहीं होगा। आप प्लेटफ़ॉर्म\बूटलोडर\s में पहले से निर्मित बूटलोडर पा सकते हैंampअपने SDK के le-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a फ़ोल्डर में जाएँ।
- एक खाली एस के साथ शुरू करेंampले ऐप. यहampयह ऐप एक टेम्पलेट के रूप में उपयोग किया जाता है और किसी भी BLE अनुप्रयोग के लिए एक अच्छा प्रारंभिक बिंदु बनाता है।
- सिम्पलिसिटी स्टूडियो से सिलिकॉन लैब्स प्रोजेक्ट विज़ार्ड खोलें File मेनू -> नया.
- BRD4181C का चयन करें और 'अगला' बटन पर क्लिक करें।
- प्रौद्योगिकी प्रकार के अंतर्गत 'ब्लूटूथ (9)' चेकबॉक्स पर क्लिक करें।
- 'ब्लूटूथ - SoC खाली' को हाइलाइट करें, फिर अगला क्लिक करें।
- 'समाप्त' बटन पर क्लिक करें.
- अब आप कुछ विशेषताएँ जोड़कर देख सकते हैं कि संरक्षित और असुरक्षित विशेषताओं के साथ किस प्रकार अलग-अलग व्यवहार किया जाता है।
- प्रोजेक्ट का slcp खोलें file प्रोजेक्ट एक्सप्लोरर विंडो में इसे डबल-क्लिक करके
- 'सॉफ्टवेयर घटक' टैब को हाइलाइट करें और नीचे दिखाए अनुसार GATT कॉन्फ़िगरेशन टूल खोलें:
और gatt_configuration.btconf को आयात करने के लिए नीचे दिखाए गए आयात उपकरण का उपयोग करें file उपलब्ध सामग्री में सर्वर फ़ोल्डर से।
GATT डेटाबेस में एक कस्टम सेवा है, जिसे 'प्रशिक्षण' कहा जाता है, जिसमें कुछ डेटा सुरक्षित है और कुछ नहीं। यह आपको तुलना करने की अनुमति देता है कि संरक्षित विशेषता बनाम असुरक्षित विशेषता तक पहुँचने का प्रयास करते समय क्या होता है। यह बहुत ही बुनियादी सुरक्षा के साथ एक उपकरण बनाने का एक त्वरित तरीका है।
- हम सिंपलिसिटी स्टूडियो में कंसोल पर प्रिंट करने के लिए सीरियल पोर्ट का उपयोग करेंगे ताकि यह पता लगाया जा सके कि एप्लिकेशन में क्या चल रहा है। इन घटकों को खोजने का सबसे आसान तरीका उन्हें सॉफ़्टवेयर घटक संवाद में खोजना है जैसा कि दिखाया गया है:
-
- IO स्ट्रीम USART घटक स्थापित करें
- IO स्ट्रीम रिटारगेट STDIO घटक स्थापित करें
- मानक I/O घटक स्थापित करें
- लॉग घटक स्थापित करें
- बोर्ड नियंत्रण घटक खोलें और 'वर्चुअल COM UART सक्षम करें' चालू करें
- 'डीबग एडाप्टर' पैनल में एडाप्टर पर राइट-क्लिक करें और 'लॉन्च कंसोल' चुनें। 'सीरियल 1' टैब चुनें और कंसोल विंडो के टेक्स्ट एंट्री फ़ील्ड में कर्सर रखें और कंसोल को जगाने के लिए एंटर दबाएँ।
-
- कनेक्शन हैंडल को सहेजने के लिए app.c में पाए जाने वाले sl_bt_on_event() में एक स्थानीय वैरिएबल बनाएँ। वैरिएबल स्थिर होना चाहिए क्योंकि यह फ़ंक्शन हर बार तब कॉल किया जाता है जब स्टैक द्वारा कोई ईवेंट उठाया जाता है और हम चाहते हैं कि मान स्थायी रहे। कनेक्शन हैंडल का उपयोग बाद में किया जाएगा
प्रयोगशाला का एक भाग।
- जब हम कनेक्ट होते हैं, सुरक्षा मोड आदि देखने के लिए ईवेंट के लिए कुछ app_log() कथन डालें
-
- app_log.h हेडर शामिल करें file
- sl_bt_evt_connection_opened – बॉन्ड हैंडल प्रिंट करें और कनेक्शन हैंडल को सेव करें। यदि बॉन्ड हैंडल 0xFF है, तो कनेक्टेड डिवाइस के बीच कोई बॉन्ड मौजूद नहीं है। मौजूदा इवेंट हैंडलर को संशोधित करें ताकि यह कुछ इस तरह दिखे:
- sl_bt_evt_connection_parameters – सुरक्षा मोड। ऐसा इसलिए किया जाता है ताकि आप देख सकें कि सुरक्षा मोड कब बदलता है। सुरक्षा मोड की संख्या में अंतर होता है जहाँ सुरक्षा मोड 1, को मान 0 आदि के साथ गिना जाता है। अपने एप्लिकेशन में निम्न ईवेंट हैंडलर जोड़ें:
- sl_bt_evt_connection_closed_id. इस इवेंट हैंडलर को कनेक्शन हैंडल को अपडेट करने के लिए संशोधित किया गया है। 0xFF मान का उपयोग यह इंगित करने के लिए किया जाता है कि कोई सक्रिय कनेक्शन नहीं है। app_log() कमांड का उपयोग कनेक्शन बंद होने का कारण प्रिंट करने के लिए किया जाता है, स्टेटस कोड की सूची यहाँ है। मौजूदा इवेंट हैंडलर को संशोधित करें ताकि यह कुछ इस तरह दिखे:
- app_log.h हेडर शामिल करें file
-
- प्रोजेक्ट बनाएं और फ़्लैश करें। इस बिंदु पर, हम एस चलाएंगेampGATT डाटाबेस के अलावा, यह देखने के लिए कि बिना किसी परिवर्तन के यह ऐप कैसे व्यवहार करता है।
- EFRConnect मोबाइल ऐप से निम्न प्रकार से जुड़ें:
-
- 'ब्लूटूथ ब्राउज़र' आइकन पर टैप करें।
- डिवाइस पर 'प्रशिक्षण' नामक 'कनेक्ट' आइकन पर टैप करें।
-
- असुरक्षित विशेषता को इस प्रकार पढ़ें:
-
- UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 वाली अज्ञात सेवा के अंतर्गत 'अधिक जानकारी' लिंक पर टैप करें।
- 'पढ़ें' आइकन पर टैप करके असुरक्षित विशेषता, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c पढ़ें। यहाँ कोई आश्चर्य की बात नहीं है। चूँकि विशेषता किसी भी तरह से सुरक्षित नहीं है, इसलिए इसे सादे पाठ में भेजा जाएगा।
-
- अब संरक्षित विशेषता, UUID d4261dbb-dcd0-daab-ec95-deec088d532b पढ़ें। आपका मोबाइल फ़ोन आपको युग्मित करने और कनेक्ट करने के लिए संकेत देगा, संदेश आपके मोबाइल OS के आधार पर भिन्न हो सकता है। युग्मित करने के अनुरोध को स्वीकार करने के बाद, आपको कंसोल पर निम्न प्रकार का संदेश दिखाई देगा:
टिप्पणीइस मैनुअल के अंत में परिशिष्ट A में संदर्भ के लिए I/O क्षमताओं और युग्मन विधियों का सारांश दिया गया है। परिशिष्ट B में ब्लूटूथ सुरक्षा मोड का सारांश दिया गया है।
सुरक्षा प्रबंधक कॉन्फ़िगरेशन
सुरक्षा प्रबंधक ब्लूटूथ स्टैक का हिस्सा है जो यह निर्धारित करता है कि कौन सी सुरक्षा सुविधाएँ उपयोग की जाती हैं। इन सुविधाओं में मैन-इन-द-मिडल (MITM) सुरक्षा, LE सिक्योर कनेक्शन (उर्फ ECDH), बॉन्डिंग के लिए पुष्टि की आवश्यकता आदि शामिल हैं। सुरक्षा प्रबंधक I/O क्षमताओं को भी संभालता है जिसका उपयोग यह निर्धारित करने के लिए किया जाता है कि पेयरिंग/बॉन्डिंग के लिए किस विधि का उपयोग किया जाता है (सारांश के लिए परिशिष्ट A देखें)। इस अनुभाग में आपको एक सरल सेटअप दिखाई देगा।
- SM को मनचाही कॉन्फ़िगरेशन के साथ सेटअप करें। इस लैब के लिए हार्डवेयर कंसोल पर पासकी प्रदर्शित करना आसान बनाता है। MITM सुरक्षा को सक्षम करने के लिए पासकी प्रविष्टि एक आवश्यकता है। अपने sl_bt_system_boot_id ईवेंट हैंडलर में निम्न कोड जोड़ें। यह मैन-इन-द-मिडल को सक्षम करता है और रिमोट डिवाइस को सूचित करता है कि हमारे पास पासकी प्रदर्शित करने की क्षमता है, लेकिन बस इतना ही।
- कंसोल पर पासकी प्रदर्शित करने के लिए, एक इवेंट हैंडलर की आवश्यकता होती है जैसा कि नीचे दिखाया गया है:
- बॉन्डिंग मोड, बॉन्डिंग की अधिकतम संख्या आदि सेट करें। आरंभ करने के लिए निम्नलिखित कोड का उपयोग करें:
इन सेटिंग्स का उपयोग हमलावर की आपके डिवाइस के साथ बॉन्ड करने की क्षमता को सीमित करने के लिए किया जा सकता है। यदि आपके उत्पाद को केवल एक उपयोगकर्ता की आवश्यकता है, तो आप अधिकतम बॉन्ड को 1 तक सीमित कर सकते हैं। इन कॉल को जोड़ने के लिए एक अच्छी जगह sl_bt_system_boot_id इवेंट हैंडलर है। हम इस समय बाकी लैब को अधिक सुचारू रूप से चलाने के लिए बॉन्डिंग को सक्षम नहीं करेंगे, लेकिन हम केवल एक बॉन्ड की अनुमति देने के लिए बॉन्डिंग नीति सेट करते हैं। संदर्भ के लिए, इन API के लिए दस्तावेज़ यहाँ और यहाँ पाए जाते हैं।
- Sl_bt_evt_sm_bonded_id और sl_bt_evt_sm_bonding_failed_id के लिए इवेंट हैंडलर जोड़ें। इन इवेंट का मुख्य उपयोग वर्तमान में जानकारीपूर्ण है, लेकिन बाद में लैब में आप कार्यक्षमता जोड़ेंगे।
- लक्ष्य बोर्ड पर निर्माण और फ्लैश करें। EFRConnect से कनेक्ट करें और पहले की तरह संरक्षित विशेषता को पढ़ें। इस बार, आपको कंसोल पर एक पासकी दिखाई देगी। संकेत मिलने पर अपने मोबाइल फोन पर यह पासकी दर्ज करें।
- बॉन्डिंग कन्फर्मेशन को आज़माएँ। यह सुविधा उपयोगकर्ता को बॉन्डिंग अनुरोधों की पुष्टि करने की आवश्यकता रखने की क्षमता देती है। ऐसा करने से एप्लिकेशन को यह नियंत्रण मिलता है कि वह किन पीयर डिवाइस के साथ बॉन्ड करता है। एक संभावना यह है कि बॉन्ड की अनुमति देने से पहले उपयोगकर्ता को एक बटन दबाने की आवश्यकता हो।
- अपने मोबाइल फ़ोन में ब्लूटूथ सेटिंग खोलें और EFR32 डिवाइस से बॉन्ड हटाएँ। मोबाइल फ़ोन कार्यान्वयन अलग-अलग होते हैं इसलिए यह चरण आवश्यक नहीं हो सकता है। यदि आपको अपनी ब्लूटूथ सेटिंग में 'प्रशिक्षण' डिवाइस दिखाई नहीं देता है, तो बस अगले चरण पर आगे बढ़ें।
- सॉफ़्टवेयर घटकों में, सरल बटन हैंडलर का एक उदाहरण स्थापित करें।
- हेडर शामिल करें file app.c में sl_simple_button_instances.h
- Sl_bt_evt_sm_bonding_confirm_id इवेंट के लिए एक हैंडलर जोड़ें। इस इवेंट हैंडलर का मुख्य काम उपयोगकर्ता को यह सूचित करना है कि एक रिमोट डिवाइस एक नए बॉन्ड का अनुरोध कर रहा है।
- सरल बटन हैंडलर के लिए कॉलबैक फ़ंक्शन जोड़ें, ताकि ब्लूटूथ स्टैक को यह संकेत भेजा जा सके कि बटन दबाया गया है। यह डिफ़ॉल्ट कॉलबैक को ओवरराइड करता है जो बस वापस लौटता है।
- एक बाहरी सिग्नल इवेंट हैंडलर जोड़ें। यह इवेंट सिग्नल प्राप्त करने के जवाब में उठाया जाता है, जैसे कि पिछले चरण में। बाहरी सिग्नल इवेंट का उपयोग बॉन्डिंग की पुष्टि करने के लिए किया जाएगा।
- बॉन्डिंग पुष्टि की आवश्यकता के लिए sl_bt_sm_configure पर कॉल बदलें जैसे कि
- पुनः निर्माण और फ़्लैश.
- EFRConnect से कनेक्ट करें और पहले की तरह संरक्षित विशेषता को पढ़ें। अब आपको कंसोल पर निम्न संदेश दिखाई देगा:
बॉन्डिंग की पुष्टि करने के लिए PB0 दबाएँ। अब कंसोल बॉन्डिंग के लिए मोबाइल फ़ोन पर दर्ज की जाने वाली पासकी प्रदर्शित करेगा। बॉन्डिंग प्रक्रिया को पूरा करने के लिए पासकी दर्ज करें।
बख्शीश: जब स्टैक कोई ऐसा इवेंट भेजता है जिसे हैंडल नहीं किया जाता है, तो संदेश प्रिंट करने के लिए इवेंट हैंडलर में डिफ़ॉल्ट केस का उपयोग करें। स्टैक शायद आपको कुछ महत्वपूर्ण बताने की कोशिश कर रहा हो।
बुनियादी बातों के अलावा
इस बिंदु पर, आपने लाभ उठाया हैtagहमारे स्टैक द्वारा पेश की जाने वाली सुरक्षा सुविधाओं में से एक। अब आइए हमारे निपटान में मौजूद सुविधाओं के बुद्धिमानी से उपयोग के माध्यम से कार्यान्वयन में सुधार करें। निम्नलिखित चरण वैकल्पिक हैं और एक दूसरे से स्वतंत्र हैं, आप व्यवहार को देखने के लिए प्रत्येक के बाद बिल्ड और फ्लैश कर सकते हैं या उन सभी को एक साथ आज़मा सकते हैं।
- असफल बॉन्ड प्रयासों पर डिस्कनेक्ट करें। खतरों का पता लगाने के लिए यह एक अच्छी जगह है। यदि रिमोट डिवाइस एन्क्रिप्शन/प्रमाणीकरण का समर्थन नहीं करता है या उसके पास सही कुंजियाँ नहीं हैं, तो यह एक हैकर हो सकता है। तो, चलो कनेक्शन तोड़ते हैं। sl_bt_sm_bonding_failed_id इवेंट में sl_bt_connection_close() को कॉल जोड़ने का प्रयास करें। API यहाँ प्रलेखित है।
आप गलत पासकी दर्ज करके इस सुविधा का परीक्षण कर सकते हैं।
- केवल कुछ समय पर बॉन्डिंग की अनुमति देना। यह हमलावर के पास बॉन्ड बनाने के लिए समय को सीमित करता है और 'केवल बॉन्डेड कनेक्शन की अनुमति दें' सुविधा का उपयोग करना संभव बनाता है। डिज़ाइनर चुन सकता है कि बॉन्डेबल मोड को कैसे सक्षम या अक्षम किया जाए। यहाँ प्रदर्शन के उद्देश्य से, हम PB1 के साथ 'सेटअप मोड' को सक्षम करेंगे और 30 सेकंड के बाद इसे अक्षम करने के लिए टाइमर का उपयोग करेंगे।
- सरल बटन इंटरफ़ेस का दूसरा इंस्टेंस स्थापित करें। यह PB1 के उपयोग को सक्षम करेगा।
- बॉन्डिंग को सक्षम/अक्षम करने के लिए स्टैक को एक अलग सिग्नल भेजने के लिए कॉलबैक को संशोधित करें। परिणाम कुछ इस तरह दिखना चाहिए:
- बाहरी सिग्नल इवेंट हैंडलर को संशोधित करें ताकि यह इस नए सिग्नल को संभाल सके। परिणाम इस तरह होना चाहिए:
- Sl_bt_evt_system_soft_timer_id इवेंट के लिए इवेंट हैंडलर जोड़ें। इसका उपयोग सेटअप मोड को अक्षम करने के लिए किया जाएगा।
- निम्नलिखित कोड का उपयोग बॉन्डेबल मोड को सक्षम करने और सभी कनेक्शनों को अनुमति देने या बॉन्डेबल मोड को अक्षम करने और केवल बॉन्डेड डिवाइसों से कनेक्शनों को अनुमति देने के लिए किया जा सकता है:
- Sl_bt_system_boot_id इवेंट हैंडलर में निम्नलिखित कॉल जोड़ें
- प्रोजेक्ट बनाएं और उसे डिवाइस पर फ्लैश करें।
- EFRConnect के साथ डिवाइस से कनेक्ट करने का प्रयास करें। कनेक्शन विफल होना चाहिए।
- अब EFRConnect से कनेक्ट करने से पहले PB1 दबाकर देखें। इस बार कनेक्शन सफल हो जाएगा। 30 सेकंड के बाद आपको कंसोल पर एक संदेश दिखाई देगा जो यह संकेत देगा कि डिवाइस सेटअप मोड से बाहर निकल रहा है। इसका मतलब है कि बॉन्डेबल मोड अब अक्षम है।
- कनेक्शन बनाते समय सुरक्षा बढ़ाएँ। चूँकि सुरक्षा वैकल्पिक है, इसलिए हमें GATT विशेषताओं पर निर्भर रहने के बजाय जल्द से जल्द एन्क्रिप्टेड कनेक्शन का अनुरोध करना चाहिए। API यहाँ प्रलेखित है। इस API को कॉल करने के लिए एक अच्छी जगह sl_bt_evt_connection_opened_id इवेंट है। कनेक्शन हैंडल कनेक्शन वैरिएबल में उपलब्ध है।
सुरक्षित पहचान
अब जबकि हमारे पास अधिक सुरक्षित ब्लूटूथ डिवाइस है, तो चलिए प्रमाणीकरण चरण में सुधार करते हैं। आप पहले ही देख चुके हैं कि पिछले प्रशिक्षण प्रयोगशालाओं में कमांड लाइन के साथ वॉल्ट डिवाइस की सुरक्षित पहचान कैसे सत्यापित की जाती है। इस अनुभाग में, हम देखेंगे कि कैसे एक BLE डिवाइस अपने प्रमाणपत्र श्रृंखला का अनुरोध करके और एक चुनौती भेजकर किसी अन्य BLE डिवाइस की पहचान सत्यापित कर सकता है। सभी सुरक्षित वॉल्ट भागों में अपना स्वयं का डिवाइस प्रमाणपत्र और बैच प्रमाणपत्र होता है। संपूर्ण प्रमाणपत्र श्रृंखला के सत्यापन को सक्षम करने के लिए फ़ैक्टरी और रूट प्रमाणपत्र क्लाइंट एप्लिकेशन में हार्ड कोड किए गए हैं। सुरक्षित पहचान पर अधिक जानकारी के लिए AN1268 देखें।
- डिवाइस सत्यापन हस्ताक्षर को संग्रहीत करने के लिए नीचे दिए अनुसार एक वैश्विक बफर परिभाषित करें:
- जस्टवर्क्स पेयरिंग का उपयोग करने के लिए सुरक्षा प्रबंधक कॉन्फ़िगरेशन सेट करें। ऐसा इसलिए किया जाता है ताकि कनेक्शन एन्क्रिप्टेड हो। व्यवहार में, MITM सुरक्षा का उपयोग किया जाना चाहिए लेकिन प्रयोगशाला को सरल रखने के लिए, हम जस्टवर्क्स का उपयोग करेंगे। sl_bt_sm_configure के लिए कॉल को वापस निम्न में बदलें:
इसके अलावा, system_boot इवेंट हैंडलर में setup_mode(true) कॉल पर टिप्पणी करें।
- उपलब्ध सामग्री से helpers.c खोलें और सामग्री को app.c में कॉपी करें। ये कॉलबैक फ़ंक्शन प्रमाणपत्रों को विभाजित करने जैसे कार्य करते हैं ताकि उन्हें BLE पर भेजा जा सके, प्रमाणपत्र श्रृंखला को सत्यापित करना और चुनौती उत्पन्न करना/सत्यापित करना।
- अधिकतम स्थानांतरण इकाई (MTU) आकार निर्धारित करना आवश्यक है ताकि प्रमाणपत्रों को खंडित और पुनः संयोजित किया जा सके। MTU को सहेजने के लिए एक वैश्विक चर परिभाषित करें जैसा कि यहाँ दिखाया गया है:
फिर GATT MTU एक्सचेंज्ड इवेंट के लिए एक इवेंट हैंडलर जोड़ें जैसा कि नीचे दिखाया गया है:
- तीन उपयोगकर्ता डेटा विशेषताएँ हैं जिन्हें पढ़ा जा सकता है। इन विशेषताओं का उपयोग डिवाइस प्रमाणपत्र, बैच प्रमाणपत्र और चुनौती को संप्रेषित करने के लिए किया जाता है। इन उपयोगकर्ता पढ़ने के अनुरोधों को संभालने के लिए एक कॉलबैक फ़ंक्शन का उपयोग किया जाता है। इस फ़ंक्शन को कॉल करने के लिए एक हैंडलर जोड़ें जैसा कि नीचे दिखाया गया है:
कॉलबैक चरण #2 से MTU का उपयोग करके आवश्यकतानुसार प्रमाणपत्रों को विभाजित और भेजता है। यह हस्ताक्षरित चुनौती भेजने का काम भी संभालता है।
- क्लाइंट GATT विशेषताओं में से एक लिखकर एक चुनौती, एक यादृच्छिक संख्या भेजता है जिस पर सर्वर द्वारा हस्ताक्षर किए जाने चाहिए। इस कारण से, एप्लिकेशन को उपयोगकर्ता लेखन अनुरोध ईवेंट के लिए नीचे दिए अनुसार एक हैंडलर की आवश्यकता होती है:
- सुरक्षित पहचान समर्थन जोड़ें fileपरियोजना के लिए:
- app_se_manager_macro.h, app_se_manager_secure_identity.c और app_se_secure_identity.h को परियोजना में उपलब्ध कराई गई सामग्रियों से जोड़ा गया है। fileइसमें प्रमाणपत्र का आकार प्राप्त करने, डिवाइस की सार्वजनिक कुंजी प्राप्त करने और चुनौती पर हस्ताक्षर करने जैसे कार्यों के लिए कुछ सहायक फ़ंक्शन शामिल हैं।
- app.c में app_se_manager_secure_identity.h शामिल करें.
- प्रदान की गई सामग्री से प्रदान किए गए gatt_configuration-attest.btconf को आयात करें। इस GATT डेटाबेस को सुरक्षित सत्यापन कहा जाता है जिसमें चार विशेषताएँ शामिल हैं जिनका उपयोग हमारे डिवाइस की पहचान सत्यापित करने के लिए किया जाएगा। इनमें डिवाइस प्रमाणपत्र, बैच प्रमाणपत्र, चुनौती और प्रतिक्रिया शामिल हैं।
- क्लाइंट, जिसका उपयोग गेटवे जैसे डिवाइस को सिम्युलेट करने के लिए किया जाता है, एक पूर्ण प्रोजेक्ट के रूप में प्रदान किया जाता है क्योंकि इसे बनाना अधिक जटिल है। सामान्य तौर पर, क्लाइंट का संचालन इस प्रकार है:
- सुरक्षित सत्यापन सेवा का विज्ञापन करने वाले उपकरणों को स्कैन करता है और उनसे कनेक्ट करता है।
- GATT डेटाबेस सेवाओं और विशेषताओं की खोज करता है।
- डिवाइस और बैच प्रमाणपत्रों को पढ़ता है और फ़ैक्टरी और रूट प्रमाणपत्र का उपयोग करके प्रमाणपत्र श्रृंखला को सत्यापित करता है, जिसे उसने फ़्लैश में संग्रहीत किया है।
- सर्वर को एक यादृच्छिक चुनौती भेजता है.
- चुनौती के प्रति प्रतिक्रिया को सत्यापित करने का प्रयास।
- यदि कोई भी सत्यापन असफल हो जाए तो कनेक्शन बंद कर दिया जाता है।
- सर्वर प्रोजेक्ट का निर्माण करें और उसे अपने सर्वर WSTK/रेडियोबोर्ड पर फ्लैश करें।
- उपलब्ध सामग्री में क्लाइंट फ़ोल्डर से क्लाइंट प्रोजेक्ट आयात करें। क्लाइंट प्रोजेक्ट बनाएँ और उसे अपने क्लाइंट WSTK/रेडियोबोर्ड पर फ़्लैश करें।
- क्लाइंट WSTK पर रीसेट दबाएँ और सीरियल कंसोल खोलें। क्लाइंट हमारी सुरक्षित पहचान सेवा का विज्ञापन करने वाले डिवाइस के लिए स्कैनिंग शुरू करता है और जब उसे कोई डिवाइस मिल जाता है तो वह कनेक्ट हो जाता है।
- क्लाइंट कुछ संदेश प्रदर्शित करेगा जो यह संकेत देगा कि उसे वांछित सेवा वाला सर्वर मिल गया है, तथा प्रमाणपत्र श्रृंखला के सत्यापन के बारे में स्थिति संदेश भी प्रदर्शित करेगा।
- यदि सत्यापन पास हो जाता है, तो क्लाइंट एक यादृच्छिक संख्या उत्पन्न करेगा, जिसे चुनौती कहा जाता है, और इसे सर्वर को भेजेगा। सर्वर अपनी सुरक्षित रूप से रखी गई निजी डिवाइस कुंजी के साथ चुनौती पर हस्ताक्षर करेगा और हस्ताक्षर को क्लाइंट को वापस कर देगा, इसे चुनौती प्रतिक्रिया कहा जाता है। क्लाइंट तब हस्ताक्षर को सत्यापित करने के लिए पहले प्राप्त डिवाइस प्रमाणपत्र में सार्वजनिक कुंजी का उपयोग करता है। यह पुष्टि करने के लिए किया जाता है कि सर्वर के पास वास्तव में वह निजी कुंजी है जिसका उसने दावा किया था। यदि चुनौती सही ढंग से सत्यापित होती है, तो उस आशय का एक संदेश प्रदर्शित होता है; अन्यथा, कनेक्शन बंद हो जाता है, और एक संदेश प्रदर्शित होता है जिसमें कारण बताया जाता है।
- अब यह पुष्टि करने के लिए कि सत्यापन वास्तव में काम करता है, एक अमान्य प्रमाणपत्र भेजें। आप प्रमाणपत्र डेटा या चुनौती प्रतिक्रिया को दूषित करने के लिए user_read_request_cb() को संशोधित कर सकते हैं।
परिशिष्ट A – I/O क्षमताएं और युग्मन विधियां 
परिशिष्ट बी – सुरक्षा मोड और स्तर
सुरक्षा मोड 1 सिलिकॉन लैब्स के स्टैक में ब्लूटूथ लो एनर्जी के लिए समर्थित एकमात्र मोड है। स्तर इस प्रकार हैं:
- स्तर 1 कोई सुरक्षा नहीं
- एन्क्रिप्शन के साथ स्तर 2 अप्रमाणित युग्मन
- एन्क्रिप्शन के साथ स्तर 3 प्रमाणित युग्मन
- मजबूत एन्क्रिप्शन (ECDH कुंजी एक्सचेंज) के साथ स्तर 4 प्रमाणित सुरक्षित कनेक्शन
दस्तावेज़ / संसाधन
![]() |
silabs 21Q2 सुरक्षित BLE डिवाइस सुरक्षा लैब [पीडीएफ] उपयोगकर्ता पुस्तिका 21Q2 सुरक्षित BLE डिवाइस सुरक्षा लैब, सुरक्षित BLE डिवाइस सुरक्षा लैब, सुरक्षा लैब |