silabs 21Q2 Maabara ya Usalama ya kifaa cha BLE
Mwongozo wa Maabara ya Usalama ya BLE
Katika maabara hii, utaona jinsi ya kuunda kifaa salama zaidi cha BLE. Tutaanza na mwishoview ya jinsi ya kutumia baadhi ya vipengele vya rafu na kuendelea hadi kwenye ushauri wa jumla kuhusu mbinu za miunganisho iliyo salama zaidi na hatimaye tutaona jinsi ya kutumia vyeti vya kifaa kupitia BLE ili kutambua kifaa cha pembeni kuwa halisi.
Kuanza
Bluetooth sample application utakayounda imekusudiwa kutumiwa na bootloader. Ikiwa unafanya kazi na EFR32MG21B mpya kabisa, haitakuwa na kipakiaji cha awali. Unaweza kupata kipakiaji kilichoundwa awali kwenye jukwaa\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a folda ya SDK yako.
- Anza na s tupuampprogramu ya. Hii sample app inatumika kama kiolezo na hufanya mahali pazuri pa kuanzia kwa programu yoyote ya BLE.
- Fungua Mchawi wa Mradi wa Maabara ya Silicon kutoka kwa Studio ya Urahisi File menyu -> mpya.
- Chagua BRD4181C na ubofye kitufe cha 'kinachofuata'.
- Bofya kisanduku cha kuteua cha 'Bluetooth (9)' chini ya aina ya teknolojia.
- Angazia 'Bluetooth - SoC Tupu' kisha ubofye inayofuata.
- Bofya kitufe cha 'Maliza'.
- Sasa unaweza kuongeza baadhi ya sifa ili kuona jinsi sifa zinazolindwa na zisizolindwa zinavyochukuliwa kwa njia tofauti.
- Fungua slcp ya mradi file kwa kubofya mara mbili kwenye dirisha la Mtafiti wa Mradi
- Angazia kichupo cha 'SOFTWARE COMPONENTS' na ufungue zana ya usanidi ya GATT kama inavyoonyeshwa hapa chini:
Na utumie zana ya kuingiza iliyoonyeshwa hapa chini kuagiza gatt_configuration.btconf file kutoka kwa folda ya seva kwenye nyenzo zinazotolewa.
Hifadhidata ya GATT ina huduma maalum, inayoitwa 'Mafunzo', yenye data ambayo imelindwa na nyingine ambayo haijalindwa. Hii hukuruhusu kulinganisha kile kinachotokea unapojaribu kufikia sifa iliyolindwa dhidi ya isiyolindwa. Hii ni njia ya haraka ya kutengeneza kifaa chenye usalama wa kimsingi sana.
- Tutatumia mlango wa mfululizo kuchapisha hadi kwenye dashibodi katika Siplicity Studio ili kufuatilia kinachoendelea kwenye programu. Njia rahisi ya kupata vijenzi hivi ni kwa kuvitafuta kwenye mazungumzo ya SOFTWARE COMPONENTS kama inavyoonyeshwa:
-
- Sakinisha sehemu ya UART ya Mtiririko wa IO
- Sakinisha sehemu ya IO ya Kulenga Upya ya STDIO
- Sakinisha kipengele cha Kawaida cha I/O
- Sakinisha sehemu ya Ingia
- Fungua kipengele cha Udhibiti wa Bodi na uwashe 'Wezesha Virtual COM UART'
- Bofya kulia kwenye adapta kwenye paneli ya 'Debug ADAPTER' na uchague 'Zindua Console'. Teua kichupo cha 'Msururu wa 1' na uweke kishale kwenye sehemu ya ingizo ya maandishi ya dirisha la kiweko na ubonyeze ingiza ili kuamsha kiweko.
-
- Unda lahaja ya ndani katika sl_bt_on_event(), inayopatikana katika app.c, kwa ajili ya kuhifadhi mpini wa muunganisho. Tofauti lazima iwe tuli kwa kuwa chaguo hili la kukokotoa linaitwa kila wakati tukio linapoinuliwa na rafu na tunataka thamani iendelee. Ncha ya uunganisho itatumika baadaye
sehemu ya maabara.
- Ingiza baadhi ya taarifa za app_log() kwa matukio ili kuona wakati tumeunganishwa, hali za usalama, n.k
-
- Jumuisha kichwa cha app_log.h file
- sl_bt_evt_connection_opened - chapisha kushughulikia dhamana na kuhifadhi kushughulikia uhusiano. Ikiwa mpini wa dhamana ni 0xFF, hakuna dhamana kati ya vifaa vilivyounganishwa. Rekebisha kidhibiti cha tukio kilichopo ili ionekane kama hii:
- sl_bt_evt_connection_parameters - hali ya usalama. Hii imefanywa ili uweze kuona wakati hali ya usalama inabadilika. Kuna tofauti katika nambari za njia za usalama ambapo hali ya usalama 1, imeorodheshwa na thamani 0, nk. Ongeza kidhibiti cha tukio kifuatacho kwenye programu yako:
- sl_bt_evt_connection_closed_id. Kidhibiti hiki cha tukio kimerekebishwa ili kusasisha mpini wa muunganisho. Thamani 0xFF inatumika kuashiria kuwa hakuna muunganisho unaotumika. Amri ya app_log() inatumika kuchapisha sababu ya muunganisho kufungwa, orodha ya nambari za hali iko hapa. Rekebisha kidhibiti cha tukio kilichopo ili ionekane kama hii:
- Jumuisha kichwa cha app_log.h file
-
- Kujenga na flash mradi. Katika hatua hii, tutaendesha sample app kuona jinsi inavyofanya kazi bila mabadiliko yoyote, kando na hifadhidata ya GATT.
- Unganisha na programu ya simu ya EFRConnect kama ifuatavyo:
-
- Gonga aikoni ya 'Kivinjari cha Bluetooth'.
- Gonga aikoni ya 'Unganisha' kwenye kifaa kiitwacho 'Mafunzo'.
-
- Soma tabia isiyolindwa kama ifuatavyo:
-
- Gusa kiungo cha 'Maelezo Zaidi' chini ya huduma isiyojulikana na UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- Soma sifa ambayo haijalindwa, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c kwa kugonga aikoni ya 'Soma'. Hakuna mshangao hapa. Kwa kuwa sifa hiyo haijalindwa kwa njia yoyote, itatumwa kwa maandishi wazi.
-
- Sasa soma sifa iliyolindwa, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Simu yako ya mkononi inapaswa kukuarifu kuoanisha na kuunganisha, ujumbe unaweza kutofautiana kulingana na mfumo wako wa uendeshaji wa simu. Baada ya kukubali ombi la kuoanisha, unapaswa kutuma ujumbe kwenye kiweko kama ifuatavyo:
Kumbuka: Kiambatisho A kilicho mwishoni mwa mwongozo huu kina muhtasari wa uwezo wa I/O na mbinu za kuoanisha kwa ajili ya marejeleo. Kiambatisho B ni muhtasari wa hali za usalama za Bluetooth.
Usanidi wa Kidhibiti cha Usalama
Kidhibiti cha usalama ni sehemu ya rafu ya Bluetooth ambayo huamua vipengele vya usalama vinavyotumika. Vipengele hivi ni pamoja na ulinzi wa mtu katikati (MITM), miunganisho ya LE Secure (yajulikanayo kama ECDH), inayohitaji uthibitisho wa kuunganisha, n.k. Msimamizi wa usalama pia anashughulikia uwezo wa I/O ambao hutumika kubainisha ni njia ipi inatumika kuoanisha. /kuunganisha (angalia Kiambatisho A kwa muhtasari). Katika sehemu hii utaona usanidi rahisi.
- Sanidi SM na usanidi unaotaka. Maunzi ya maabara hii hurahisisha kuonyesha nenosiri kwenye kiweko. Ingizo la nenosiri ni sharti ili kuwezesha ulinzi wa MITM. Ongeza nambari ifuatayo kwa kidhibiti chako cha sl_bt_system_boot_id. Hii huwezesha man-in-the-katikati na kufahamisha kifaa cha mbali kuwa tuna uwezo wa kuonyesha nenosiri, lakini ndivyo tu.
- Ili kuonyesha nenosiri kwenye kiweko, kidhibiti tukio kinahitajika kama inavyoonyeshwa hapa chini:
- Weka modi ya kuunganisha, idadi ya juu zaidi ya vifungo, n.k. Tumia msimbo ufuatao ili kuanza:
Mipangilio hii inaweza kutumika kupunguza uwezo wa mvamizi kushikamana na kifaa chako. Ikiwa bidhaa yako inahitaji kuwa na mtumiaji mmoja pekee, basi unaweza kuweka kikomo cha dhamana hadi 1. Mahali pazuri pa kuongeza simu hizi ni katika kidhibiti cha tukio cha sl_bt_system_boot_id. Hatutawezesha uwekaji dhamana kwa wakati huu ili kufanya sehemu nyingine ya maabara iende kwa urahisi zaidi lakini tumeweka sera ya dhamana ili kuruhusu bondi moja pekee. Kwa kumbukumbu, hati za API hizi zinapatikana hapa na hapa.
- Ongeza vidhibiti tukio vya sl_bt_evt_sm_bonded_id na sl_bt_evt_sm_bonding_failed_id. Matumizi kuu ya hafla hizi ni ya kuarifu kwa sasa lakini baadaye kwenye maabara utaongeza utendakazi.
- Jenga na uangaze kwenye ubao unaolengwa. Unganisha na EFRConnect na usome sifa iliyolindwa kama hapo awali. Wakati huu, utaona nenosiri lililoonyeshwa kwenye koni. Weka nenosiri hili kwenye simu yako ya mkononi unapoombwa.
- Jaribu uthibitisho wa kuunganisha. Kipengele hiki humpa mtumiaji uwezo wa kuhitaji kwamba maombi ya kuunganisha yathibitishwe. Kufanya hivyo huipa programu udhibiti juu ya vifaa vingine vinavyounganishwa navyo. Uwezekano mmoja ni kumtaka mtumiaji abonye kitufe kabla ya kuruhusu bondi.
- Fungua mipangilio ya Bluetooth kwenye simu yako ya mkononi na uondoe dhamana kwenye kifaa cha EFR32. Utekelezaji wa simu ya rununu hutofautiana kwa hivyo hatua hii inaweza kuwa sio lazima. Ikiwa huoni kifaa cha 'Mafunzo' katika mipangilio yako ya Bluetooth, endelea tu kwa hatua inayofuata.
- Katika vipengele vya programu, sakinisha mfano mmoja wa kidhibiti rahisi cha kifungo.
- Jumuisha kichwa file sl_simple_button_instances.h katika app.c
- Ongeza kidhibiti kwa tukio la sl_bt_evt_sm_bonding_confirm_id. Kazi kuu ya kidhibiti hiki cha tukio ni kumjulisha mtumiaji kuwa kifaa cha mbali kinaomba bondi mpya.
- Ongeza kipengele cha kupiga simu kwa kidhibiti rahisi cha vitufe ili kutuma mawimbi kwa rafu ya Bluetooth inayoonyesha kuwa kitufe kimebonyezwa. Hii inabatilisha upigaji simu chaguo-msingi ambao hurudishwa tu.
- Ongeza kidhibiti cha tukio la ishara ya nje. Tukio hili linainuliwa kwa kujibu kupokea ishara, kama vile katika hatua ya awali. Tukio la ishara ya nje litatumika kuthibitisha kuunganisha.
- Badilisha simu iwe sl_bt_sm_configure ili kuhitaji uthibitisho wa kuunganisha kama vile
- Kujenga upya na flash.
- Unganisha na EFRConnect na usome sifa iliyolindwa kama hapo awali. Sasa utaona ujumbe kwenye koni kama ifuatavyo:
Bonyeza PB0 ili kuthibitisha kuunganisha. Sasa console itaonyesha ufunguo wa kuingia kwenye simu ya mkononi kwa kuunganisha. Ingiza nenosiri ili kukamilisha mchakato wa kuunganisha.
Kidokezo: Tumia kipochi chaguo-msingi katika kidhibiti cha tukio ili kuchapisha ujumbe wakati rafu inapotuma tukio ambalo halijashughulikiwa. Rafu inaweza kuwa inajaribu kukuambia jambo muhimu.
Zaidi ya Misingi
Kwa hatua hii, umechukua advantage ya vipengele vya usalama ambavyo rafu yetu inapaswa kutoa. Sasa hebu tuboreshe utekelezwaji kupitia matumizi ya busara ya huduma tulizo nazo. Hatua zifuatazo ni za hiari na huru kutoka kwa kila mmoja, unaweza kuunda na kuangaza baada ya kila moja kuona tabia au kuzijaribu zote kwa pamoja.
- Tenganisha wakati wa majaribio ya bondi ambayo hayakufaulu. Hapa ni mahali pazuri pa kugundua vitisho. Ikiwa kifaa cha mbali hakitumii usimbaji fiche/uthibitishaji au hakina funguo sahihi, kinaweza kuwa kidukuzi. Kwa hiyo, hebu tuvunje uhusiano. Jaribu kuongeza simu kwa sl_bt_connection_close() katika sl_bt_sm_bonding_failed_id tukio. API imeandikwa hapa.
Unaweza kujaribu kipengele hiki kwa kuingiza nenosiri lisilo sahihi.
- Inaruhusu tu kuunganisha kwa nyakati fulani. Hii huweka kikomo muda ambao mvamizi anapaswa kuunda dhamana na kuwezesha kutumia kipengele cha 'ruhusu tu miunganisho iliyounganishwa'. Mbuni anaweza kuchagua jinsi ya kuwezesha au kuzima hali inayoweza kuunganishwa. Kwa madhumuni ya onyesho hapa, tutawasha 'hali ya usanidi' na PB1 na tutatumia kipima muda kukizima baada ya sekunde 30.
- Sakinisha mfano wa pili wa kiolesura rahisi cha kifungo. Hii itawezesha matumizi ya PB1.
- Rekebisha urudishaji simu ili kutuma mawimbi tofauti kwenye rafu ili kuwezesha/kuzima kuunganisha. Matokeo yake yanapaswa kuonekana kama hii:
- Rekebisha kidhibiti cha tukio la mawimbi ya nje ili kiweze kushughulikia mawimbi hii mpya. Matokeo yake yanapaswa kuwa kama hii:
- Ongeza kidhibiti cha tukio kwa sl_bt_evt_system_soft_timer_id tukio. Hii itatumika kuzima hali ya usanidi.
- Msimbo ufuatao unaweza kutumika kuwezesha modi inayoweza kuunganishwa na kuruhusu miunganisho yote au kuzima hali ya kushikamana na kuruhusu tu miunganisho kutoka kwa vifaa vilivyounganishwa:
- Ongeza simu ifuatayo katika kidhibiti cha tukio cha sl_bt_system_boot_id
- Jenga mradi na uangaze kwenye kifaa.
- Jaribu kuunganisha kwenye kifaa ukitumia EFRConnect. Muunganisho unapaswa kushindwa.
- Sasa jaribu kubonyeza PB1 kabla ya kuunganisha na EFRConnect. Wakati huu muunganisho utafanikiwa. Baada ya sekunde 30 utaona ujumbe kwenye kiweko ukionyesha kuwa kifaa kinaondoka kwenye hali ya usanidi. Hii inamaanisha kuwa hali ya dhamana sasa imezimwa.
- Ongeza usalama wakati wa kuunda muunganisho. Kwa kuwa usalama ni wa hiari, tunapaswa kuomba muunganisho uliosimbwa kwa njia fiche haraka iwezekanavyo badala ya kutegemea sifa za GATT. API imeandikwa hapa. Mahali pazuri pa kuita API hii ni katika sl_bt_evt_connection_opened_id tukio.Nchi ya muunganisho inapatikana katika tofauti ya muunganisho.
Utambulisho salama
Kwa kuwa sasa tuna kifaa kilicho salama zaidi cha Bluetooth, hebu tuboreshe hatua ya uthibitishaji. Tayari umeona jinsi ya kuthibitisha utambulisho salama wa vifaa vya kuba na mstari wa amri katika maabara za awali za mafunzo. Katika sehemu hii, tutaona jinsi kifaa kimoja cha BLE kinavyoweza kuthibitisha utambulisho wa kifaa kingine cha BLE kwa kuomba msururu wa cheti chake na kutuma changamoto. Sehemu zote salama za kuba hushikilia cheti chao cha kifaa na cheti cha kundi. Vyeti vya kiwanda na mizizi vimewekwa msimbo kwa bidii kwenye programu ya mteja ili kuwezesha uthibitishaji wa msururu mzima wa cheti. Rejelea AN1268 kwa maelezo zaidi kuhusu utambulisho salama.
- Bainisha bafa ya kimataifa ya kuhifadhi saini ya uthibitishaji wa kifaa kama ilivyo hapa chini:
- Weka usanidi wa kidhibiti usalama ili kutumia kuoanisha kwa JustWorks. Hii inafanywa ili uunganisho ufiche. Kwa mazoezi, ulinzi wa MITM unapaswa kutumiwa lakini ili kuweka maabara rahisi, tutatumia JustWorks. Badilisha simu kuwa sl_bt_sm_configure kurudi kwa ifuatayo:
Pia, toa maoni kwa simu ya setup_mode(true) kwenye kidhibiti tukio cha system_boot.
- Fungua helpers.c kutoka kwa nyenzo zilizotolewa na unakili yaliyomo kwenye app.c. Vitendaji hivi vya kupiga simu hufanya kazi kama vile kugawa vyeti ili viweze kutumwa kupitia BLE, kuthibitisha msururu wa cheti, na kutoa/kuthibitisha changamoto.
- Ni muhimu kuamua ukubwa wa juu wa kitengo cha uhamisho (MTU) ili vyeti viweze kugawanywa na kuunganishwa tena. Fafanua utofauti wa kimataifa ili kuokoa MTU kama inavyoonyeshwa hapa:
Kisha ongeza kidhibiti tukio cha tukio lililobadilishwa la GATT MTU kama inavyoonyeshwa hapa chini:
- Kuna sifa tatu za data ya mtumiaji ambazo zinaweza kusomwa. Sifa hizi hutumika kuwasiliana na cheti cha kifaa, cheti cha kundi na changamoto. Chaguo za kurudisha nyuma hutumika kushughulikia maombi haya ya usomaji wa mtumiaji. Ongeza kidhibiti ili kuita chaguo hili la kukokotoa kama inavyoonyeshwa hapa chini:
Urejeshaji simu hutumia MTU kutoka hatua #2 hadi sehemu na kutuma vyeti inavyohitajika. Pia hushughulikia kutuma changamoto iliyotiwa saini.
- Mteja hutuma changamoto, nambari ya nasibu ya kusainiwa na seva, kwa kuandika moja ya sifa za GATT. Kwa sababu hii, programu inahitaji kuwa na kidhibiti kwa tukio la ombi la kuandika la mtumiaji kama ilivyo hapo chini:
- Ongeza usaidizi salama wa utambulisho files kwa mradi:
- app_se_manager_macro.h, app_se_manager_secure_identity.c na app_se_secure_identity.h kutoka nyenzo zilizotolewa kwa mradi. Haya files huwa na baadhi ya vitendakazi vya usaidizi kwa kazi kama vile kupata ukubwa wa cheti, kupata ufunguo wa umma wa kifaa na kutia sahihi changamoto.
- Jumuisha app_se_manager_secure_identity.h katika app.c.
- Ingiza gatt_configuration-attest.btconf iliyotolewa kutoka kwa nyenzo zilizotolewa. Hifadhidata hii ya GATT inayoitwa uthibitisho salama ambao unajumuisha sifa nne ambazo zitatumika kuthibitisha utambulisho wa kifaa chetu. Hizi ni pamoja na cheti cha kifaa, cheti cha kundi, changamoto na majibu.
- Mteja, ambao hutumiwa kuiga kifaa kama vile lango, hutolewa kama mradi kamili kwa kuwa ni ngumu zaidi kujenga. Kwa ujumla, operesheni ya mteja ni kama ifuatavyo.
- Huchanganua vifaa vinavyotangaza huduma salama ya uthibitishaji na kuunganishwa navyo.
- Hugundua huduma na sifa za hifadhidata ya GATT.
- Husoma kifaa na cheti cha kundi na kuthibitisha msururu wa cheti kwa kutumia cheti cha kiwanda na mzizi ambacho kimehifadhi katika flash.
- Hutuma changamoto nasibu kwa seva.
- Majaribio ya kuthibitisha majibu kwa changamoto.
- Hufunga muunganisho ikiwa uthibitishaji wowote utashindwa.
- Jenga na uwashe mradi wa seva kwa seva yako WSTK/radioboard.
- Ingiza mradi wa mteja kutoka kwa folda ya mteja katika nyenzo zinazotolewa. Jenga na uwashe mradi wa mteja kwa WSTK/ubao wa redio.
- Bonyeza kuweka upya kwenye WSTK ya mteja na ufungue koni ya serial. Mteja anaanza kuchanganua vifaa vinavyotangaza huduma yetu salama ya utambulisho na ataunganisha akiipata.
- Mteja ataonyesha baadhi ya ujumbe kuashiria kuwa amepata seva iliyo na huduma inayotaka na ujumbe wa hali kuhusu uthibitishaji wa msururu wa cheti.
- Uthibitishaji ukipita, mteja atatoa nambari nasibu, inayoitwa changamoto, na kuituma kwa seva. Seva itatia saini changamoto kwa ufunguo wake wa kifaa cha faragha unaoshikiliwa kwa usalama na saini kurudi kwa mteja, hii inaitwa jibu la changamoto. Kisha mteja hutumia ufunguo wa umma katika cheti cha kifaa kilichopokelewa hapo awali ili kuthibitisha sahihi. Hii inafanywa ili kuthibitisha kwamba seva ina ufunguo wa faragha ambao ilidai kuwa nao. Ikiwa changamoto imethibitishwa kwa usahihi, ujumbe unaonyeshwa kwa athari hiyo; vinginevyo, uunganisho umefungwa, na ujumbe unaonyeshwa kuelezea kwa nini.
- Sasa tuma cheti batili ili kuthibitisha kuwa uthibitishaji unafanya kazi kweli. Unaweza kurekebisha user_read_request_cb() ili kuharibu data ya cheti au jibu la changamoto.
Kiambatisho A - Uwezo wa I/O na Mbinu za Kuoanisha 
Kiambatisho B - Njia za Usalama na Viwango
Hali ya usalama 1 ndiyo modi ya pekee inayotumika kwa Bluetooth Low Energy katika rafu ya Silicon Labs. Viwango ni kama ifuatavyo:
- Kiwango cha 1 hakuna usalama
- Kiwango cha 2 cha kuoanisha bila kuthibitishwa na usimbaji fiche
- Kiwango cha 3 cha kuoanisha kilichothibitishwa na usimbaji fiche
- Viunganisho salama vya Kiwango cha 4 vilivyo na usimbaji fiche dhabiti (ubadilishanaji wa vitufe vya ECDH)
Nyaraka / Rasilimali
![]() |
silabs 21Q2 Maabara ya Usalama ya kifaa cha BLE [pdf] Mwongozo wa Mtumiaji Maabara ya Usalama ya kifaa cha BLE ya 21Q2, Maabara ya Usalama ya kifaa cha BLE, Maabara ya Usalama |