silabs 21Q2 öruggt BLE tæki Security Lab
Handbók BLE Security Lab
Í þessari rannsóknarstofu muntu sjá hvernig á að hanna öruggara BLE tæki. Við byrjum á yfirview hvernig á að nota suma staflaeiginleikana og fara yfir í almenn ráð um tækni til að tryggja öruggari tengingar og að lokum munum við sjá hvernig á að nota tækisvottorð yfir BLE til að bera kennsl á jaðartæki sem ósvikið.
Að byrja
Bluetooth sampforritið sem þú munt byggja á er ætlað til notkunar með ræsiforriti. Ef þú ert að vinna með glænýjan EFR32MG21B mun hann ekki hafa ræsiforrit. Þú getur fundið forsmíðaðan ræsiforrit í pallinum\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a möppu SDK þinnar.
- Byrjaðu með soc-tómum sample app. Þetta sample appið er notað sem sniðmát og er góður upphafspunktur fyrir hvaða BLE forrit sem er.
- Opnaðu Silicon Labs Project Wizard frá Simplicity Studio File valmynd -> nýtt.
- Veldu BRD4181C og smelltu á 'næsta' hnappinn.
- Smelltu á gátreitinn 'Bluetooth (9)' undir tæknigerð.
- Auðkenndu 'Bluetooth – SoC Empty' og smelltu síðan á næst.
- Smelltu á 'Ljúka' hnappinn.
- Nú er hægt að bæta við nokkrum eiginleikum til að sjá hvernig verndaðir og óvarðir eiginleikar eru meðhöndlaðir á mismunandi hátt.
- Opnaðu slcp verkefnisins file með því að tvísmella á það í Project Explorer glugganum
- Auðkenndu flipann 'HUGBÚNAÐARÍHLUTI' og opnaðu GATT stillingartólið eins og sýnt er hér að neðan:
Og notaðu innflutningstólið sem sýnt er hér að neðan til að flytja inn gatt_configuration.btconf file úr netþjónamöppunni í meðfylgjandi efni.
GATT gagnagrunnurinn er með sérsniðna þjónustu, sem kallast „þjálfun“, með sumum gögnum sem eru vernduð og önnur ekki. Þetta gerir þér kleift að bera saman það sem gerist þegar reynt er að fá aðgang að vernduðum eiginleikum á móti óvarnum. Þetta er fljótleg leið til að búa til tæki með mjög grunnöryggi.
- Við munum nota raðtengi til að prenta á stjórnborðið í Simplicity Studio til að fylgjast með því sem er að gerast í forritinu. Auðveldasta leiðin til að finna þessa íhluti er með því að leita að þeim í HUGBÚNAÐARÍHLUTI glugganum eins og sýnt er:
-
- Settu upp IO Stream USART íhlutinn
- Settu upp IO Stream Retarget STDIO íhlutinn
- Settu upp staðlaða I/O íhlutinn
- Settu upp Log íhlutinn
- Opnaðu Board Control hluti og kveiktu á 'Enable Virtual COM UART'
- Hægrismelltu á millistykkið í „Kembiforrit“ spjaldið og veldu „Start stjórnborð“. Veldu 'Serial 1' flipann og settu bendilinn í textareitinn í stjórnborðsglugganum og ýttu á enter til að vekja stjórnborðið.
-
- Búðu til staðbundna breytu í sl_bt_on_event(), sem finnast í app.c, til að vista tengingarhandfangið. Breytan verður að vera kyrrstæð þar sem þessi aðgerð er kölluð í hvert sinn sem atburður er hækkaður af staflanum og við viljum að gildið sé viðvarandi. Tengihandfangið verður notað síðar
hluta rannsóknarstofunnar.
- Settu inn nokkrar app_log() staðhæfingar fyrir atburði til að sjá hvenær við erum tengd, öryggisstillingar osfrv
-
- Láttu app_log.h hausinn fylgja með file
- sl_bt_evt_connection_opened – prentaðu skuldabréfahandfangið og vistaðu tengihandfangið. Ef tengihandfangið er 0xFF er engin tenging á milli tengdra tækjanna. Breyttu núverandi atburðastjórnun þannig að hann líti eitthvað svona út:
- sl_bt_evt_connection_parameters – öryggisstilling. Þetta er gert til þess að sjá hvenær öryggisstillingin breytist. Það er munur á tölusetningu öryggisstillinga þar sem öryggishamur 1, er talinn upp með gildinu 0 o.s.frv. Bættu eftirfarandi atburðastjórnun við umsókn þína:
- sl_bt_evt_connection_closed_id. Þessum atburðastjórnun er breytt til að uppfæra tengingarhandfangið. Gildið 0xFF er notað til að gefa til kynna að engin virk tenging sé til staðar. App_log() skipunin er notuð til að prenta út ástæðu þess að tengingin var lokuð, listi yfir stöðukóða er hér. Breyttu núverandi atburðastjórnun þannig að hann líti eitthvað svona út:
- Láttu app_log.h hausinn fylgja með file
-
- Byggja og flakka verkefnið. Á þessum tímapunkti munum við keyra sample app til að sjá hvernig það hegðar sér án nokkurra breytinga, fyrir utan GATT gagnagrunninn.
- Tengstu við EFRConnect farsímaforritið á eftirfarandi hátt:
-
- Pikkaðu á 'Bluetooth vafra' táknið.
- Pikkaðu á 'Connect' táknið á tækinu sem heitir 'Training'.
-
- Lestu óvarið einkenni sem hér segir:
-
- Ýttu á tengilinn 'Frekari upplýsingar' undir óþekktu þjónustunni með UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- Lestu óvarið einkenni, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c með því að banka á 'Lesa' táknið. Hér kemur ekkert á óvart. Þar sem einkennin eru ekki vernduð á nokkurn hátt verður hann sendur í texta.
-
- Lestu nú verndaða eiginleikann, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Farsíminn þinn ætti að biðja þig um að para og tengjast, skilaboðin geta verið breytileg eftir farsímastýrikerfinu þínu. Eftir að þú hefur samþykkt beiðnina um pörun ættirðu að senda skilaboð á stjórnborðinu sem hér segir:
Athugið: Viðauki A í lok þessarar handbókar hefur yfirlit yfir I/O getu og pörunaraðferðir til viðmiðunar. Viðauki B tekur saman öryggisstillingar Bluetooth.
Stillingar öryggisstjóra
Öryggisstjórinn er hluti af Bluetooth-staflanum sem ákvarðar hvaða öryggiseiginleikar eru notaðir. Þessir eiginleikar fela í sér man-in-the-middle (MITM) vernd, LE Secure tengingar (aka ECDH), krefjast staðfestingar fyrir tengingu osfrv. Öryggisstjórinn sér einnig um I/O getu sem er notaður til að ákvarða hvaða aðferð er notuð við pörun /binding (sjá viðauka A fyrir yfirlit). Í þessum hluta muntu sjá einfalda uppsetningu.
- Settu upp SM með viðeigandi stillingum. Vélbúnaðurinn fyrir þessa tilraunastofu gerir það auðvelt að birta lykilorð á stjórnborðinu. Innsláttur lykillykills er krafa til að virkja MITM vernd. Bættu eftirfarandi kóða við sl_bt_system_boot_id atburðastjórnunina þína. Þetta gerir manninn í miðjunni kleift og upplýsir ytra tækið um að við höfum getu til að birta lykilorð, en það er allt.
- Til að birta aðgangslykilinn á stjórnborðinu þarf viðburðastjórnun eins og sýnt er hér að neðan:
- Stilltu tengingarham, hámarksfjölda bindinga osfrv. Notaðu eftirfarandi kóða til að byrja:
Þessar stillingar er hægt að nota til að takmarka getu árásaraðila til að tengjast tækinu þínu. Ef varan þín þarf aðeins að hafa einn notanda, þá gætirðu takmarkað hámarksskuldbindingar við 1. Góður staður til að bæta við þessum símtölum er í sl_bt_system_boot_id atburðastjórnun. Við munum ekki virkja tengingu að svo stöddu til að láta restina af rannsóknarstofunni ganga snurðulausari en við setjum tengingarstefnu til að leyfa aðeins eina tengingu. Til viðmiðunar má finna skjölin fyrir þessi API hér og hér.
- Bættu við atburðastjórnun fyrir sl_bt_evt_sm_bonded_id og sl_bt_evt_sm_bonding_failed_id. Aðalnotkun þessara viðburða er upplýsandi eins og er en síðar í rannsóknarstofunni muntu bæta við virkni.
- Byggja og blikka að markborðinu. Tengstu við EFRConnect og lestu verndaða eiginleika eins og áður. Að þessu sinni muntu sjá lykilorð á stjórnborðinu. Sláðu inn þennan lykilorð á farsímanum þínum þegar beðið er um það.
- Prófaðu bindingar staðfestingu. Þessi eiginleiki gefur notandanum möguleika á að krefjast þess að tengingarbeiðnir séu staðfestar. Með því að gera það gefur forritinu stjórn á því hvaða jafningjatæki það tengist. Einn möguleiki er að krefjast þess að notandinn ýti á hnapp áður en hann leyfir tenginguna.
- Opnaðu Bluetooth stillingarnar í farsímanum þínum og fjarlægðu tenginguna við EFR32 tækið. Farsímaútfærslur eru mismunandi þannig að þetta skref gæti ekki verið nauðsynlegt. Ef þú sérð ekki 'þjálfunar' tækið í Bluetooth stillingunum þínum skaltu bara halda áfram í næsta skref.
- Í hugbúnaðarhlutum skaltu setja upp eitt tilvik af einföldum hnappastjórnun.
- Láttu hausinn fylgja með file sl_simple_button_instances.h í app.c
- Bættu við umsjónarmanni fyrir sl_bt_evt_sm_bonding_confirm_id atburðinn. Aðalstarf þessa atburðastjórnunar er að upplýsa notandann um að ytra tæki sé að biðja um nýtt skuldabréf.
- Bættu við svarhringingaraðgerð fyrir einfalda hnappastjórnunina til að senda merki til Bluetooth stafla sem gefur til kynna að ýtt hafi verið á hnapp. Þetta hnekkir sjálfgefnu svarhringingu sem einfaldlega skilar.
- Bættu við utanaðkomandi merkjaviðburðastjórnun. Þessi atburður er settur upp sem svar við móttöku merki, eins og í fyrra skrefi. Ytra merkjatilvikið verður notað til að staðfesta tengingu.
- Breyttu símtalinu í sl_bt_sm_configure til að krefjast staðfestingar á tengingu eins og
- Endurbyggja og blikka.
- Tengstu við EFRConnect og lestu verndaða eiginleika eins og áður. Nú muntu sjá skilaboð á stjórnborðinu sem hér segir:
Ýttu á PB0 til að staðfesta tenginguna. Nú mun stjórnborðið sýna lykilinn sem á að slá inn í farsímann til að tengja. Sláðu inn lykilorðið til að ljúka tengingarferlinu.
Ábending: Notaðu sjálfgefið tilvik í atburðastjórnuninni til að prenta út skilaboð þegar staflinn sendir atburð sem ekki er meðhöndluð. Staflan gæti verið að reyna að segja þér eitthvað mikilvægt.
Beyond the Basics
Á þessum tímapunkti hefur þú tekið forskottage af þeim öryggiseiginleikum sem staflan okkar hefur upp á að bjóða. Nú skulum við bæta útfærsluna með skynsamlegri notkun þeirra eiginleika sem við höfum til umráða. Eftirfarandi skref eru valfrjáls og óháð hvert öðru, þú getur smíðað og flassað eftir hvert og eitt til að sjá hegðunina eða prófa þau öll saman.
- Aftengdu við misheppnaðar tilraunir til skuldabréfa. Þetta er góður staður til að greina ógnir. Ef ytra tækið styður ekki dulkóðun/staðfestingu eða hefur bara ekki rétta lykla gæti það verið tölvuþrjótur. Svo skulum við rjúfa tenginguna. Prófaðu að bæta kalli við sl_bt_connection_close() í sl_bt_sm_bonding_failed_id atburðinum. API er skjalfest hér.
Þú getur prófað þennan eiginleika með því að slá inn rangan lykilorð.
- Leyfir aðeins tengingu á ákveðnum tímum. Þetta takmarkar þann tíma sem árásarmaður hefur til að mynda tengsl og gerir það mögulegt að nota eiginleikann „aðeins leyfa tengdar tengingar“. Hönnuður getur valið hvernig á að virkja eða slökkva á bindanlegum ham. Í sýnikennsluskyni hér munum við virkja „uppsetningarham“ með PB1 og nota tímamæli til að slökkva á honum eftir 30 sekúndur.
- Settu upp annað tilvik af einfalda hnappaviðmótinu. Þetta mun gera notkun PB1 kleift.
- Breyttu svarhringingunni til að senda annað merki til stafla til að virkja/slökkva á tengingu. Útkoman ætti að líta einhvern veginn svona út:
- Breyttu ytri merki atburðastjórnun þannig að hann höndli þetta nýja merki. Niðurstaðan ætti að vera svona:
- Bættu við atburðastjórnun fyrir sl_bt_evt_system_soft_timer_id atburðinn. Þetta verður notað til að slökkva á uppsetningarstillingu.
- Hægt er að nota eftirfarandi kóða til að virkja tengingarham og leyfa allar tengingar eða til að slökkva á tengingarham og leyfa aðeins tengingar frá tengdum tækjum:
- Bættu við eftirfarandi kalli í sl_bt_system_boot_id atburðastjórnun
- Byggðu verkefnið og flassaðu því í tækið.
- Prófaðu að tengjast tækinu með EFRConnect. Tengingin ætti að mistakast.
- Prófaðu nú að ýta á PB1 áður en þú tengist EFRConnect. Að þessu sinni mun tengingin ganga vel. Eftir 30 sekúndur muntu sjá skilaboð á stjórnborðinu sem gefa til kynna að tækið sé að hætta uppsetningarstillingu. Þetta þýðir að bindanleg stilling er nú óvirk.
- Auka öryggi við að mynda tengingu. Þar sem öryggi er valfrjálst ættum við að biðja um dulkóðaða tengingu eins fljótt og auðið er frekar en að treysta á GATT eiginleika. API er skjalfest hér. Góður staður til að kalla þetta API er í sl_bt_evt_connection_opened_id atburðinum. Tengihandfangið er fáanlegt í tengibreytunni.
Örugg auðkenni
Nú þegar við erum með öruggara Bluetooth tæki, skulum við bæta auðkenningarskrefið. Þú hefur þegar séð hvernig á að staðfesta örugg auðkenni hvelfingartækja með skipanalínunni í fyrri þjálfunarstofum. Í þessum hluta munum við sjá hvernig eitt BLE tæki getur staðfest auðkenni annars BLE tæki með því að biðja um vottorðakeðju þess og senda áskorun. Allir öruggir hvelfingarhlutar hafa sitt eigið tækisvottorð og lotuvottorð. Verksmiðju- og rótarvottorðin eru harðkóðuð inn í biðlaraforritið til að gera sannprófun á allri vottorðakeðjunni kleift. Sjá AN1268 fyrir frekari upplýsingar um örugg auðkenni.
- Skilgreindu alþjóðlegan biðminni til að geyma undirskrift tækjavottunar eins og hér að neðan:
- Stilltu stillingar öryggisstjóra til að nota JustWorks pörun. Þetta er gert þannig að tengingin sé dulkóðuð. Í reynd ætti að nota MITM vernd en til að halda rannsóknarstofunni einfaldri munum við nota JustWorks. Breyttu símtalinu í sl_bt_sm_configure aftur í eftirfarandi:
Gerðu líka athugasemd við kallið til setup_mode(true) í system_boot atburðastjórnuninni.
- Opnaðu helpers.c úr meðfylgjandi efni og afritaðu innihaldið í app.c. Þessar svarhringingaraðgerðir framkvæma verkefni eins og að skipta skírteinunum þannig að hægt sé að senda þau yfir BLE, sannreyna vottorðakeðjuna og búa til/staðfesta áskorunina.
- Nauðsynlegt er að ákvarða hámarksstærð flutningseininga (MTU) svo hægt sé að skipta skírteinum í sundur og setja saman aftur. Skilgreindu alþjóðlega breytu til að vista MTU eins og sýnt er hér:
Bættu síðan við atburðastjórnun fyrir GATT MTU skipti atburðinn eins og sýnt er hér að neðan:
- Það eru þrír eiginleikar notendagagna sem hægt er að lesa. Þessir eiginleikar eru notaðir til að miðla tækisvottorðinu, lotuvottorðinu og áskoruninni. Svarhringingaraðgerð er notuð til að meðhöndla þessar lesbeiðnir notenda. Bættu við stjórnanda til að kalla þessa aðgerð eins og sýnt er hér að neðan:
Svarhringingin notar MTU frá skrefi #2 til að hluta og senda skírteinin eftir þörfum. Það sér einnig um að senda undirritaða áskorunina.
- Viðskiptavinurinn sendir áskorun, handahófskennt númer sem skal undirritað af þjóninum, með því að skrifa eitt af GATT eiginleikum. Af þessum sökum þarf forritið að hafa meðhöndlun fyrir skrifbeiðni notenda eins og hér að neðan:
- Bættu við öruggum auðkenningarstuðningi files að verkefninu:
- app_se_manager_macro.h, app_se_manager_secure_identity.c og app_se_secure_identity.h frá uppgefnu efni í verkefnið. Þessar files innihalda nokkrar hjálparaðgerðir fyrir verkefni eins og að fá stærð vottorðsins, fá opinbera lykil tækisins og undirrita áskorun.
- Láttu app_se_manager_secure_identity.h fylgja með í app.c.
- Flyttu inn meðfylgjandi gatt_configuration-attest.btconf úr meðfylgjandi efni. Þessi GATT gagnagrunnur kallast örugg staðfesting sem inniheldur fjóra eiginleika sem verða notaðir til að staðfesta auðkenni tækisins okkar. Þar á meðal eru tækisvottorð, lotuvottorð, áskorun og svar.
- Viðskiptavinurinn, sem er notaður til að líkja eftir tæki eins og gátt, er veitt sem heilt verkefni þar sem það er flóknara að smíða. Almennt séð er rekstur viðskiptavinarins sem hér segir:
- Skannar eftir tækjum sem auglýsa örugga vottunarþjónustu og tengist þeim.
- Uppgötvaðu GATT gagnagrunnsþjónustu og eiginleika.
- Les tækið og lotuvottorð og staðfestir vottorðakeðjuna með því að nota verksmiðju- og rótarvottorð sem það hefur geymt í flash.
- Sendir handahófskennda áskorun til þjónsins.
- Tilraunir til að sannreyna viðbrögð við áskoruninni.
- Lokar tengingunni ef annaðhvort staðfesting mistekst.
- Byggja og fletta miðlaraverkefninu á netþjóninn þinn WSTK /radioboard.
- Flyttu inn viðskiptavinaverkefnið úr viðskiptavinamöppunni í meðfylgjandi efni. Búðu til og flassaðu viðskiptavinaverkefnið til viðskiptavinarins WSTK/radioboard.
- Ýttu á endurstilla á biðlara WSTK og opnaðu raðtölvuna. Viðskiptavinurinn byrjar að leita að tækjum sem auglýsa örugga auðkennisþjónustu okkar og mun tengjast þegar hann finnur slíkt.
- Viðskiptavinurinn mun birta nokkur skilaboð til að gefa til kynna að hann hafi fundið þjóninn með viðkomandi þjónustu og stöðuskilaboð um staðfestingu á vottorðakeðjunni.
- Ef staðfestingin stenst mun viðskiptavinurinn búa til handahófskennt númer, kallað áskorun, og senda það til netþjónsins. Þjónninn mun skrifa undir áskorunina með tryggilega geymdum einkatækislykli og undirskriftinni til baka til biðlarans, þetta er kallað áskorunarsvar. Viðskiptavinurinn notar síðan opinbera lykilinn í áður mótteknu tækisvottorðinu til að staðfesta undirskriftina. Þetta er gert til að staðfesta að þjónninn hafi raunverulega einkalykilinn sem hann sagðist hafa. Ef áskorunin er sannreynd á réttan hátt birtast skilaboð þess efnis; annars er tengingunni lokað og skilaboð birtast sem útskýrir hvers vegna.
- Sendu nú ógilt vottorð til að staðfesta að staðfestingin virki í raun. Þú getur breytt user_read_request_cb() til að skemma annað hvort vottorðsgögnin eða áskorunarsvarið.
Viðauki A – I/O hæfileikar og pörunaraðferðir 
Viðauki B – Öryggisstillingar og stig
Öryggisstilling 1 er eina stillingin sem er studd fyrir Bluetooth Low Energy í stafla Silicon Labs. Stigin eru sem hér segir:
- Stig 1 ekkert öryggi
- Stig 2 óstaðfest pörun með dulkóðun
- Stig 3 staðfest pörun með dulkóðun
- Stig 4 staðfestar öruggar tengingar með sterkri dulkóðun (ECDH lyklaskipti)
Skjöl / auðlindir
![]() |
silabs 21Q2 öruggt BLE tæki Security Lab [pdfNotendahandbók 21Q2 örugg BLE tækjaöryggisstofa, örugg BLE tækjaöryggisstofa, öryggisrannsóknarstofa |