Silabs 21Q2 biztonságos BLE készülék Security Lab

BLE biztonsági labor kézikönyv

Ebben a laborban megtudhatja, hogyan tervezhet biztonságosabb BLE-eszközt. Kezdjük egy végévelview A verem egyes funkcióinak használatáról, és továbblépünk néhány általános tanácsra a biztonságosabb kapcsolatok technikáiról, és végül meglátjuk, hogyan használhatunk eszköztanúsítványokat BLE-n keresztül a periféria hitelességének azonosítására.

Kezdő lépések

A Bluetooth sampAz az alkalmazás, amelyre építeni fog, rendszerbetöltővel való használatra készült. Ha vadonatúj EFR32MG21B-vel dolgozik, annak nem lesz bootloaderje. Előre beépített rendszerbetöltőt a platform\bootloader\s mappában találhatample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a az SDK mappájában.

  1. Kezdje egy szoc-üres s-velample kb. Ez a sampA le alkalmazást sablonként használják, és jó kiindulópontot jelent minden BLE-alkalmazáshoz.
    1. Nyissa meg a Silicon Labs Project varázslót a Simplicity Studio alkalmazásból File menü -> új.
    2. Válassza ki a BRD4181C-t, és kattintson a „tovább” gombra.
    3. Kattintson a „Bluetooth (9)” jelölőnégyzetre a technológia típusa alatt.
    4. Jelölje ki a „Bluetooth – SoC Empty” elemet, majd kattintson a Tovább gombra.
    5. Kattintson a 'Befejezés' gombra.
  2. Most hozzáadhat néhány jellemzőt, hogy megtudja, hogyan kezelik eltérően a védett és nem védett jellemzőket.
    1. Nyissa meg a projekt slcp-jét file duplán kattintva a Project Explorer ablakban
    2. Jelölje ki a „SZOFTVERÖSSZETEVŐK” fület, és nyissa meg a GATT konfigurációs eszközt az alábbiak szerint: És használja az alább látható importáló eszközt a gatt_configuration.btconf importálásához file a szerver mappájából a megadott anyagokban.A GATT-adatbázisnak van egy egyéni szolgáltatása, az úgynevezett „Training”, amelynek egyes adatai védettek, mások pedig nem. Ez lehetővé teszi, hogy összehasonlítsa, mi történik egy védett és egy nem védett jellemző elérésekor. Ez egy nagyon alapszintű biztonsági eszköz gyors elkészítési módja.
  3. A soros portot használva nyomtatunk a Simplicity Studio konzoljára, hogy nyomon követhessük, mi történik az alkalmazásban. Ezeket az összetevőket a legegyszerűbben úgy találhatja meg, ha megkeresi őket a SZOFTVERÖSSZETEVŐK párbeszédpanelen, az alábbi módon:
      1. Telepítse az IO Stream USART összetevőt
      2. Telepítse az IO Stream Retarget STDIO összetevőt
      3. Telepítse a Standard I/O összetevőt
      4. Telepítse a Log összetevőt
      5. Nyissa meg a Board Control komponenst, és kapcsolja be a „Virtuális COM UART engedélyezése” lehetőséget.
      6. Kattintson a jobb gombbal az adapterre a „Debug adapters” panelen, és válassza a „Konzol indítása” lehetőséget. Válassza a 'Serial 1' fület, helyezze a kurzort a konzolablak szövegbeviteli mezőjébe, majd nyomja meg az enter billentyűt a konzol felébresztéséhez.
  4. Hozzon létre egy helyi változót az sl_bt_on_event() fájlban, amely az app.c fájlban található a kapcsolati leíró mentéséhez. A változónak statikusnak kell lennie, mivel ez a függvény minden alkalommal meghívódik, amikor egy eseményt a verem emel, és azt szeretnénk, hogy az érték állandó legyen. A csatlakozási fogantyút a későbbiekben használni fogjáka labor része.
  5. Illesszen be néhány app_log() utasítást az eseményekhez, hogy megtudja, mikor vagyunk csatlakozva, a biztonsági módokat stb
      1. Tartalmazza az app_log.h fejlécet file
      2. sl_bt_evt_connection_opened – nyomtassa ki a kötési fogantyút, és mentse el a csatlakozási fogantyút. Ha a kötési fogantyú 0xFF, akkor nincs kapcsolat a csatlakoztatott eszközök között. Módosítsa a meglévő eseménykezelőt úgy, hogy az valahogy így nézzen ki:
      3. sl_bt_evt_connection_parameters – biztonsági mód. Ez azért történik, hogy láthassa, mikor változik a biztonsági mód. Különbség van a biztonsági módok számozásában, ahol az 1-es biztonsági mód 0-val van felsorolva stb. Adja hozzá a következő eseménykezelőt az alkalmazásához:
      4. sl_bt_evt_connection_closed_id. Ez az eseménykezelő módosult a kapcsolatkezelő frissítéséhez. A 0xFF érték azt jelzi, hogy nincs aktív kapcsolat. Az app_log() paranccsal lehet kinyomtatni a kapcsolat megszakadásának okát, az állapotkódok listája itt található. Módosítsa a meglévő eseménykezelőt úgy, hogy az valahogy így nézzen ki:
  6. Építsd meg és vigye fel a projektet. Ezen a ponton futtatjuk az s-tample app, hogy lássa, hogyan viselkedik változtatás nélkül, a GATT adatbázison kívül.
  7. Csatlakozzon az EFRConnect mobilalkalmazáshoz az alábbiak szerint:
      1. Koppintson a „Bluetooth Böngésző” ikonra.
      2. Érintse meg a „Csatlakozás” ikont a „Training” nevű eszközön.
  8. Olvassa el a nem védett jellemzőt a következőképpen:
      1. Koppintson a „További információ” hivatkozásra az ismeretlen szolgáltatás alatt, amelynek UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
      2. Olvassa el az UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c nem védett karakterisztikát az „Olvasás” ikon megérintésével. Itt nincs meglepetés. Mivel a karakterisztikát semmilyen módon nem védik, a rendszer egyszerű szövegként küldi el.
  9. Most olvassa el az UUID d4261dbb-dcd0-daab-ec95-deec088d532b védett karakterisztikát. A mobiltelefonnak fel kell hívnia a párosításra és a csatlakozásra, az üzenet a mobil operációs rendszertől függően változhat. Miután elfogadta a párosítási kérelmet, a következő üzenetet kell küldenie a konzolon: Jegyzet: A kézikönyv végén található A függelék az I/O-képességek és a párosítási módszerek összefoglalását tartalmazza referenciaként. A B. függelék összefoglalja a Bluetooth biztonsági módokat.

A Security Manager konfigurációja

A biztonsági kezelő a Bluetooth-verem része, amely meghatározza, hogy mely biztonsági funkciókat használják. Ezek a szolgáltatások közé tartozik a MITM (man-in-the-middle) védelem, az LE Secure kapcsolatok (más néven ECDH), amelyek megerősítést igényelnek a kötéshez stb. A biztonsági menedzser kezeli az I/O-képességeket is, amelyek segítségével meghatározható, hogy melyik módszert használják a párosításhoz. /bonding (összefoglalóan lásd az A függeléket). Ebben a részben egy egyszerű beállítást láthat.

  1. Állítsa be az SM-et a kívánt konfigurációval. A labor hardvere megkönnyíti a jelszó megjelenítését a konzolon. A jelszó megadása a MITM-védelem engedélyezéséhez szükséges. Adja hozzá a következő kódot az sl_bt_system_boot_id eseménykezelőhöz. Ez lehetővé teszi a man-in-the-middle funkciót, és tájékoztatja a távoli eszközt, hogy képesek vagyunk jelkulcs megjelenítésére, de ez minden.
  2. A jelszó konzolon való megjelenítéséhez eseménykezelőre van szükség az alábbiak szerint:
  3. Állítsa be a kötési módot, a kötések maximális számát stb. A kezdéshez használja a következő kódot:Ezek a beállítások használhatók arra, hogy korlátozzák a támadók azon képességét, hogy kapcsolatot létesítsenek az Ön eszközével. Ha a terméknek csak egy felhasználónak kell lennie, akkor a maximális kötvények számát 1-re korlátozhatja. Ezeknek a hívásoknak megfelelő hely az sl_bt_system_boot_id eseménykezelőben. Jelenleg nem engedélyezzük a kötést, hogy a labor többi része gördülékenyebben menjen, de beállítunk egy kötési szabályzatot, amely csak egy kötést engedélyez. Referenciaként ezen API-k dokumentációja itt és itt található.
  4. Adjon hozzá eseménykezelőket az sl_bt_evt_sm_bonded_id és sl_bt_evt_sm_bonding_failed_id értékekhez. Ezeknek az eseményeknek a fő felhasználási területe jelenleg tájékoztató jellegű, de később a laborban további funkciókat fog adni.
  5. Építsd meg és villogj a céltáblára. Csatlakoztassa az EFRConnect-et, és olvassa el a védett karakterisztikát, mint korábban. Ezúttal egy jelszót fog látni a konzolon. Írja be ezt a jelszót mobiltelefonján, amikor a rendszer kéri.
  6. Próbálja ki a kötés megerősítését. Ez a funkció lehetővé teszi a felhasználó számára, hogy megkövetelje a kötési kérelmek megerősítését. Ezzel az alkalmazás szabályozhatja, hogy mely társeszközökhöz csatlakozik. Az egyik lehetőség az, hogy megkövetelik a felhasználótól, hogy nyomjon meg egy gombot, mielőtt engedélyezi a kötést.
    1. Nyissa meg a Bluetooth-beállításokat mobiltelefonján, és távolítsa el az EFR32 eszközhöz való kötést. A mobiltelefon-megvalósítások eltérőek, ezért előfordulhat, hogy erre a lépésre nincs szükség. Ha nem látja a „Tréning” eszközt a Bluetooth beállításai között, folytassa a következő lépéssel.
    2. A szoftverösszetevőkben telepítse az egyszerű gombkezelő egy példányát.
    3. Tartalmazza a fejlécet file sl_simple_button_instances.h az app.c-ben
    4. Adjon hozzá egy kezelőt az sl_bt_evt_sm_bonding_confirm_id eseményhez. Ennek az eseménykezelőnek az a fő feladata, hogy tájékoztassa a felhasználót, hogy egy távoli eszköz új kötést kér.
    5. Adjon hozzá egy visszahívási funkciót az egyszerű gombkezelő számára, amely jelet küld a Bluetooth-veremnek, jelezve, hogy egy gombot megnyomtak. Ez felülírja az alapértelmezett visszahívást, amely egyszerűen visszatér.
    6. Adjon hozzá egy külső jelesemény-kezelőt. Ez az esemény egy jel fogadására reagál, például az előző lépésben. A külső jelesemény a kötés megerősítésére szolgál.
    7. Módosítsa a hívást sl_bt_sm_configure értékre, hogy megkövetelje a kötés megerősítését, például
    8. Újraépítés és flash.
    9. Csatlakoztassa az EFRConnect-et, és olvassa el a védett karakterisztikát, mint korábban. Most a következő üzenet jelenik meg a konzolon:Nyomja meg a PB0 gombot a kötés megerősítéséhez. Most a konzol megjeleníti a mobiltelefonon a kötéshez beírandó jelszót. Adja meg a jelszót a kötési folyamat befejezéséhez.

 

Tipp: Használja az alapértelmezett kis- és nagybetűt az eseménykezelőben üzenet kinyomtatására, ha a verem olyan eseményt küld, amelyet nem kezeltek. Lehet, hogy a verem valami fontosat akar közölni.

Az alapokon túl

Ezen a ponton megtetted az előnyttaga veremünk által kínált biztonsági funkciók közül. Most pedig javítsuk a megvalósítást a rendelkezésünkre álló funkciók bölcs felhasználásával. A következő lépések nem kötelezőek és egymástól függetlenek, mindegyik után építhet és flashelhet, hogy lássa a viselkedést, vagy együtt próbálja ki őket.

  1. Sikertelen kötési kísérlet esetén szakítsa meg a kapcsolatot. Ez egy jó hely a fenyegetések észlelésére. Ha a távoli eszköz nem támogatja a titkosítást/hitelesítést, vagy egyszerűen nem rendelkezik a megfelelő kulcsokkal, akkor ez egy hacker lehet. Szóval, szakítsuk meg a kapcsolatot. Próbálja meg hívni az sl_bt_connection_close() függvényt az sl_bt_sm_bonding_failed_id eseményben. Az API itt van dokumentálva.Hibás jelszó megadásával tesztelheti ezt a funkciót.
  2. Csak bizonyos időpontokban engedélyezi a ragasztást. Ez korlátozza azt az időt, ameddig a támadónak kötést kell kialakítania, és lehetővé teszi a „csak kötött kapcsolatok engedélyezése” funkció használatát. A tervező kiválaszthatja, hogyan engedélyezze vagy tiltsa le a köthető módot. Itt bemutatás céljából engedélyezzük a „beállítási módot” a PB1-nél, és egy időzítővel letiltjuk azt 30 másodperc után.
    1. Telepítse az egyszerű gombos felület második példányát. Ez lehetővé teszi a PB1 használatát.
    2. Módosítsa a visszahívást, hogy más jelet küldjön a veremnek a kötés engedélyezéséhez/letiltásához. Az eredménynek valahogy így kell kinéznie:
    3. Módosítsa a külső jeleseménykezelőt úgy, hogy az kezelje ezt az új jelet. Az eredménynek ilyennek kell lennie:
    4. Adjon hozzá egy eseménykezelőt az sl_bt_evt_system_soft_timer_id eseményhez. Ez a beállítási mód letiltására szolgál.
    5. A következő kód használható a bondable mód engedélyezésére és az összes csatlakozás engedélyezésére, vagy a bondable mód letiltására, és csak a csatlakoztatott eszközökről való csatlakozás engedélyezésére:
    6. Adja hozzá a következő hívást az sl_bt_system_boot_id eseménykezelőben
    7. Építsd fel a projektet, és vidd fel az eszközre.
    8. Próbáljon meg csatlakozni az eszközhöz az EFRConnect segítségével. A kapcsolatnak sikertelennek kell lennie.
    9. Most próbálja meg megnyomni a PB1 gombot, mielőtt csatlakozna az EFRConnecthez. Ezúttal a kapcsolat sikeres lesz. 30 másodperc elteltével megjelenik egy üzenet a konzolon, amely jelzi, hogy az eszköz kilép a beállítási módból. Ez azt jelenti, hogy a köthető mód most le van tiltva.
  3. Növelje a biztonságot a kapcsolat kialakítása során. Mivel a biztonság nem kötelező, a lehető leghamarabb kérjünk titkosított kapcsolatot ahelyett, hogy a GATT jellemzőire hagyatkoznánk. Az API itt van dokumentálva. Ennek az API-nak egy jó helye az sl_bt_evt_connection_opened_id esemény. A kapcsolati leíró a kapcsolati változóban érhető el.

Biztonságos identitás

Most, hogy van egy biztonságosabb Bluetooth-eszközünk, javíthatjuk a hitelesítési lépést. Korábbi oktatólaboratóriumokban már láthatta, hogyan ellenőrizheti a tárolóeszközök biztonságos azonosságát a parancssor segítségével. Ebben a részben látni fogjuk, hogyan tudja egy BLE-eszköz ellenőrizni egy másik BLE-eszköz azonosságát a tanúsítványlánc lekérésével és egy kihívás elküldésével. Minden biztonságos tárolórész rendelkezik saját eszköztanúsítvánnyal és kötegelt tanúsítvánnyal. A gyári és a gyökértanúsítványok az ügyfélalkalmazásba vannak bekódolva, így lehetővé válik a teljes tanúsítványlánc ellenőrzése. A biztonságos személyazonossággal kapcsolatos további részletekért lásd az AN1268-at.

  1. Határozzon meg egy globális puffert az eszköz hitelesítési aláírásának tárolására az alábbiak szerint:
  2. Állítsa be a biztonsági kezelő konfigurációját a JustWorks párosítás használatára. Ez azért történik, hogy a kapcsolat titkosítva legyen. A gyakorlatban MITM védelmet kell használni, de a labor egyszerűsége érdekében a JustWorks alkalmazást fogjuk használni. Módosítsa az sl_bt_sm_configure hívást a következőre:Írja megjegyzésbe a setup_mode(true) hívását a system_boot eseménykezelőben.
  3. Nyissa meg a helpers.c fájlt a rendelkezésre álló anyagok közül, és másolja a tartalmat az app.c-be. Ezek a visszahívási funkciók olyan feladatokat hajtanak végre, mint a tanúsítványok szegmentálása, hogy azok BLE-n keresztül elküldhetők legyenek, a tanúsítványlánc ellenőrzése és a kihívás generálása/ellenőrzése.
  4. Meg kell határozni a maximális átviteli egység (MTU) méretét, hogy a tanúsítványok szegmentálhatók és újra összeállíthatók legyenek. Határozzon meg egy globális változót az MTU mentéséhez, az alábbi módon:Ezután adjon hozzá egy eseménykezelőt a GATT MTU kicserélt eseményhez az alábbiak szerint:
  5. Három felhasználói adatjellemző olvasható le. Ezeket a jellemzőket az eszköztanúsítvány, a kötegtanúsítvány és a kihívás közlésére használják. A visszahívási függvény kezeli ezeket a felhasználói olvasási kéréseket. Adjon hozzá egy kezelőt a függvény meghívásához az alábbiak szerint:A visszahívás a 2. lépéstől az MTU-t használja a tanúsítványok szegmentálására és szükség szerinti elküldésére. Kezeli az aláírt kihívás elküldését is.
  6. A kliens kihívást küld, egy véletlen számot, amelyet a szerver aláír, a GATT jellemzőinek egyikének beírásával. Emiatt az alkalmazásnak rendelkeznie kell egy kezelővel a felhasználói írási kérelem eseményéhez az alábbiak szerint:
  7. Biztonságos identitástámogatás hozzáadása files a projekthez:
    1. app_se_manager_macro.h, app_se_manager_secure_identity.c és app_se_secure_identity.h a projekthez biztosított anyagokból. Ezek files tartalmaznak néhány segédfunkciót olyan feladatokhoz, mint például a tanúsítvány méretének megállapítása, az eszköz nyilvános kulcsának lekérése és a kihívás aláírása.
    2. Szerelje fel az app_se_manager_secure_identity.h fájlt az app.c fájlba.
  8. Importálja a biztosított gatt_configuration-attest.btconf fájlt a megadott anyagokból. Ezt a GATT-adatbázist biztonságos tanúsításnak nevezik, amely négy olyan jellemzőt tartalmaz, amelyek segítségével ellenőrizzük eszközünk azonosságát. Ide tartozik az eszköztanúsítvány, a kötegelt tanúsítvány, a kihívás és a válasz.
  9. A kliens, amelyet egy eszköz, például átjáró szimulálására használnak, teljes projektként biztosítják, mivel bonyolultabb a felépítése. Általában az ügyfél működése a következő:
    1. Megkeresi a biztonságos tanúsítási szolgáltatást hirdető eszközöket, és csatlakozik hozzájuk.
    2. Felfedezi a GATT adatbázis szolgáltatásait és jellemzőit.
    3. Beolvassa az eszköz- és kötegtanúsítványokat, és ellenőrzi a tanúsítványláncot a flashben tárolt gyári és gyökértanúsítvány segítségével.
    4. Véletlenszerű kihívást küld a szervernek.
    5. Megpróbálja ellenőrizni a kihívásra adott választ.
    6. Lezárja a kapcsolatot, ha valamelyik ellenőrzés sikertelen.
  10. Építsd fel és frissítsd fel a szerverprojektet a szervereden WSTK /radioboard.
  11. Importálja az ügyfélprojektet az ügyfélmappából a biztosított anyagokban. Építse fel és frissítse az ügyfélprojektet az ügyfél WSTK-ra/rádiótáblára.
  12. Nyomja meg a reset gombot az ügyfél WSTK-n, és nyissa meg a soros konzolt. Az ügyfél elkezdi keresni a biztonságos identitásszolgáltatásunkat hirdető eszközöket, és csatlakozik, ha talál ilyet.
  13. A kliens megjelenít néhány üzenetet, jelezve, hogy megtalálta a kívánt szolgáltatást nyújtó kiszolgálót, valamint állapotüzeneteket a tanúsítványlánc ellenőrzéséről.
  14. Ha az ellenőrzés sikeres, a kliens véletlenszerű számot generál, amelyet kihívásnak neveznek, és elküldi a szervernek. A szerver aláírja a kihívást a biztonságosan tárolt privát eszközkulcsával, majd az aláírást visszaküldi a kliensnek, ezt hívják kihívás válasznak. Az ügyfél ezután a korábban kapott eszköztanúsítvány nyilvános kulcsát használja az aláírás ellenőrzésére. Ez annak igazolására szolgál, hogy a szerver valóban rendelkezik-e azzal a privát kulccsal, amellyel azt állította. Ha a kihívást megfelelően ellenőrizték, megjelenik egy erre vonatkozó üzenet; ellenkező esetben a kapcsolat megszakad, és megjelenik egy üzenet, amely elmagyarázza, hogy miért.
  15. Most küldjön egy érvénytelen tanúsítványt annak megerősítésére, hogy az ellenőrzés valóban működik. Módosíthatja a user_read_request_cb() paramétert, hogy megsértse a tanúsítvány adatait vagy a kihívásra adott választ.

A. függelék – I/O képességek és párosítási módszerek
B. függelék – Biztonsági módok és szintek

Az 1. biztonsági mód az egyetlen mód, amelyet a Bluetooth Low Energy támogatja a Silicon Labs kötegében. A szintek a következők:

  • 1. szint nincs biztonság
  • 2. szintű hitelesítés nélküli párosítás titkosítással
  • 3. szintű hitelesített párosítás titkosítással
  • 4. szintű hitelesített biztonságos kapcsolatok erős titkosítással (ECDH kulcscsere)

 

Dokumentumok / Források

Silabs 21Q2 biztonságos BLE készülék Security Lab [pdf] Felhasználói kézikönyv
21Q2 biztonságos BLE eszköz Security Lab, biztonságos BLE eszköz Security Lab, Security Lab

Hivatkozások

Hagyj megjegyzést

E-mail címét nem tesszük közzé. A kötelező mezők meg vannak jelölve *