silabs 21Q2 సురక్షిత BLE పరికరం సెక్యూరిటీ ల్యాబ్
BLE సెక్యూరిటీ ల్యాబ్ మాన్యువల్
ఈ ల్యాబ్లో, మరింత సురక్షితమైన BLE పరికరాన్ని ఎలా డిజైన్ చేయాలో మీరు చూస్తారు. మేము ఒక ఓవర్తో ప్రారంభిస్తాముview కొన్ని స్టాక్ ఫీచర్లను ఎలా ఉపయోగించాలి మరియు మరింత సురక్షితమైన కనెక్షన్ల కోసం టెక్నిక్ల గురించి కొన్ని సాధారణ సలహాలను ఎలా ఉపయోగించాలి మరియు పరిధీయాన్ని ప్రామాణికమైనదిగా గుర్తించడానికి BLE ద్వారా పరికర ప్రమాణపత్రాలను ఎలా ఉపయోగించాలో మేము చూద్దాం.
ప్రారంభించడం
బ్లూటూత్ ఎస్ampమీరు నిర్మించబోయే అప్లికేషన్ బూట్లోడర్తో ఉపయోగించడానికి ఉద్దేశించబడింది. మీరు సరికొత్త EFR32MG21Bతో పని చేస్తుంటే, దానికి బూట్లోడర్ ఉండదు. మీరు ప్లాట్ఫారమ్\బూట్లోడర్\sలో ముందుగా నిర్మించిన బూట్లోడర్ను కనుగొనవచ్చుample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a మీ SDK ఫోల్డర్.
- ఒక soc-ఖాళీ sతో ప్రారంభించండిample యాప్. ఈ ఎస్ample యాప్ ఒక టెంప్లేట్గా ఉపయోగించబడుతుంది మరియు ఏదైనా 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 డేటాబేస్తో పాటు ఎటువంటి మార్పులు లేకుండా ఎలా ప్రవర్తిస్తుందో చూడటానికి 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 సామర్థ్యాలను కూడా సెక్యూరిటీ మేనేజర్ నిర్వహిస్తారు. /బంధం (సారాంశం కోసం అనుబంధం 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ని చూడండి.
- కింది విధంగా పరికర ధృవీకరణ సంతకాన్ని నిల్వ చేయడానికి గ్లోబల్ బఫర్ను నిర్వచించండి:
- 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ప్రాజెక్ట్కి లు:
- ప్రాజెక్ట్కి అందించిన మెటీరియల్ల నుండి 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 సామర్థ్యాలు మరియు జత చేసే పద్ధతులు 
అనుబంధం B - భద్రతా మోడ్లు మరియు స్థాయిలు
సిలికాన్ ల్యాబ్ల స్టాక్లో బ్లూటూత్ లో ఎనర్జీకి మద్దతు ఇచ్చే ఏకైక మోడ్ సెక్యూరిటీ మోడ్ 1. స్థాయిలు క్రింది విధంగా ఉన్నాయి:
- స్థాయి 1 భద్రత లేదు
- ఎన్క్రిప్షన్తో స్థాయి 2 ధృవీకరించబడని జత
- ఎన్క్రిప్షన్తో స్థాయి 3 ప్రామాణీకరించబడిన జత
- బలమైన ఎన్క్రిప్షన్ (ECDH కీ మార్పిడి)తో స్థాయి 4 ప్రమాణీకరించబడిన సురక్షిత కనెక్షన్లు
పత్రాలు / వనరులు
![]() |
silabs 21Q2 సురక్షిత BLE పరికరం సెక్యూరిటీ ల్యాబ్ [pdf] యూజర్ మాన్యువల్ 21Q2 సురక్షిత BLE పరికరం సెక్యూరిటీ ల్యాబ్, సురక్షిత BLE పరికరం సెక్యూరిటీ ల్యాబ్, సెక్యూరిటీ ల్యాబ్ |