Silabs 21Q2 suojattu BLE laite Turvalaboratorio
BLE-turvalaboratorion käsikirja
Tässä laboratoriossa näet, kuinka voit suunnitella turvallisemman BLE-laitteen. Aloitamme lopustaview kuinka käyttää joitakin pinoominaisuuksia ja siirtyä yleisiin neuvoihin turvallisempien yhteyksien tekniikoista. Lopuksi katsomme, kuinka laitevarmenteita käytetään BLE:n kautta oheislaitteen tunnistamiseksi aidoksi.
Aloitus
Bluetooth sampSovellus, johon rakennat, on tarkoitettu käytettäväksi käynnistyslataimen kanssa. Jos työskentelet upouuden EFR32MG21B:n kanssa, siinä ei ole käynnistyslatainta. Löydät valmiiksi rakennetun käynnistyslataimen alustasta\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a SDK-kansiosi.
- Aloita soc-tyhjällä s:lläample sovellus. Tämä sample-sovellusta käytetään mallina ja se on hyvä lähtökohta mille tahansa BLE-sovellukselle.
- Avaa Silicon Labs Project Wizard Simplicity Studiosta File valikko -> uusi.
- Valitse BRD4181C ja napsauta 'seuraava'-painiketta.
- Napsauta "Bluetooth (9)" -valintaruutua tekniikkatyypin alla.
- Korosta "Bluetooth – SoC Empty" ja napsauta sitten Seuraava.
- Napsauta Valmis-painiketta.
- Nyt voit lisätä joitakin ominaisuuksia nähdäksesi kuinka suojattuja ja suojaamattomia ominaisuuksia käsitellään eri tavalla.
- Avaa projektin slcp file kaksoisnapsauttamalla sitä Project Explorer -ikkunassa
- Korosta OHJELMISTOKOMPONENTIT-välilehti ja avaa GATT-määritystyökalu alla olevan kuvan mukaisesti:
Käytä alla näkyvää tuontityökalua tuodaksesi gatt_configuration.btconf file palvelinkansiosta toimitetuissa materiaaleissa.
GATT-tietokannassa on mukautettu palvelu nimeltä "Training", jossa osa tiedoista on suojattu ja osa ei. Tämän avulla voit verrata, mitä tapahtuu, kun yrität käyttää suojattua ominaisuutta ja suojaamatonta ominaisuutta. Tämä on nopea tapa tehdä laite, jolla on erittäin perusturvallisuus.
- Käytämme sarjaporttia tulostamiseen Simplicity Studion konsoliin seurataksemme, mitä sovelluksessa tapahtuu. Helpoin tapa löytää nämä komponentit on etsiä niitä OHJELMISTON KOMPONENTIT -valintaikkunasta kuvan mukaisesti:
-
- Asenna IO Stream USART -komponentti
- Asenna IO Stream Retarget STDIO -komponentti
- Asenna vakio-I/O-komponentti
- Asenna lokikomponentti
- Avaa Board Control -komponentti ja ota käyttöön "Enable Virtual COM UART"
- Napsauta sovitinta hiiren kakkospainikkeella "Debug adapters" -paneelissa ja valitse "Launch Console". Valitse Sarja 1 -välilehti ja aseta kohdistin konsoliikkunan tekstinsyöttökenttään ja paina Enter herättääksesi konsolin.
-
- Luo paikallinen muuttuja sl_bt_on_event(), joka löytyy tiedostosta app.c, yhteyskahvan tallentamista varten. Muuttujan on oltava staattinen, koska tätä funktiota kutsutaan aina, kun pino nostaa tapahtuman ja haluamme arvon pysyvän pysyvänä. Kytkentäkahvaa käytetään myöhemmin
laboratorion osa.
- Lisää joitakin app_log()-käskyjä tapahtumia varten nähdäksesi milloin olemme yhteydessä, suojaustilat jne
-
- Sisällytä app_log.h-otsikko file
- sl_bt_evt_connection_opened – tulosta liitoskahva ja tallenna yhteyskahva. Jos sidoskahva on 0xFF, liitettyjen laitteiden välillä ei ole yhteyttä. Muokkaa olemassa olevaa tapahtumakäsittelijää niin, että se näyttää suunnilleen tältä:
- sl_bt_evt_connection_parameters – suojaustila. Tämä tehdään, jotta voit nähdä, milloin suojaustila vaihtuu. Suojaustilojen numeroinnissa on eroja, kun suojaustila 1 on lueteltu arvolla 0 jne. . Lisää seuraava tapahtumakäsittelijä hakemukseesi:
- sl_bt_evt_connection_closed_id. Tätä tapahtumakäsittelijää on muokattu päivittämään yhteyskahva. Arvoa 0xFF käytetään osoittamaan, että aktiivista yhteyttä ei ole. App_log()-komennolla tulostetaan syy yhteyden katkeamiseen, tilakoodien luettelo on tässä. Muokkaa olemassa olevaa tapahtumakäsittelijää niin, että se näyttää suunnilleen tältä:
- Sisällytä app_log.h-otsikko file
-
- Rakenna ja esitä projekti. Tässä vaiheessa ajamme sample app nähdäksesi kuinka se toimii ilman muutoksia GATT-tietokannan lisäksi.
- Yhdistä EFRConnect-mobiilisovellukseen seuraavasti:
-
- Napauta "Bluetooth-selain" -kuvaketta.
- Napauta 'Yhdistä'-kuvaketta laitteessa nimeltä 'Training'.
-
- Lue suojaamaton ominaisuus seuraavasti:
-
- Napauta "Lisätietoja" -linkkiä tuntemattoman palvelun alla, jonka UUID on a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- Lue suojaamaton ominaisuus, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c, napauttamalla Read-kuvaketta. Ei yllätyksiä täällä. Koska ominaisuutta ei ole suojattu millään tavalla, se lähetetään selkeänä tekstinä.
-
- Lue nyt suojattu ominaisuus, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Matkapuhelimesi pitäisi kehottaa sinua muodostamaan pariliitos ja muodostamaan yhteyden. Viesti voi vaihdella mobiilikäyttöjärjestelmän mukaan. Kun olet hyväksynyt pariliitospyynnön, sinun pitäisi saada konsoliin seuraava viesti:
Huom: Tämän oppaan lopussa olevassa liitteessä A on yhteenveto I/O-ominaisuuksista ja pariliitosmenetelmistä. Liite B esittää yhteenvedon Bluetooth-suojaustiloista.
Security Managerin määritykset
Tietoturvahallinta on osa Bluetooth-pinoa, joka määrittää, mitä suojausominaisuuksia käytetään. Näitä ominaisuuksia ovat muun muassa man-in-the-middle (MITM) -suojaus, LE Secure -yhteydet (alias ECDH), jotka vaativat liittämisen vahvistuksen, jne. Tietoturvahallinta hoitaa myös I/O-ominaisuudet, joita käytetään määrittämään, mitä menetelmää pariliitoksen muodostamiseen käytetään /bonding (katso yhteenveto liitteestä A). Tässä osiossa näet yksinkertaisen asennuksen.
- Asenna SM halutulla kokoonpanolla. Tämän laboratorion laitteiston avulla on helppo näyttää salasana konsolissa. Salasana on MITM-suojauksen ottaminen käyttöön. Lisää seuraava koodi sl_bt_system_boot_id-tapahtumakäsittelijääsi. Tämä mahdollistaa man-in-the-middle-toiminnon ja ilmoittaa etälaitteelle, että meillä on mahdollisuus näyttää salasana, mutta siinä kaikki.
- Pääsyavaimen näyttämiseksi konsolissa tarvitaan tapahtumakäsittelijä alla olevan kuvan mukaisesti:
- Aseta liimaustila, liimausten enimmäismäärä jne. Aloita käyttämällä seuraavaa koodia:
Näitä asetuksia voidaan käyttää rajoittamaan hyökkääjän kykyä muodostaa yhteyttä laitteeseesi. Jos tuotteessasi tarvitsee olla vain yksi käyttäjä, voit rajoittaa sitoumusten enimmäismäärän yhteen. Hyvä paikka lisätä nämä kutsut on sl_bt_system_boot_id tapahtumakäsittelijä. Emme ota kiinnitystä tällä hetkellä käyttöön, jotta muu laboratorio sujuisi sujuvammin, mutta asetamme liimauskäytännön sallimaan vain yhden sidoksen. Ohjeita näiden sovellusliittymien dokumentaatiosta löydät täältä ja täältä.
- Lisää tapahtumakäsittelijät kohteille sl_bt_evt_sm_bonded_id ja sl_bt_evt_sm_bonding_failed_id. Näiden tapahtumien pääasiallinen käyttötarkoitus on tällä hetkellä informatiivinen, mutta myöhemmin laboratoriossa lisäät toimintoja.
- Rakenna ja flash kohdetaululle. Yhdistä EFRConnectiin ja lue suojattu ominaisuus kuten ennen. Tällä kertaa konsolissa näkyy salasana. Anna tämä salasana matkapuhelimeesi pyydettäessä.
- Kokeile liimauksen vahvistusta. Tämä ominaisuus antaa käyttäjälle mahdollisuuden vaatia sidospyyntöjen vahvistamista. Näin sovellus voi hallita sitä, mihin vertaislaitteisiin se liitetään. Yksi mahdollisuus on vaatia käyttäjää painamaan nappia ennen sidoksen sallimista.
- Avaa matkapuhelimesi Bluetooth-asetukset ja poista sidos EFR32-laitteeseen. Matkapuhelintoteutukset vaihtelevat, joten tämä vaihe ei välttämättä ole tarpeen. Jos et näe Harjoittelulaitetta Bluetooth-asetuksissasi, siirry seuraavaan vaiheeseen.
- Asenna ohjelmistokomponentteihin yksi yksinkertaisen painikekäsittelijän esiintymä.
- Sisällytä otsikko file sl_simple_button_instances.h sovelluksessa app.c
- Lisää käsittelijä tapahtumalle sl_bt_evt_sm_bonding_confirm_id. Tämän tapahtumakäsittelijän päätehtävänä on ilmoittaa käyttäjälle, että etälaite pyytää uutta sidosta.
- Lisää takaisinsoittotoiminto yksinkertaiseen näppäinkäsittelijään, joka lähettää Bluetooth-pinoon signaalin, joka osoittaa, että painiketta on painettu. Tämä ohittaa oletussoiton, joka yksinkertaisesti palaa.
- Lisää ulkoinen signaalitapahtumakäsittelijä. Tämä tapahtuma herätetään vastauksena signaalin vastaanottamiseen, kuten edellisessä vaiheessa. Ulkoista signaalitapahtumaa käytetään liitoksen vahvistamiseen.
- Muuta kutsu sl_bt_sm_configure vaatiaksesi sidosvahvistuksen, kuten
- Rakenna uudelleen ja flash.
- Yhdistä EFRConnectiin ja lue suojattu ominaisuus kuten ennen. Nyt näet konsolissa seuraavan viestin:
Paina PB0 vahvistaaksesi liitoksen. Nyt konsoli näyttää salasanan, joka on syötettävä matkapuhelimeen liittämistä varten. Viimeistele liitosprosessi antamalla salasana.
Kärki: Käytä tapahtumakäsittelijän oletuskirjausta tulostaaksesi viestin, kun pino lähettää tapahtuman, jota ei käsitellä. Pino saattaa yrittää kertoa sinulle jotain tärkeää.
Beyond the Basics
Tässä vaiheessa olet ottanut edistystätage pinomme tarjoamista suojausominaisuuksista. Parannetaan nyt toteutusta käyttämällä käytettävissämme olevia ominaisuuksia viisaasti. Seuraavat vaiheet ovat valinnaisia ja toisistaan riippumattomia. Voit rakentaa ja vilkkua jokaisen jälkeen nähdäksesi toiminnan tai kokeilla niitä kaikkia yhdessä.
- Katkaise yhteys epäonnistuneiden sidosyritysten yhteydessä. Tämä on hyvä paikka havaita uhkia. Jos etälaite ei tue salausta/todennusta tai sillä ei vain ole oikeita avaimia, se voi olla hakkeri. Joten katkaistaan yhteys. Yritä lisätä kutsu sl_bt_connection_close() -tapahtumaan sl_bt_sm_bonding_failed_id. API on dokumentoitu täällä.
Voit testata tätä ominaisuutta antamalla väärän salasanan.
- Liittäminen sallitaan vain tiettyinä aikoina. Tämä rajoittaa aikaa, jonka hyökkääjän on muodostettava sidos, ja mahdollistaa "salli vain yhdistetyt yhteydet" -ominaisuuden käytön. Suunnittelija voi valita, miten liimaustila otetaan käyttöön tai poistetaan käytöstä. Esittelyä varten otamme käyttöön "asetustilan" PB1:llä ja poistamme sen käytöstä ajastimella 30 sekunnin kuluttua.
- Asenna yksinkertaisen painikkeen käyttöliittymän toinen esiintymä. Tämä mahdollistaa PB1:n käytön.
- Muokkaa takaisinkutsua lähettääksesi eri signaalin pinoon ottaaksesi liitoksen käyttöön tai poistaaksesi sen käytöstä. Tuloksen pitäisi näyttää suunnilleen tältä:
- Muokkaa ulkoisen signaalin tapahtumakäsittelijää niin, että se käsittelee tämän uuden signaalin. Tuloksen pitäisi olla tällainen:
- Lisää tapahtumakäsittelijä sl_bt_evt_system_soft_timer_id-tapahtumalle. Tätä käytetään asetustilan poistamiseen käytöstä.
- Seuraavaa koodia voidaan käyttää kytkettävän tilan käyttöön ja sallimaan kaikki yhteydet tai poistamaan sidostila käytöstä ja sallimaan yhteydet vain sidottuista laitteista:
- Lisää seuraava kutsu sl_bt_system_boot_id-tapahtumakäsittelijään
- Rakenna projekti ja flash se laitteeseen.
- Yritä muodostaa yhteys laitteeseen EFRConnectilla. Yhteyden pitäisi epäonnistua.
- Yritä nyt painaa PB1 ennen yhteyden muodostamista EFRConnectiin. Tällä kertaa yhteys onnistuu. 30 sekunnin kuluttua näet konsolissa viestin, joka ilmoittaa, että laite on poistumassa asetustilasta. Tämä tarkoittaa, että liimaustila on nyt poistettu käytöstä.
- Lisää turvallisuutta yhteyden muodostamisessa. Koska suojaus on valinnainen, meidän tulisi pyytää salattua yhteyttä mahdollisimman pian sen sijaan, että luottaisimme GATT-ominaisuuksiin. API on dokumentoitu täällä. Hyvä paikka kutsua tätä API:ta on tapahtumassa sl_bt_evt_connection_opened_id. Yhteyskahva on käytettävissä yhteysmuuttujassa.
Turvallinen identiteetti
Nyt kun meillä on turvallisempi Bluetooth-laite, voimme parantaa todennusvaihetta. Olet jo nähnyt, kuinka holvin laitteiden suojattu identiteetti voidaan varmistaa komentorivillä aiemmissa koulutuslaboratorioissa. Tässä osiossa näemme, kuinka yksi BLE-laite voi varmistaa toisen BLE-laitteen identiteetin pyytämällä sen varmenneketjua ja lähettämällä haasteen. Kaikilla suojatuilla holvin osilla on oma laitevarmenne ja erävarmenne. Tehdas- ja juurivarmenteet on koodattu asiakassovellukseen, jotta koko varmenneketju voidaan tarkistaa. Katso AN1268 saadaksesi lisätietoja suojatusta henkilöllisyydestä.
- Määritä globaali puskuri laitteen todistusallekirjoituksen tallentamista varten seuraavasti:
- Aseta suojaushallinnan kokoonpano käyttämään JustWorks-pariliitosta. Tämä tehdään niin, että yhteys on salattu. Käytännössä pitäisi käyttää MITM-suojausta, mutta laboratorion yksinkertaistamiseksi käytämme JustWorksia. Muuta kutsu sl_bt_sm_configure takaisin seuraavaksi:
Kommentoi myös kutsu setup_mode(true) system_boot-tapahtumakäsittelijään.
- Avaa helpers.c toimitetuista materiaaleista ja kopioi sisältö app.c:hen. Nämä takaisinsoittotoiminnot suorittavat tehtäviä, kuten sertifikaattien segmentointia siten, että ne voidaan lähettää BLE:n kautta, varmenneketjun varmentamista ja haasteen luomista/varmennusta.
- On tarpeen määrittää suurin siirtoyksikön (MTU) koko, jotta varmenteet voidaan segmentoida ja koota uudelleen. Määritä globaali muuttuja MTU:n tallentamiseksi, kuten tässä näytetään:
Lisää sitten tapahtumakäsittelijä GATT MTU:n vaihdetulle tapahtumalle alla kuvatulla tavalla:
- Käyttäjätiedoissa on kolme luettavissa olevaa ominaisuutta. Näitä ominaisuuksia käytetään laitevarmenteen, erävarmenteen ja haasteen viestimiseen. Takaisinsoittotoimintoa käytetään käsittelemään näitä käyttäjien lukupyyntöjä. Lisää käsittelijä kutsumaan tätä toimintoa alla olevan kuvan mukaisesti:
Takaisinsoitto käyttää MTU:ta vaiheesta #2 segmentointiin ja varmenteiden lähettämiseen tarpeen mukaan. Se hoitaa myös allekirjoitetun haasteen lähettämisen.
- Asiakas lähettää haasteen, satunnaisluvun, jonka palvelin allekirjoittaa, kirjoittamalla yhden GATT-ominaisuuksista. Tästä syystä sovelluksella on oltava käsittelijä käyttäjän kirjoituspyyntötapahtumalle alla:
- Lisää suojattu identiteettituki files projektiin:
- app_se_manager_macro.h, app_se_manager_secure_identity.c ja app_se_secure_identity.h toimitetuista materiaaleista projektiin. Nämä files sisältää joitain aputoimintoja tehtäviin, kuten varmenteen koon selvittämiseen, laitteen julkisen avaimen hankkimiseen ja haasteen allekirjoittamiseen.
- Sisällytä app_se_manager_secure_identity.h tiedostoon app.c.
- Tuo mukana toimitettu gatt_configuration-attest.btconf toimitetuista materiaaleista. Tätä GATT-tietokantaa kutsutaan suojatuksi todistukseksi, joka sisältää neljä ominaisuutta, joita käytetään laitteemme identiteetin tarkistamiseen. Näitä ovat laitesertifikaatti, erävarmenne, haaste ja vastaus.
- Asiakas, jota käytetään simuloimaan laitetta, kuten yhdyskäytävää, tarjotaan täydellisenä projektina, koska se on monimutkaisempi rakentaa. Yleisesti ottaen asiakkaan toiminta on seuraava:
- Etsii suojattua todistuspalvelua mainostavia laitteita ja muodostaa niihin yhteyden.
- Tutustu GATT-tietokantapalveluihin ja -ominaisuuksiin.
- Lukee laite- ja erävarmenteita ja tarkistaa varmenneketjun käyttämällä tehdas- ja juurivarmennetta, jotka se on tallentanut flashiin.
- Lähettää satunnaisen haasteen palvelimelle.
- Yrittää varmistaa vastauksen haasteeseen.
- Sulkee yhteyden, jos jompikumpi vahvistus epäonnistuu.
- Rakenna ja päivitä palvelinprojekti palvelimellesi WSTK/radioboard.
- Tuo asiakasprojekti toimitettujen materiaalien asiakaskansiosta. Rakenna ja flash-asiakasprojekti asiakkaan WSTK:lle/radioboardille.
- Paina asiakas WSTK:n nollauspainiketta ja avaa sarjakonsoli. Asiakas alkaa etsiä turvallista identiteettipalveluamme mainostavia laitteita ja muodostaa yhteyden, kun löytää sellaisen.
- Asiakas näyttää joitakin viestejä, jotka osoittavat, että se on löytänyt palvelimen, jolla on haluttu palvelu, ja tilaviestit varmenneketjun varmentamisesta.
- Jos vahvistus läpäisee, asiakas luo satunnaisluvun, jota kutsutaan haasteeksi, ja lähettää sen palvelimelle. Palvelin allekirjoittaa haasteen turvallisesti säilytetyllä yksityisellä laiteavaimellaan ja allekirjoituksella takaisin asiakkaalle, tätä kutsutaan haastevastaukseksi. Tämän jälkeen asiakas käyttää julkista avainta aiemmin vastaanotetussa laitevarmenteessa allekirjoituksen tarkistamiseen. Tämä tehdään sen varmistamiseksi, että palvelimella todella on yksityinen avain, jonka se väitti omistavansa. Jos haaste on varmistettu oikein, näyttöön tulee viesti. muussa tapauksessa yhteys katkeaa ja näyttöön tulee viesti, joka selittää miksi.
- Lähetä nyt virheellinen varmenne vahvistaaksesi, että vahvistus todella toimii. Voit muokata user_read_request_cb():tä korruptoimaan joko varmennetiedot tai haastevastauksen.
Liite A – I/O-ominaisuudet ja pariliitosmenetelmät 
Liite B – Suojaustilat ja -tasot
Suojaustila 1 on ainoa Silicon Labsin pinon Bluetooth Low Energy tukema tila. Tasot ovat seuraavat:
- Taso 1 ei turvallisuutta
- Tason 2 todentamaton pariliitos salauksella
- Tason 3 todennettu pariliitos salauksella
- Tason 4 todetut suojatut yhteydet vahvalla salauksella (ECDH-avaimen vaihto)
Asiakirjat / Resurssit
![]() |
Silabs 21Q2 suojattu BLE laite Turvalaboratorio [pdfKäyttöopas 21Q2 suojattu BLE-laite Security Lab, suojattu BLE-laite Security Lab, Security Lab |