silabs 21Q2 nchekwa nchekwa ngwaọrụ BLE
Akwụkwọ ntuziaka BLE Security Lab
N'ime ụlọ nyocha a, ị ga-ahụ ka esi emepụta ngwaọrụ BLE dị nchebe karịa. Anyị ga-amalite na njedebeview nke otu esi eji ụfọdụ njirimara nchịkọta wee gaa na ndụmọdụ ụfọdụ gbasara usoro maka njikọ dị nchebe na n'ikpeazụ anyị ga-ahụ ka esi eji asambodo ngwaọrụ n'elu BLE iji chọpụta peripheral dị ka ezigbo.
Na-amalite
Bluetooth sampNgwa nke ị ga-ewu na ya bụ nke a ga-eji jiri bootloader mee ihe. Ọ bụrụ na ị na-eji EFR32MG21B ọhụrụ arụ ọrụ, ọ gaghị enwe bootloader. Ị nwere ike ịhụ bootloader arụgoro mbụ na ikpo okwu bootloader sample-apps bootloader-storage-internalsingle efr32mg21a010f1024im32-brd4181a nchekwa nke SDK gị.
- Malite na soc-efu sample ngwa. Nke a sampA na-eji le app dị ka ndebiri ma na-eme ka mmalite dị mma maka ngwa BLE ọ bụla.
- Mepee Ọkachamara Project Labs Silicon Labs site na Simplicity Studio File menu -> ọhụrụ.
- Họrọ BRD4181C wee pịa bọtịnụ 'ọzọ'.
- Pịa igbe 'Bluetooth (9)' n'okpuru ụdị teknụzụ.
- Mepụta 'Bluetooth - SoC efu' wee pịa ọzọ.
- Pịa bọtịnụ 'Mechaa'.
- Ugbu a, ị nwere ike ịgbakwunye ụfọdụ njirimara iji hụ ka e si emeso njirimara echedoro na enweghị nchebe dị iche iche.
- Mepee slcp oru ngo file site na ịpị ya ugboro abụọ na windo Project Explorer
- Mee ka taabụ 'SOFTWARE COMPONENTS' pụta ìhè wee mepee ngwa nhazi GATT dị ka egosiri n'okpuru:
Ma jiri ngwa mbubata egosiri n'okpuru bubata gatt_configuration.btconf file site na nchekwa ihe nkesa na ihe ndị enyere.
Ebe nchekwa data GATT nwere ọrụ omenala, nke a na-akpọ 'Ọzụzụ', nwere ụfọdụ data echekwara na nke na-adịghị. Nke a na-enye gị ohere iji tụnyere ihe na-eme mgbe ị na-agbalị ịnweta njirimara echedoro vs nke na-enweghị nchebe. Nke a bụ ụzọ dị ngwa nke ịmepụta ngwaọrụ nwere ezigbo nchekwa.
- Anyị ga-eji ọdụ ụgbọ mmiri ka bipụta ya na console na Simplicity Studio iji soro ihe na-eme na ngwa ahụ. Ụzọ kachasị mfe iji chọta ihe ndị a bụ site n'ịchọ ha na mkparịta ụka SOFTWARE COMPONENTS dị ka egosiri:
-
- Wụnye akụrụngwa IO Stream USART
- Wụnye akụrụngwa IO Stream Retarget STIO
- Wụnye akụrụngwa I/O Standard
- Wụnye akụrụngwa Log
- Mepee akụrụngwa Control Board wee gbanye 'Kwado Virtual COM UART'
- Pịa aka nri n'ihe nkwụnye ọkụ na panel 'Debug adapters' wee họrọ 'Mwepụta Console'. Họrọ taabụ 'Oghere Usoro 1' wee tinye cursor na mpaghara ntinye ederede nke mpio njikwa wee pịa tinye ka ịkpọte njikwa.
-
- Mepụta mgbanwe mpaghara na sl_bt_on_event(), dị na app.c, maka ịchekwa aka njikọ. Ngbanwe ahụ ga-abụrịrị ihe kwụ ọtọ ebe ọ bụ na a na-akpọ ọrụ a oge ọ bụla a na-ebuli ihe omume site na nchịkọta ma anyị chọrọ ka uru ahụ na-adịgide adịgide. A ga-eji aka njikọ emechaa
ngalaba nke ụlọ nyocha.
- Fanye ụfọdụ nkwupụta app_log() maka mmemme ịhụ mgbe ejikọrọ anyị, ụdị nchekwa, wdg
-
- Tinye nkụnye eji isi mee app_log.h file
- sl_bt_evt_connection_open – bipụta njikọ aka wee chekwaa aka njikọ. Ọ bụrụ na aka nkekọ bụ 0xFF, enweghị njikọ dị n'etiti ngwaọrụ ejikọrọ dị. Gbanwee onye njikwa mmemme ka ọ dị ka nke a:
- sl_bt_evt_connection_parameters - ọnọdụ nchekwa. Emere nke a ka i wee hụ mgbe ọnọdụ nchekwa gbanwere. Enwere ihe dị iche na ọnụọgụ nke ụdị nchekwa ebe nchekwa 1, ejiri uru 0, wdg. Tinye ihe njikwa mmemme na ngwa gị:
- sl_bt_evt_connection_closed_id. Agbanwekwara onye njikwa mmemme a iji melite njikwa njikọ. A na-eji uru 0xFF gosi na ọ nweghị njikọ na-arụ ọrụ. A na-eji iwu app_log() bipụta ihe kpatara eji mechie njikọ ahụ, ndepụta nke koodu ọkwa dị ebe a. Megharịa onye njikwa mmemme ka ọ dị ka nke a:
- Tinye nkụnye eji isi mee app_log.h file
-
- Wulite ma gbanye ọrụ ahụ. N'oge a, anyị ga-agba ọsọ sample ngwa ịhụ ka o si akpa àgwà na-enweghị mgbanwe ọ bụla, e wezụga GATT nchekwa data.
- Jikọọ na ngwa mkpanaka EFRConnect dị ka ndị a:
-
- Kpatụ akara ngosi 'Bluetooth Browser'.
- Kpatụ akara ngosi 'Jikọọ' na ngwaọrụ aha ya bụ 'Ọzụzụ'.
-
- Gụọ njirimara na-enweghị nchebe dị ka ndị a:
-
- Kpatụ njikọ 'More Info' n'okpuru ọrụ amabeghị ya na UUID a815944e-da1e-9d2a-02e2-a8d15e2430a0.
- Gụọ njirimara anaghị echebe, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c site na ịpị akara ngosi 'Gụọ'. Ọ dịghị ihe ijuanya ebe a. Ebe ọ bụ na echekwaghị njirimara ahụ n'ụzọ ọ bụla, a ga-eziga ya na ederede doro anya.
-
- Ugbu a gụọ njirimara echedoro, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Ekwentị mkpanaaka gị kwesịrị ịkpali gị ijikọ na jikọọ, ozi nwere ike ịdịgasị iche dabere na OS mkpanaka gị. Mgbe ị nabatachara arịrịọ ijikọ, ị ga-ezitere ozi na console ka ndị a:
Rịba amaIhe mgbakwunye A na ngwụcha akwụkwọ ntuziaka a nwere nchịkọta nke ike I/O yana ụzọ njikọta maka ntụnye aka. Ihe mgbakwunye B na-achịkọta ụdị nchekwa Bluetooth.
Nhazi njikwa nchekwa
Onye njikwa nchekwa bụ akụkụ nke nchịkọta Bluetooth nke na-ekpebi njirimara nchekwa ejiri. Atụmatụ ndị a gụnyere nchebe mmadụ na etiti (MITM), njikọ LE Secure (aka ECDH), na-achọ nkwenye maka njikọta, wdg. /njikọ (lee Ihe Odide A maka nchịkọta). Na ngalaba a ị ga-ahụ nhazi dị mfe.
- Tọọ SM na nhazi achọrọ. Akụrụngwa maka ụlọ nyocha a na-eme ka ọ dị mfe igosipụta igodo passkey na njikwa. Ntinye paspọtụ bụ ihe achọrọ iji mee ka nchekwa MITM nwee ike. Tinye koodu a na onye na-ahụ maka mmemme sl_bt_system_boot_id gị. Nke a na-enyere mmadụ-na-n'etiti aka na-agwa ndị dịpụrụ adịpụ ngwaọrụ na anyị nwere ike igosipụta a passkey, ma nke ahụ bụ ihe niile.
- Iji gosi passkey na console, achọrọ onye njikwa mmemme dịka egosiri n'okpuru:
- Tọọ ụdị njikọ, ọnụ ọgụgụ kacha elu nke bonding, wdg. Jiri koodu a ka ịmalite:
Enwere ike iji ntọala ndị a machie ikike onye mwakpo nwere ijikọ na ngwaọrụ gị. Ọ bụrụ na ngwaahịa gị kwesịrị ịnwe naanị otu onye ọrụ, mgbe ahụ ị nwere ike ịmachi njikọ kacha na 1. Ebe dị mma ịgbakwunye oku ndị a dị na sl_bt_system_boot_id mmemme njikwa. Anyị agaghị eme njikọ n'oge a iji mee ka ụlọ nyocha ndị ọzọ na-aga nke ọma mana anyị na-edobe amụma njikọ iji kwe ka naanị otu njikọ. Maka ntụnye aka, a na-achọta akwụkwọ maka API ndị a ebe a na ebe a.
- Tinye ndị na-ahụ maka mmemme maka sl_bt_evt_sm_bonded_id na sl_bt_evt_sm_bonding_failed_id. Isi ojiji maka mmemme ndị a bụ ihe ọmụma ugbu a mana emechaa na ụlọ nyocha ị ga-agbakwunye ọrụ.
- Wulite ma gbanye na bọọdụ ebumnuche. Jikọọ na EFRConnect wee gụọ njirimara echedoro dịka ọ dị na mbụ. N'oge a, ị ga-ahụ passkey egosiri na njikwa. Tinye paswọọdụ a na ekwentị mkpanaaka gị mgbe kpaliri ya.
- Nwalee nkwenye njikọ. Njirimara a na-enye onye ọrụ ikike ịchọ ka ekwenye na arịrịọ njikọ. Ime nke a na-enye ngwa njikwa ngwaọrụ ndị ọgbọ ọ jikọtara ya na ya. Otu ihe nwere ike ime bụ ịchọ onye ọrụ ka ọ pịa bọtịnụ tupu ikwe njikọ ahụ.
- Mepee ntọala Bluetooth na ekwentị mkpanaaka gị wee wepu njikọ na ngwaọrụ EFR32. Mmemme ekwentị mkpanaaka dịgasị iche ka usoro a nwere ike ọ gaghị adị mkpa. Ọ bụrụ na ịhụghị ngwaọrụ 'Ọzụzụ' na ntọala Bluetooth gị, gaa n'ihu na nzọụkwụ ọzọ.
- Na akụrụngwa ngwanrọ, wụnye otu ihe atụ nke onye na-ahụ maka bọtịnụ dị mfe.
- Tinye nkụnye eji isi mee file sl_simple_button_instances.h na app.c
- Tinye onye njikwa maka mmemme sl_bt_evt_sm_bonding_confirm_id. Isi ọrụ nke onye na-ahụ maka mmemme a bụ ịgwa onye ọrụ na ngwaọrụ dịpụrụ adịpụ na-arịọ njikọ ọhụrụ.
- Tinye ọrụ nlọghachite maka onye na-ahụ maka bọtịnụ dị mfe iji zipu mgbaama na ngwungwu Bluetooth na-egosi na emetụla bọtịnụ. Nke a na-ewepụ azụghachi azụ nke ndabara nke na-alaghachi.
- Tinye ihe njikwa mmemme mgbama mpụga. A na-ebuli ihe omume a na nzaghachi maka ịnweta mgbaama, dịka na nzọụkwụ gara aga. A ga-eji mmemme mgbaama mpụga iji kwado njikọ.
- Gbanwee oku na sl_bt_sm_configure iji chọọ nkwenye njikọ dị ka
- Megharia na ọkụ.
- Jikọọ na EFRConnect wee gụọ njirimara echedoro dịka ọ dị na mbụ. Ugbu a ị ga-ahụ ozi na console dị ka ndị a:
Pịa PB0 iji kwado njikọ ahụ. Ugbu a njikwa ahụ ga-egosipụta igodo mbanye a ga-abanye na ekwentị mkpanaaka maka njikọta. Tinye paswọọdụ iji mezue usoro njikọ.
Ndụmọdụ: Jiri ihe ndabara na onye na-ahụ maka mmemme ka bipụta ozi mgbe ngwugwu ahụ na-eziga mmemme na-anaghị edozi ya. Okpokoro ahụ nwere ike na-achọ ịgwa gị ihe dị mkpa.
N'ofè ihe ndabere
N'oge a, ị na-ewere advantage nke nche atụmatụ na anyị tojupụtara ga-enye. Ugbu a, ka anyị kwalite mmejuputa atumatu site n'iji amamihe eme ihe nke anyị nwere. Usoro ndị a bụ nhọrọ na nnwere onwe nke ibe gị, ị nwere ike wulite ma gbanye nke ọ bụla ka ịhụ omume ahụ ma ọ bụ nwalee ha niile ọnụ.
- Kwupu njikọ na mbọ njikọ dara ada. Nke a bụ ebe dị mma ịchọpụta ihe egwu. Ọ bụrụ na ngwaọrụ dịpụrụ adịpụ anaghị akwado izo ya ezo / nyocha ma ọ bụ na enweghị igodo ziri ezi, ọ nwere ike ịbụ onye na-agba ọsọ. Yabụ, ka anyị mebie njikọ ahụ. Gbalịa tinye oku na sl_bt_connection_close() na mmemme sl_bt_sm_bonding_failed_id. Edere API ebe a.
Ị nwere ike nwalee njirimara a site na ịbanye paskey na-ezighi ezi.
- Naanị ikwe ka njikọta n'oge ụfọdụ. Nke a na-egbochi oge onye mwakpo ga-etolite njikọ wee mee ka o kwe omume iji njirimara 'naanị ekwe njikọ ejikọta'. Onye mmebe nwere ike họrọ otu esi eme ma ọ bụ gbanyụọ ọnọdụ bondable. Maka ebumnuche ngosi ebe a, anyị ga-eme ka ọnọdụ 'setup mode' na PB1 wee jiri ngụ oge gbanyụọ ya mgbe sekọnd 30 gachara.
- Wụnye ihe atụ nke abụọ nke interface bọtịnụ dị mfe. Nke a ga-enyere aka iji PB1.
- Gbanwee nlọghachi oku ka izipu mgbaama dị iche na tojupụtara iji mee ka/gbanyụọ njikọ. Nsonaazụ kwesịrị ịdị ka nke a:
- Gbanwee onye na-ahụ maka mmemme mgbaama mpụga ka ọ na-ejikwa mgbaama ọhụrụ a. Nsonaazụ kwesịrị ịdị ka nke a:
- Tinye onye na-ahụ maka mmemme maka mmemme sl_bt_evt_system_soft_timer_id. Nke a ga-eji gbanyụọ mode ntọlite.
- Enwere ike iji koodu na-esonụ iji mee ka ọnọdụ ejikọta ya ma kwe ka njikọ niile ma ọ bụ gbanyụọ ọnọdụ bondable ma hapụ naanị njikọ sitere na ngwaọrụ ejikọtara:
- Tinye oku a na onye na-ahụ maka mmemme sl_bt_system_boot_id
- Wulite oru ngo ma gbanye ya na ngwaọrụ.
- Gbalịa iji EFRConnect jikọọ na ngwaọrụ ahụ. Njikọ kwesịrị ịda.
- Ugbu a gbalịa ịpị PB1 tupu jikọọ na EFRConnect. Oge a njikọ ga-aga nke ọma. Mgbe sekọnd 30 gachara, ị ga-ahụ ozi na console na-egosi na ngwaọrụ ahụ na-apụ n'ọnọdụ ntọala. Nke a pụtara na agbanyụrụ ọnọdụ bondable ugbu a.
- Gbanwee nchekwa na ịmepụta njikọ. Ebe nchekwa bụ nhọrọ, anyị kwesịrị ịrịọ njikọ ezoro ezo ozugbo enwere ike kama ịdabere na njirimara GATT. Edere API ebe a. Ebe dị mma ịkpọ API a dị na mmemme sl_bt_evt_connection_opened_id. Aka njikọ dị na mgbanwe njikọ.
Njirimara echekwara
Ugbu a anyị nwere ngwaọrụ Bluetooth echekwabara, ka emelite usoro nyocha. Ị hụlarị otu esi enyocha njirimara echekwabara nke ngwaọrụ vault site na iji ahịrị iwu na ụlọ nyocha ọzụzụ gara aga. Na ngalaba a, anyị ga-ahụ ka otu ngwaọrụ BLE ga-esi chọpụta njirimara nke ngwaọrụ BLE ọzọ site na ịrịọ yinye asambodo ya na izipu ihe ịma aka. Akụkụ vault niile echekwara na-ejide asambodo ngwaọrụ na asambodo ogbe. The factory na mgbọrọgwụ asambodo na-ike coded n'ime ahịa ngwa aka nkwenye nke dum akwụkwọ yinye. Rụtụ aka na AN1268 maka nkọwa ndị ọzọ gbasara njirimara echekwara.
- Kọwaa ihe nchekwa zuru ụwa ọnụ maka ịchekwa mbinye aka akaebe ngwaọrụ dị ka n'okpuru:
- Tọọ nhazi njikwa nchekwa ka ọ jiri njikọta JustWorks. Emere nke a ka ezoro ezo njikọ ahụ. Na omume, ekwesịrị iji nchekwa MITM mana ka ụlọ nyocha dị mfe, anyị ga-eji JustWorks. Gbanwee oku ka sl_bt_sm_configure laghachi na ndị a:
Ọzọkwa, kwupụta oku a na-akpọ setup_mode(ezi) na njikwa mmemme system_boot.
- Mepee helpers.c site na ihe enyere ma detuo ọdịnaya n'ime ngwa.c. Ọrụ ịkpọghachite ndị a na-arụ ọrụ dị ka ikewa asambodo ka e wee ziga ha n'elu BLE, nyochaa yinye asambodo, yana imepụta/ịkwado ihe ịma aka ahụ.
- Ọ dị mkpa iji chọpụta oke nfefe kacha (MTU) ka e wee kewaa asambodo ma chịkọtakwa ya. Kọwaa mgbanwe zuru ụwa ọnụ iji chekwaa MTU dị ka egosiri ebe a:
Wee tinye onye na-ahụ maka mmemme maka mmemme gbanwere GATT MTU dị ka egosiri n'okpuru:
- Enwere njirimara data onye ọrụ atọ enwere ike ịgụ. A na-eji njirimara ndị a iji kwukọrịta asambodo ngwaọrụ, asambodo batch na ihe ịma aka. A na-eji ọrụ ịkpọghachite iji jikwaa arịrịọ ọgụgụ onye ọrụ a. Tinye onye njikwa ka ọ kpọọ ọrụ a dịka egosiri n'okpuru:
Nkpọghachi oku na-eji MTU site na nzọụkwụ #2 gaa na ngalaba ma zipụ asambodo dịka ọ dị mkpa. Ọ na-ejikwa izipu ihe ịma aka aka aka.
- Onye ahịa ahụ na-eziga ihe ịma aka, nọmba random ka ihe nkesa ga-abanye, site na ide otu n'ime njirimara GATT. Maka nke a, ngwa ahụ kwesịrị ịnwe onye na-ahụ maka onye ọrụ na-ede ihe omume arịrịọ dị ka n'okpuru:
- Tinye nkwado njirimara echedoro files na oru ngo:
- app_se_manager_macro.h, app_se_manager_secure_identity.c na app_se_secure_identity.h site na ngwa ndị enyere na ọrụ ahụ. Ndị a files nwere ụfọdụ ọrụ inyeaka maka ihe aga-eme dị ka ịnweta nha nke asambodo, ịnweta igodo ọha ngwaọrụ na ịbịanye aka na aka.
- Tinye app_se_manager_secure_identity.h na app.c.
- Bubata gatt_configuration-attest.btconf enyere site na ihe enyere. Ebe nchekwa data GATT a na-akpọ akaebe echekwara nke gụnyere njirimara anọ nke a ga-eji nyochaa njirimara nke ngwaọrụ anyị. Ndị a gụnyere asambodo ngwaọrụ, asambodo ogbe, ịma aka na nzaghachi.
- A na-enye onye ahịa ahụ, nke a na-eji eme ka ngwaọrụ dị ka ọnụ ụzọ ámá, dịka ọrụ zuru oke ebe ọ bụ na ọ dị mgbagwoju anya iji wuo ya. N'ozuzu, ọrụ nke onye ahịa bụ nke a:
- Nyocha maka ngwaọrụ na-akpọsa ọrụ akaebe echekwara wee jikọọ na ha.
- Na-achọpụta ọrụ na njirimara nchekwa data GATT.
- Na-agụ ngwaọrụ na asambodo batch wee nyochaa yinye asambodo site na iji ụlọ ọrụ mmepụta ihe na akwụkwọ mgbọrọgwụ nke ọ chekwaara na flash.
- Na-eziga ihe ịma aka na-enweghị usoro na nkesa.
- Mgbalị iji nyochaa nzaghachi nye ihe ịma aka ahụ.
- Na-emechi njikọ ahụ ma ọ bụrụ na nkwenye ọ bụla ada ada.
- Wulite ma gbanye ọrụ nkesa na WSTK / redioboard nke sava gị.
- Bubata ọrụ onye ahịa site na nchekwa ndị ahịa na ihe enyere. Wulite ma gbasaa ọrụ onye ahịa n'aka onye ahịa gị WSTK/board redio.
- Pịa nrụpụta na onye ahịa WSTK wee mepee njikwa njikwa. Onye ahịa na-amalite nyocha maka ngwaọrụ na-akpọsa ọrụ njirimara anyị echekwara ma ọ ga-ejikọ mgbe ọ chọtara otu.
- Onye ahịa ahụ ga-egosiputa ụfọdụ ozi iji gosi na ọ chọtala ihe nkesa ahụ nwere ọrụ achọrọ yana ozi ọkwa gbasara nkwenye nke yinye asambodo.
- Ọ bụrụ na nkwenye ahụ gafere, onye ahịa ahụ ga-ewepụta nọmba enweghị usoro, nke a na-akpọ ịma aka, ma ziga ya na nkesa. Ihe nkesa ahụ ga-eji igodo ngwaọrụ echekwabara na mbinye aka azụ na onye ahịa, nke a na-akpọ nzaghachi ịma aka. Onye ahịa ahụ na-eji igodo ọha na asambodo ngwaọrụ enwetaburu iji nyochaa mbinye aka. Emere nke a iji gosi na ihe nkesa ahụ nwere igodo nzuzo nke o kwuru na ya nwere. Ọ bụrụ na akwadoro ihe ịma aka ahụ nke ọma, a ga-egosipụta ozi maka nke ahụ; ma ọ bụghị ya, njikọ ahụ na-emechi, ma gosipụta ozi na-akọwa ihe kpatara ya.
- Ugbu a zipu asambodo ezighi ezi iji gosi na nkwenye ahụ na-arụ ọrụ n'ezie. Ị nwere ike gbanwee user_read_request_cb() iji mebie ma data asambodo ma ọ bụ nzaghachi aka mgba.
Ihe mgbakwunye A – Ikike I/O na ụzọ njikọta 
Ihe mgbakwunye B – Ụdị nchekwa na ọkwa
Ọnọdụ nchekwa 1 bụ naanị ọnọdụ akwadoro maka ike Bluetooth dị ala na ngwugwu Silicon Labs. Ọkwa ndị a bụ:
- Ọkwa 1 enweghị nchekwa
- Ọkwa 2 enweghị nkwenye na njikọ nzuzo
- Ọkwa 3 akwadoro ijikọ na nzuzo
- Ọkwa 4 enwetara njikọ echekwabara na nzuzo siri ike ( mgbanwe igodo ECDH)
Akwụkwọ / akụrụngwa
![]() |
silabs 21Q2 nchekwa nchekwa ngwaọrụ BLE [pdf] Akwụkwọ ntuziaka onye ọrụ Ụlọ nyocha nchekwa ngwaọrụ 21Q2 echekwara, nchekwa nchekwa ngwaọrụ BLE, ụlọ nyocha nchekwa |