silabs 21Q2 dyfais BLE diogel Lab Diogelwch

Llawlyfr Labordy Diogelwch BLE

Yn y labordy hwn, fe welwch sut i ddylunio dyfais BLE fwy diogel. Byddwn yn dechrau gyda gorview o sut i ddefnyddio rhai o nodweddion y stac a symud ymlaen i gyngor cyffredinol am dechnegau ar gyfer cysylltiadau mwy diogel ac yn olaf byddwn yn gweld sut i ddefnyddio tystysgrifau dyfais dros BLE i nodi ymylol fel dilys.

Cychwyn Arni

Mae'r Bluetooth sampBwriedir i'r cais y byddwch yn adeiladu arno gael ei ddefnyddio gyda chychwynnydd. Os ydych chi'n gweithio gydag EFR32MG21B newydd sbon, ni fydd ganddo gychwynnwr. Gallwch ddod o hyd i lwythwr cychwyn parod yn y platfform\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a ffolder eich SDK.

  1. Dechreuwch gyda soc-wag sample ap. Mae hyn yn sampdefnyddir le app fel templed ac mae'n fan cychwyn da ar gyfer unrhyw raglen BLE.
    1. Agorwch Dewin Prosiect Labs Silicon o'r Stiwdio Symlrwydd File menu -> newydd.
    2. Dewiswch y BRD4181C a chliciwch ar y botwm 'nesaf'.
    3. Cliciwch y blwch gwirio 'Bluetooth (9)' o dan y math o dechnoleg.
    4. Amlygwch 'Bluetooth – SoC Wag' yna cliciwch nesaf.
    5. Cliciwch ar y botwm 'Gorffen'.
  2. Nawr gallwch chi ychwanegu rhai nodweddion i weld sut mae nodweddion gwarchodedig a diamddiffyn yn cael eu trin yn wahanol.
    1. Agorwch slcp y prosiect file trwy ei glicio ddwywaith yn ffenestr Project Explorer
    2. Tynnwch sylw at y tab 'COMPONENTS MEDDALWEDD' ac agorwch yr offeryn ffurfweddu GATT fel y dangosir isod: A defnyddiwch yr offeryn mewnforio a ddangosir isod i fewnforio'r gatt_configuration.btconf file o'r ffolder gweinydd yn y deunyddiau a ddarperir.Mae gan gronfa ddata GATT wasanaeth wedi'i deilwra, o'r enw 'Hyfforddiant', gyda rhywfaint o ddata sy'n cael ei ddiogelu a rhywfaint o ddata nad yw. Mae hyn yn eich galluogi i gymharu'r hyn sy'n digwydd wrth geisio cael mynediad at nodwedd warchodedig ag un heb ei diogelu. Mae hon yn ffordd gyflym o wneud dyfais gyda diogelwch sylfaenol iawn.
  3. Byddwn yn defnyddio'r porth cyfresol i argraffu i'r consol yn Simplicity Studio i olrhain beth sy'n digwydd yn y cais. Y ffordd hawsaf o ddod o hyd i'r cydrannau hyn yw trwy chwilio amdanynt yn yr ymgom CYDRANNAU MEDDALWEDD fel y dangosir:
      1. Gosodwch y gydran IO Stream USART
      2. Gosodwch y gydran IO Stream Retarget STDIO
      3. Gosodwch y gydran I/O Safonol
      4. Gosodwch y gydran Log
      5. Agorwch y gydran Rheoli Bwrdd a throwch y 'Galluogi Rhith COM UART' ymlaen
      6. De-gliciwch ar yr addasydd yn y panel 'addaswyr dadfygio' a dewis 'Launch Console'. Dewiswch dab 'Cyfres 1' a gosodwch y cyrchwr ym maes mynediad testun ffenestr y consol a gwasgwch enter i ddeffro'r consol.
  4. Creu newidyn lleol yn sl_bt_on_event(), a geir yn app.c, ar gyfer arbed handlen y cysylltiad. Rhaid i'r newidyn fod yn statig gan fod y ffwythiant hwn yn cael ei alw bob tro mae digwyddiad yn cael ei godi gan y pentwr ac rydym am i'r gwerth fod yn barhaus. Bydd handlen y cysylltiad yn cael ei ddefnyddio yn ddiweddarachadran o'r labordy.
  5. Mewnosodwch rai datganiadau app_log() ar gyfer digwyddiadau i weld pryd rydyn ni wedi cysylltu, moddau diogelwch, ac ati
      1. Cynhwyswch y pennawd app_log.h file
      2. sl_bt_evt_connection_opened - argraffu handlen bond ac arbed handlen y cysylltiad. Os yw'r handlen bond yn 0xFF, nid oes bond rhwng y dyfeisiau cysylltiedig. Addaswch y trefnydd digwyddiad presennol fel ei fod yn edrych rhywbeth fel hyn:
      3. sl_bt_evt_connection_parameters – modd diogelwch. Gwneir hyn fel y gallwch weld pan fydd y modd diogelwch yn newid. Mae gwahaniaeth yn y rhif o foddau diogelwch lle mae modd diogelwch 1, yn cael ei rifo â'r gwerth 0, ac ati. Ychwanegwch y trefnydd digwyddiad canlynol at eich cais:
      4. sl_bt_evt_connection_closed_id. Mae'r triniwr digwyddiad hwn wedi'i addasu i ddiweddaru'r handlen cysylltiad. Defnyddir y gwerth 0xFF i nodi nad oes cysylltiad gweithredol. Defnyddir y gorchymyn app_log () i argraffu'r rheswm dros gau'r cysylltiad, mae'r rhestr o godau statws yma. Addaswch y trefnydd digwyddiad presennol fel ei fod yn edrych rhywbeth fel hyn:
  6. Adeiladu a fflachio'r prosiect. Ar y pwynt hwn, byddwn yn rhedeg yr sample app i weld sut mae'n ymddwyn heb unrhyw newidiadau, ar wahân i'r gronfa ddata GATT.
  7. Cysylltwch ag ap symudol EFRConnect fel a ganlyn:
      1. Tapiwch yr eicon 'Porwr Bluetooth'.
      2. Tapiwch yr eicon 'Connect' ar y ddyfais o'r enw 'Hyfforddiant'.
  8. Darllenwch y nodwedd heb ei diogelu fel a ganlyn:
      1. Tapiwch y ddolen 'Mwy o Wybodaeth' o dan y gwasanaeth anhysbys gydag UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
      2. Darllenwch y nodwedd ddiamddiffyn, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c trwy dapio'r eicon 'Darllen'. Dim syrpreis yma. Gan nad yw'r nodwedd wedi'i diogelu mewn unrhyw ffordd, bydd yn cael ei hanfon mewn testun plaen.
  9. Nawr darllenwch y nodwedd warchodedig, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Dylai eich ffôn symudol eich annog i baru a chysylltu, gall y neges amrywio yn dibynnu ar eich OS symudol. Ar ôl i chi dderbyn y cais i baru, dylech anfon neges ar y consol fel a ganlyn: Nodyn: Mae Atodiad A ar ddiwedd y llawlyfr hwn yn cynnwys crynodeb o alluoedd I/O a dulliau paru er gwybodaeth. Mae Atodiad B yn crynhoi'r dulliau diogelwch Bluetooth.

Ffurfweddiad Rheolwr Diogelwch

Mae'r rheolwr diogelwch yn rhan o'r pentwr Bluetooth sy'n pennu pa nodweddion diogelwch a ddefnyddir. Mae'r nodweddion hyn yn cynnwys amddiffyniad dyn-yn-y-canol (MITM), cysylltiadau LE Secure (aka ECDH), sy'n gofyn am gadarnhad ar gyfer bondio, ac ati. Mae'r rheolwr diogelwch hefyd yn trin galluoedd I / O a ddefnyddir i benderfynu pa ddull a ddefnyddir ar gyfer paru /bondio (gweler Atodiad A am grynodeb). Yn yr adran hon fe welwch setup syml.

  1. Gosod SM gyda chyfluniad dymunol. Mae'r caledwedd ar gyfer y labordy hwn yn ei gwneud hi'n hawdd arddangos allweddair ar y consol. Mae mynediad passkey yn ofyniad i alluogi amddiffyniad MITM. Ychwanegwch y cod canlynol at eich triniwr digwyddiad sl_bt_system_boot_id. Mae hyn yn galluogi dyn-yn-y-canol ac yn hysbysu'r ddyfais o bell bod gennym y gallu i arddangos passkey, ond dyna i gyd.
  2. I arddangos y cyfrinair ar y consol, mae angen triniwr digwyddiad fel y dangosir isod:
  3. Gosodwch y modd bondio, uchafswm nifer y bondiau, ac ati. Defnyddiwch y cod canlynol i ddechrau:Gellir defnyddio'r gosodiadau hyn i gyfyngu ar allu ymosodwr i fondio â'ch dyfais. Os mai dim ond un defnyddiwr sydd ei angen ar eich cynnyrch, yna fe allech chi gyfyngu'r bondiau uchaf i 1. Lle da i ychwanegu'r galwadau hyn yw yn y triniwr digwyddiad sl_bt_system_boot_id. Ni fyddwn yn galluogi bondio ar hyn o bryd i wneud i weddill y labordy fynd yn fwy llyfn ond rydym yn gosod polisi bondio i ganiatáu un bond yn unig. Er gwybodaeth, mae'r ddogfennaeth ar gyfer yr APIs hyn i'w gweld yma ac yma .
  4. Ychwanegu trinwyr digwyddiadau ar gyfer sl_bt_evt_sm_bonded_id a sl_bt_evt_sm_bonding_failed_id. Mae'r prif ddefnydd ar gyfer y digwyddiadau hyn yn addysgiadol ar hyn o bryd ond yn ddiweddarach yn y labordy byddwch yn ychwanegu ymarferoldeb.
  5. Adeiladu a fflachio i'r bwrdd targed. Cysylltwch ag EFRConnect a darllenwch y nodwedd warchodedig fel o'r blaen. Y tro hwn, fe welwch allweddair yn cael ei arddangos ar y consol. Rhowch y cyfrinair hwn ar eich ffôn symudol pan ofynnir i chi.
  6. Rhowch gynnig ar gadarnhad bondio. Mae'r nodwedd hon yn rhoi'r gallu i'r defnyddiwr fynnu bod ceisiadau bondio yn cael eu cadarnhau. Mae gwneud hynny yn rhoi rheolaeth i'r rhaglen dros ba ddyfeisiau cyfoedion y mae'n cysylltu â nhw. Un posibilrwydd yw ei gwneud yn ofynnol i'r defnyddiwr bwyso botwm cyn caniatáu'r bond.
    1. Agorwch y gosodiadau Bluetooth yn eich ffôn symudol a thynnwch y bond i'r ddyfais EFR32. Mae gweithrediadau ffonau symudol yn amrywio felly efallai na fydd angen y cam hwn. Os na welwch y ddyfais 'Hyfforddiant' yn eich gosodiadau Bluetooth, ewch ymlaen i'r cam nesaf.
    2. Mewn cydrannau meddalwedd, gosodwch un enghraifft o'r triniwr botwm syml.
    3. Cynhwyswch y pennawd file sl_simple_button_instances.h yn app.c
    4. Ychwanegu triniwr ar gyfer y digwyddiad sl_bt_evt_sm_bonding_confirm_id. Prif waith triniwr y digwyddiad hwn yw hysbysu'r defnyddiwr bod dyfais bell yn gofyn am fond newydd.
    5. Ychwanegu swyddogaeth galw'n ôl ar gyfer y triniwr botwm syml i anfon signal i'r pentwr Bluetooth yn nodi bod botwm wedi'i wasgu. Mae hyn yn diystyru'r alwad yn ôl rhagosodedig sy'n dychwelyd.
    6. Ychwanegu triniwr digwyddiad signal allanol. Codir y digwyddiad hwn mewn ymateb i dderbyn signal, fel yn y cam blaenorol. Bydd y digwyddiad signal allanol yn cael ei ddefnyddio i gadarnhau bondio.
    7. Newidiwch yr alwad i sl_bt_sm_configure i ofyn am gadarnhad bondio megis
    8. Ailadeiladu a fflachio.
    9. Cysylltwch ag EFRConnect a darllenwch y nodwedd warchodedig fel o'r blaen. Nawr fe welwch neges ar y consol fel a ganlyn:Pwyswch PB0 i gadarnhau'r bondio. Nawr bydd y consol yn arddangos y cyfrinair i'w nodi ar y ffôn symudol i'w fondio. Rhowch y cyfrinair i gwblhau'r broses fondio.

 

Tip: Defnyddiwch yr achos rhagosodedig yn y triniwr digwyddiad i argraffu neges pan fydd y pentwr yn anfon digwyddiad nad yw'n cael ei drin. Efallai bod y pentwr yn ceisio dweud rhywbeth pwysig wrthych.

Tu Hwnt i'r Hanfodion

Ar y pwynt hwn, yr ydych wedi cymryd advantage o'r nodweddion diogelwch sydd gan ein pentwr i'w cynnig. Nawr, gadewch i ni wella'r gweithredu trwy ddefnyddio nodweddion sydd ar gael inni yn ddoeth. Mae'r camau canlynol yn ddewisol ac yn annibynnol ar ei gilydd, gallwch chi adeiladu a fflachio ar ôl pob un i weld yr ymddygiad neu roi cynnig arnyn nhw i gyd gyda'i gilydd.

  1. Datgysylltu ar ymdrechion bond a fethwyd. Mae hwn yn lle da i ganfod bygythiadau. Os nad yw'r ddyfais bell yn cefnogi amgryptio / dilysu neu os nad oes ganddi'r allweddi cywir, gallai fod yn haciwr. Felly, gadewch i ni dorri'r cysylltiad. Ceisiwch ychwanegu galwad i sl_bt_connection_close() yn y digwyddiad sl_bt_sm_bonding_failed_id. Mae'r API wedi'i ddogfennu yma.Gallwch chi brofi'r nodwedd hon trwy nodi'r cyfrinair anghywir.
  2. Dim ond caniatáu bondio ar adegau penodol. Mae hyn yn cyfyngu ar yr amser sydd gan ymosodwr i ffurfio bond ac yn ei gwneud hi'n bosibl defnyddio'r nodwedd 'caniatáu cysylltiadau bondio yn unig'. Gall y dylunydd ddewis sut i alluogi neu analluogi modd bondable. At ddibenion arddangos yma, byddwn yn galluogi 'modd gosod' gyda PB1 ac yn defnyddio amserydd i'w analluogi ar ôl 30 eiliad.
    1. Gosod ail enghraifft o'r rhyngwyneb botwm syml. Bydd hyn yn galluogi'r defnydd o PB1.
    2. Addaswch yr alwad yn ôl i anfon signal gwahanol i'r pentwr i alluogi / analluogi bondio. Dylai'r canlyniad edrych yn rhywbeth fel hyn:
    3. Addaswch y triniwr digwyddiad signal allanol fel ei fod yn trin y signal newydd hwn. Dylai'r canlyniad fod fel hyn:
    4. Ychwanegu triniwr digwyddiad ar gyfer y digwyddiad sl_bt_evt_system_soft_timer_id. Bydd hyn yn cael ei ddefnyddio i analluogi modd gosod.
    5. Gellir defnyddio'r cod canlynol i alluogi modd bondadwy a chaniatáu pob cysylltiad neu i analluogi modd bondadwy a chaniatáu cysylltiadau o ddyfeisiau bondio yn unig:
    6. Ychwanegwch yr alwad ganlynol yn y triniwr digwyddiad sl_bt_system_boot_id
    7. Adeiladwch y prosiect a'i fflachio i'r ddyfais.
    8. Ceisiwch gysylltu â'r ddyfais gydag EFRConnect. Dylai'r cysylltiad fethu.
    9. Nawr ceisiwch wasgu PB1 cyn cysylltu ag EFRConnect. Y tro hwn bydd y cysylltiad yn llwyddiannus. Ar ôl 30 eiliad fe welwch neges ar y consol yn nodi bod y ddyfais yn gadael y modd gosod. Mae hyn yn golygu bod modd bondable bellach yn anabl.
  3. Cynyddu diogelwch wrth ffurfio cysylltiad. Gan fod diogelwch yn ddewisol, dylem ofyn am gysylltiad wedi'i amgryptio cyn gynted â phosibl yn hytrach na dibynnu ar nodweddion GATT. Mae'r API wedi'i ddogfennu yma. Lle da i alw'r API hwn yw'r sl_bt_evt_connection_opened_id event.Mae handlen y cysylltiad ar gael yn y newidyn cysylltiad.

Hunaniaeth Ddiogel

Nawr bod gennym ddyfais Bluetooth fwy diogel, gadewch i ni wella'r cam dilysu. Rydych chi eisoes wedi gweld sut i wirio hunaniaeth ddiogel dyfeisiau cromennog gyda'r llinell orchymyn mewn labordai hyfforddi blaenorol. Yn yr adran hon, byddwn yn gweld sut y gall un ddyfais BLE wirio hunaniaeth dyfais BLE arall trwy ofyn am ei chadwyn dystysgrif ac anfon her. Mae gan bob rhan gladdgell ddiogel eu tystysgrif dyfais a thystysgrif swp eu hunain. Mae'r tystysgrifau ffatri a gwraidd wedi'u codio'n galed i raglen y cleient er mwyn galluogi dilysu'r gadwyn dystysgrif gyfan. Cyfeiriwch at AN1268 am ragor o fanylion am hunaniaeth ddiogel.

  1. Diffiniwch glustogfa fyd-eang ar gyfer storio llofnod ardystio'r ddyfais fel a ganlyn:
  2. Gosodwch ffurfweddiad y rheolwr diogelwch i ddefnyddio paru JustWorks. Gwneir hyn fel bod y cysylltiad wedi'i amgryptio. Yn ymarferol, dylid defnyddio amddiffyniad MITM ond i gadw'r labordy yn syml, byddwn yn defnyddio JustWorks. Newidiwch yr alwad i sl_bt_sm_configure yn ôl i'r canlynol:Hefyd, gwnewch sylwadau ar yr alwad i setup_mode(gwir) yn y triniwr digwyddiad system_boot.
  3. Agor helpers.c o'r deunyddiau a ddarparwyd a chopïo'r cynnwys i app.c. Mae'r swyddogaethau galw'n ôl hyn yn cyflawni tasgau fel segmentu'r tystysgrifau fel y gellir eu hanfon dros BLE, gwirio'r gadwyn dystysgrif, a chynhyrchu / dilysu'r her.
  4. Mae angen pennu maint uned drosglwyddo uchaf (MTU) fel y gellir segmentu tystysgrifau a'u hailosod. Diffiniwch newidyn byd-eang i achub yr MTU fel y dangosir yma:Yna ychwanegwch driniwr digwyddiad ar gyfer y digwyddiad cyfnewid GATT MTU fel y dangosir isod:
  5. Mae tair nodwedd data defnyddwyr y gellir eu darllen. Defnyddir y nodweddion hyn i gyfathrebu tystysgrif y ddyfais, tystysgrif swp a'r her. Defnyddir swyddogaeth galw'n ôl i drin y ceisiadau darllen defnyddwyr hyn. Ychwanegu triniwr i alw'r swyddogaeth hon fel y dangosir isod:Mae'r alwad yn ôl yn defnyddio'r MTU o gam #2 i segmentu ac anfon y tystysgrifau yn ôl yr angen. Mae hefyd yn delio ag anfon yr her wedi'i llofnodi.
  6. Mae'r cleient yn anfon her, rhif ar hap i'w lofnodi gan y gweinydd, trwy ysgrifennu un o nodweddion GATT. Am y rheswm hwn, mae angen i'r rhaglen fod â thriniwr ar gyfer y digwyddiad cais ysgrifennu defnyddiwr fel a ganlyn:
  7. Ychwanegu cefnogaeth hunaniaeth ddiogel files i'r prosiect:
    1. app_se_manager_macro.h, app_se_manager_secure_identity.c ac app_se_secure_identity.h o'r deunyddiau a ddarparwyd i'r prosiect. Rhain files yn cynnwys rhai swyddogaethau cynorthwy-ydd ar gyfer tasgau fel cael maint y dystysgrif, cael allwedd gyhoeddus y ddyfais a llofnodi her.
    2. Cynnwys app_se_manager_secure_identity.h yn app.c.
  8. Mewnforio'r gatt_configuration-attest.btconf a ddarparwyd o'r deunyddiau a ddarparwyd. Galwodd y gronfa ddata GATT hon ardystiad diogel sy'n cynnwys pedair nodwedd a ddefnyddir i wirio hunaniaeth ein dyfais. Mae'r rhain yn cynnwys tystysgrif y ddyfais, tystysgrif swp, her ac ymateb.
  9. Mae'r cleient, a ddefnyddir i efelychu dyfais fel porth, yn cael ei ddarparu fel prosiect cyflawn gan ei fod yn fwy cymhleth i'w adeiladu. Yn gyffredinol, mae gweithrediad y cleient fel a ganlyn:
    1. Sganiau ar gyfer dyfeisiau sy'n hysbysebu'r gwasanaeth ardystio diogel ac yn cysylltu â nhw.
    2. Darganfod gwasanaethau a nodweddion cronfa ddata GATT.
    3. Yn darllen tystysgrifau'r ddyfais a'r swp ac yn gwirio'r gadwyn dystysgrif gan ddefnyddio'r dystysgrif ffatri a gwraidd y mae wedi'i storio mewn fflach.
    4. Yn anfon her ar hap i'r gweinydd.
    5. Ymdrechion i wirio'r ymateb i'r her.
    6. Yn cau'r cysylltiad os bydd y naill ddilysiad neu'r llall yn methu.
  10. Adeiladu a fflachio'r prosiect gweinydd i'ch gweinydd WSK / radioboard.
  11. Mewnforio'r prosiect cleient o'r ffolder cleient yn y deunyddiau a ddarperir. Adeiladu a fflachio'r prosiect cleient i'ch cleient WStk / radioboard.
  12. Pwyswch ailosod ar y cleient WStk ac agorwch y consol cyfresol. Mae'r cleient yn dechrau sganio am ddyfeisiau sy'n hysbysebu ein gwasanaeth hunaniaeth ddiogel a bydd yn cysylltu pan fydd yn dod o hyd i un.
  13. Bydd y cleient yn arddangos rhai negeseuon i nodi ei fod wedi dod o hyd i'r gweinydd gyda'r gwasanaeth dymunol a negeseuon statws am ddilysu'r gadwyn dystysgrif.
  14. Os bydd y dilysiad yn pasio, bydd y cleient yn cynhyrchu rhif ar hap, a elwir yn her, a'i anfon at y gweinydd. Bydd y gweinydd yn llofnodi'r her gyda'i allwedd dyfais breifat a gedwir yn ddiogel a'r llofnod yn ôl i'r cleient, gelwir hyn yn ymateb her. Yna mae'r cleient yn defnyddio'r allwedd gyhoeddus yn y dystysgrif dyfais a dderbyniwyd yn flaenorol i wirio'r llofnod. Gwneir hyn i gadarnhau bod gan y gweinydd yr allwedd breifat yr honnai fod ganddo. Os caiff yr her ei gwirio'n gywir, dangosir neges i'r perwyl hwnnw; fel arall, mae'r cysylltiad ar gau, ac mae neges yn cael ei harddangos yn esbonio pam.
  15. Nawr anfonwch dystysgrif annilys i gadarnhau bod y dilysiad yn gweithio mewn gwirionedd. Gallwch addasu user_read_request_cb() i lygru naill ai data'r dystysgrif neu'r ymateb her.

Atodiad A – Galluoedd I/O a Dulliau Paru
Atodiad B – Dulliau a Lefelau Diogelwch

Modd diogelwch 1 yw'r unig fodd a gefnogir ar gyfer Ynni Isel Bluetooth yn pentwr Silicon Labs. Mae'r lefelau fel a ganlyn:

  • Lefel 1 dim diogelwch
  • Lefel 2 paru heb ei ddilysu ag amgryptio
  • Paru dilysedig Lefel 3 gydag amgryptio
  • Cysylltiadau diogel wedi'u dilysu Lefel 4 gydag amgryptio cryf (cyfnewid allwedd ECDH)

 

Dogfennau / Adnoddau

silabs 21Q2 dyfais BLE diogel Lab Diogelwch [pdfLlawlyfr Defnyddiwr
Lab Diogelwch dyfais BLE diogel 21Q2, Labordy Diogelwch dyfais BLE diogel, Labordy Diogelwch

Cyfeiriadau

Gadael sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Mae meysydd gofynnol wedi'u marcio *