silabs 21Q2 सुरक्षित BLE उपकरण सुरक्षा प्रयोगशाला
BLE सुरक्षा प्रयोगशाला म्यानुअल
यस ल्याबमा, तपाइँ कसरी अझ सुरक्षित BLE उपकरण डिजाइन गर्ने देख्नुहुनेछ। हामी ओभरबाट सुरु गर्नेछौंview केही स्ट्याक सुविधाहरू कसरी प्रयोग गर्ने र थप सुरक्षित जडानहरूका लागि प्रविधिहरूको बारेमा केही सामान्य सल्लाहहरूमा जानुहोस् र अन्तमा हामी कसरी परिधीयलाई प्रामाणिक रूपमा पहिचान गर्न BLE मा यन्त्र प्रमाणपत्रहरू प्रयोग गर्ने भनेर हेर्नेछौं।
सुरु गर्दै
ब्लुटुथ एसample एप्लिकेसन तपाईले निर्माण गरिरहनु भएको छ बुटलोडरको साथ प्रयोग गर्ने उद्देश्यले। यदि तपाइँ एकदम नयाँ EFR32MG21B सँग काम गर्दै हुनुहुन्छ भने, यसमा बुटलोडर हुनेछैन। तपाईंले प्लेटफर्म\bootloader\s मा पूर्व-निर्मित बुटलोडर फेला पार्न सक्नुहुन्छample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a तपाईंको SDK को फोल्डर।
- एक समाज-खाली s संग सुरु गर्नुहोस्ample एप। यो एसample एप टेम्प्लेटको रूपमा प्रयोग गरिन्छ र कुनै पनि BLE अनुप्रयोगको लागि राम्रो सुरुवात बिन्दु बनाउँछ।
- Simplicity Studio बाट Silicon Labs Project Wizard खोल्नुहोस् File मेनु -> नयाँ।
- BRD4181C चयन गर्नुहोस् र 'अर्को' बटनमा क्लिक गर्नुहोस्।
- टेक्नोलोजी प्रकार अन्तर्गत 'ब्लुटुथ (9)' चेकबक्समा क्लिक गर्नुहोस्।
- हाइलाइट 'ब्लुटुथ - SoC खाली' त्यसपछि अर्को क्लिक गर्नुहोस्।
- 'समाप्त' बटनमा क्लिक गर्नुहोस्।
- अब तपाईं सुरक्षित र असुरक्षित विशेषताहरूलाई कसरी फरक रूपमा व्यवहार गरिन्छ भनेर हेर्न केही विशेषताहरू थप्न सक्नुहुन्छ।
- परियोजनाको slcp खोल्नुहोस् file प्रोजेक्ट एक्सप्लोरर विन्डोमा यसलाई डबल-क्लिक गरेर
- 'सफ्टवेयर कम्पोनेन्ट्स' ट्याब हाइलाइट गर्नुहोस् र तल देखाइएको GATT कन्फिगरेसन उपकरण खोल्नुहोस्:
र gatt_configuration.btconf आयात गर्न तल देखाइएको आयात उपकरण प्रयोग गर्नुहोस् file प्रदान गरिएको सामग्रीमा सर्भर फोल्डरबाट।
GATT डाटाबेससँग अनुकूलन सेवा छ, जसलाई 'ट्रेनिंग' भनिन्छ, जसमा केही डाटा सुरक्षित छन् र केही छैनन्। यसले तपाइँलाई एक सुरक्षित विशेषता बनाम असुरक्षित एक पहुँच गर्न प्रयास गर्दा के हुन्छ तुलना गर्न अनुमति दिन्छ। यो धेरै आधारभूत सुरक्षा संग एक उपकरण बनाउन को एक द्रुत तरीका हो।
- अनुप्रयोगमा के भइरहेको छ भनी ट्र्याक गर्न हामी सिम्पलिसिटी स्टुडियोमा कन्सोलमा प्रिन्ट गर्न सिरियल पोर्ट प्रयोग गर्नेछौं। यी कम्पोनेन्टहरू फेला पार्ने सबैभन्दा सजिलो तरिका सफ्टवेयर कम्पोनेन्ट संवादमा देखाइएको रूपमा खोजी गर्नु हो:
-
- IO स्ट्रिम USART घटक स्थापना गर्नुहोस्
- IO Stream Retarget STDIO कम्पोनेन्ट स्थापना गर्नुहोस्
- मानक I/O कम्पोनेन्ट स्थापना गर्नुहोस्
- लग कम्पोनेन्ट स्थापना गर्नुहोस्
- बोर्ड कन्ट्रोल कम्पोनेन्ट खोल्नुहोस् र 'भर्चुअल COM UART सक्षम गर्नुहोस्' खोल्नुहोस्।
- 'डिबग एडाप्टरहरू' प्यानलमा एडाप्टरमा दायाँ क्लिक गर्नुहोस् र 'लन्च कन्सोल' चयन गर्नुहोस्। 'सिरियल 1' ट्याब चयन गर्नुहोस् र कन्सोल सञ्झ्यालको पाठ प्रविष्टि फिल्डमा कर्सर राख्नुहोस् र कन्सोललाई जगाउन इन्टर थिच्नुहोस्।
-
- जडान ह्यान्डल बचत गर्नको लागि sl_bt_on_event(), app.c मा फेला परेको स्थानीय चर सिर्जना गर्नुहोस्। चर स्थिर हुनुपर्छ किनभने यस प्रकार्यलाई स्ट्याकद्वारा प्रत्येक घटना उठाउँदा बोलाइन्छ र हामी मान स्थिर रहोस् भन्ने चाहन्छौं। जडान ह्यान्डल पछि प्रयोग गरिनेछ
प्रयोगशाला को खण्ड।
- हामी जडान भएको बेला, सुरक्षा मोडहरू, आदि हेर्नका लागि घटनाहरूका लागि केही 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.h हेडर समावेश गर्नुहोस् file
-
- परियोजना निर्माण र फ्लैश गर्नुहोस्। यस बिन्दुमा, हामी एस चलाउनेछौंampGATT डाटाबेस बाहेक यसले कुनै पनि परिवर्तन नगरी कसरी व्यवहार गर्छ भनेर हेर्नको लागि le एप।
- निम्नानुसार 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 क्षमताहरू पनि ह्यान्डल गर्दछ जुन जोडी बनाउनको लागि कुन विधि प्रयोग गरिन्छ भनेर निर्धारण गर्न प्रयोग गरिन्छ। /बन्धन (सारांशको लागि परिशिष्ट ए हेर्नुहोस्)। यस खण्डमा तपाईले एक साधारण सेटअप देख्नुहुनेछ।
- इच्छित कन्फिगरेसनको साथ 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हाम्रो स्ट्याकले प्रस्ताव गरेको सुरक्षा सुविधाहरूको e। अब हाम्रो पहुँचमा सुविधाहरूको बुद्धिमानी प्रयोग मार्फत कार्यान्वयन सुधार गरौं। निम्न चरणहरू वैकल्पिक र एकअर्काबाट स्वतन्त्र छन्, तपाईंले व्यवहार हेर्न वा ती सबै सँगै प्रयास गर्न प्रत्येक पछि निर्माण गर्न र फ्ल्यास गर्न सक्नुहुन्छ।
- असफल बन्ड प्रयासहरूमा जडान विच्छेद गर्नुहोस्। खतराहरू पत्ता लगाउन यो राम्रो ठाउँ हो। यदि रिमोट उपकरणले इन्क्रिप्सन/प्रमाणीकरणलाई समर्थन गर्दैन वा सही कुञ्जीहरू छैनन् भने, यो ह्याकर हुन सक्छ। त्यसोभए, सम्पर्क तोडौं। 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 हेर्नुहोस्।
- तलको रूपमा यन्त्र प्रमाणीकरण हस्ताक्षर भण्डारण गर्नको लागि विश्वव्यापी बफर परिभाषित गर्नुहोस्:
- JustWorks जोडी प्रयोग गर्न सुरक्षा प्रबन्धक कन्फिगरेसन सेट गर्नुहोस्। यो गरिन्छ ताकि जडान ईन्क्रिप्टेड छ। अभ्यासमा, MITM सुरक्षा प्रयोग गरिनु पर्छ तर प्रयोगशाला सरल राख्न, हामी JustWorks प्रयोग गर्नेछौं। निम्नमा sl_bt_sm_configure मा कल परिवर्तन गर्नुहोस्:
साथै, system_boot घटना ह्यान्डलरमा setup_mode(true) मा कललाई टिप्पणी गर्नुहोस्।
- प्रदान गरिएको सामग्रीबाट helpers.c खोल्नुहोस् र सामग्रीहरूलाई app.c मा प्रतिलिपि गर्नुहोस्। यी कलब्याक प्रकार्यहरूले प्रमाणपत्रहरू विभाजन गर्ने जस्ता कार्यहरू गर्दछ ताकि तिनीहरूलाई BLE मा पठाउन सकिन्छ, प्रमाणपत्र श्रृंखला प्रमाणित गर्ने, र चुनौती उत्पन्न गर्ने/प्रमाणीकरण गर्ने।
- यो अधिकतम स्थानान्तरण एकाइ (MTU) आकार निर्धारण गर्न आवश्यक छ ताकि प्रमाणपत्रहरू विभाजित र पुन: मिलाउन सकिन्छ। यहाँ देखाइए अनुसार MTU बचत गर्न ग्लोबल चर परिभाषित गर्नुहोस्:
त्यसपछि तल देखाइएको GATT MTU आदानप्रदान घटनाको लागि घटना ह्यान्डलर थप्नुहोस्:
- त्यहाँ तीन प्रयोगकर्ता डेटा विशेषताहरू छन् जुन पढ्न सकिन्छ। यी विशेषताहरू उपकरण प्रमाणपत्र, ब्याच प्रमाणपत्र र चुनौती संचार गर्न प्रयोग गरिन्छ। यी प्रयोगकर्ता पढ्ने अनुरोधहरू ह्यान्डल गर्न कलब्याक प्रकार्य प्रयोग गरिन्छ। तल देखाइएको रूपमा यो प्रकार्य कल गर्न ह्यान्डलर थप्नुहोस्:
कलब्याकले MTU को चरण #2 बाट खण्डमा प्रयोग गर्दछ र आवश्यकता अनुसार प्रमाणपत्रहरू पठाउँदछ। यसले हस्ताक्षरित चुनौती पठाउने काम पनि गर्छ।
- ग्राहकले GATT विशेषताहरू मध्ये एउटा लेखेर, सर्भरद्वारा हस्ताक्षर गर्नको लागि एउटा चुनौती, अनियमित नम्बर पठाउँछ। यस कारणका लागि, अनुप्रयोगसँग प्रयोगकर्ता लेखन अनुरोध घटनाको लागि निम्नानुसार ह्यान्डलर हुन आवश्यक छ:
- सुरक्षित पहिचान समर्थन थप्नुहोस् fileपरियोजनामा s:
- app_se_manager_macro.h, app_se_manager_secure_identity.c र app_se_secure_identity.h परियोजनालाई प्रदान गरिएका सामग्रीहरूबाट। यी files ले प्रमाणपत्रको साइज प्राप्त गर्ने, यन्त्र सार्वजनिक कुञ्जी प्राप्त गर्ने र चुनौतीमा हस्ताक्षर गर्ने जस्ता कार्यहरूका लागि केही सहायक कार्यहरू समावेश गर्दछ।
- app.c मा app_se_manager_secure_identity.h समावेश गर्नुहोस्।
- प्रदान गरिएको सामग्रीबाट gatt_configuration-attest.btconf आयात गर्नुहोस्। यो GATT डाटाबेसलाई सुरक्षित प्रमाणीकरण भनिन्छ जसमा चार विशेषताहरू समावेश छन् जुन हाम्रो यन्त्रको पहिचान प्रमाणित गर्न प्रयोग गरिने छ। यसमा उपकरण प्रमाणपत्र, ब्याच प्रमाणपत्र, चुनौती र प्रतिक्रिया समावेश छ।
- ग्राहक, जुन गेटवे जस्ता यन्त्रको नक्कल गर्न प्रयोग गरिन्छ, पूर्ण परियोजनाको रूपमा प्रदान गरिएको छ किनकि यो निर्माण गर्न थप जटिल छ। सामान्यतया, ग्राहकको सञ्चालन निम्नानुसार छ:
- सुरक्षित प्रमाणीकरण सेवाको विज्ञापन गर्ने उपकरणहरूको लागि स्क्यान र तिनीहरूलाई जडान गर्दछ।
- GATT डाटाबेस सेवाहरू र विशेषताहरू पत्ता लगाउँदछ।
- यन्त्र र ब्याच प्रमाणपत्रहरू पढ्छ र फ्याक्ट्री र रूट प्रमाणपत्र प्रयोग गरी प्रमाणपत्र श्रृंखला प्रमाणित गर्दछ जुन यसले फ्ल्यासमा भण्डार गरेको छ।
- सर्भरमा अनियमित चुनौती पठाउँछ।
- चुनौतीको प्रतिक्रिया प्रमाणित गर्ने प्रयास।
- कुनै प्रमाणीकरण असफल भएमा जडान बन्द गर्छ।
- तपाईंको सर्भर WSTK/रेडियोबोर्डमा सर्भर प्रोजेक्ट बनाउनुहोस् र फ्ल्यास गर्नुहोस्।
- प्रदान गरिएको सामग्रीमा ग्राहक फोल्डरबाट ग्राहक परियोजना आयात गर्नुहोस्। तपाईंको ग्राहक WSTK/रेडियोबोर्डमा ग्राहक परियोजना निर्माण र फ्लैश गर्नुहोस्।
- क्लाइन्ट WSTK मा रिसेट थिच्नुहोस् र सिरियल कन्सोल खोल्नुहोस्। ग्राहकले हाम्रो सुरक्षित पहिचान सेवाको विज्ञापन गर्ने यन्त्रहरूको लागि स्क्यान गर्न थाल्छ र यो फेला पर्दा जडान हुनेछ।
- ग्राहकले प्रमाणपत्र श्रृंखलाको प्रमाणीकरणको बारेमा चाहिने सेवा र स्थिति सन्देशहरू भएको सर्भर फेला पारेको संकेत गर्नका लागि केही सन्देशहरू प्रदर्शन गर्नेछ।
- यदि प्रमाणीकरण पास भयो भने, ग्राहकले अनियमित नम्बर उत्पन्न गर्नेछ, जसलाई चुनौती भनिन्छ, र सर्भरमा पठाउनेछ। सर्भरले यसको सुरक्षित रूपमा राखिएको निजी उपकरण कुञ्जी र ग्राहकलाई हस्ताक्षर फिर्ताको साथ चुनौतीमा हस्ताक्षर गर्नेछ, यसलाई चुनौती प्रतिक्रिया भनिन्छ। ग्राहकले हस्ताक्षर प्रमाणित गर्न पहिले प्राप्त उपकरण प्रमाणपत्रमा सार्वजनिक कुञ्जी प्रयोग गर्दछ। यो सर्भरसँग साँच्चै निजी कुञ्जी छ भन्ने कुरा पुष्टि गर्नको लागि गरिएको हो। यदि चुनौती सही रूपमा प्रमाणित गरिएको छ भने, त्यस प्रभावको लागि सन्देश प्रदर्शित हुन्छ; अन्यथा, जडान बन्द छ, र एउटा सन्देश प्रदर्शित हुन्छ किन व्याख्या गर्दै।
- प्रमाणीकरण साँच्चै काम गर्छ भनेर पुष्टि गर्न अब अवैध प्रमाणपत्र पठाउनुहोस्। तपाईले प्रयोगकर्ता_read_request_cb() लाई सर्टिफिकेट डेटा वा चुनौती प्रतिक्रिया भ्रष्ट गर्न परिमार्जन गर्न सक्नुहुन्छ।
परिशिष्ट A - I/O क्षमताहरू र जोडा बनाउने विधिहरू 
परिशिष्ट B - सुरक्षा मोड र स्तरहरू
सुरक्षा मोड १ सिलिकन ल्याब्स स्ट्याकमा ब्लुटुथ कम ऊर्जाको लागि समर्थित एक मात्र मोड हो। स्तरहरू निम्नानुसार छन्:
- स्तर 1 कुनै सुरक्षा छैन
- एन्क्रिप्शनको साथ स्तर 2 अप्रमाणित जोडी
- एन्क्रिप्शनको साथ स्तर 3 प्रमाणीकृत जोडी
- बलियो ईन्क्रिप्शन (ECDH कुञ्जी विनिमय) संग स्तर 4 प्रमाणित सुरक्षित जडानहरू
कागजातहरू / स्रोतहरू
![]() |
silabs 21Q2 सुरक्षित BLE उपकरण सुरक्षा प्रयोगशाला [pdf] प्रयोगकर्ता पुस्तिका 21Q2 सुरक्षित BLE उपकरण सुरक्षा प्रयोगशाला, सुरक्षित BLE उपकरण सुरक्षा प्रयोगशाला, सुरक्षा प्रयोगशाला |