silabs 21Q2 luwas nga BLE device Security Lab

Manwal sa BLE Security Lab

Sa kini nga lab, imong makita kung giunsa ang pagdesinyo sa usa ka labi ka luwas nga aparato nga BLE. Magsugod kita sa usa ka pagtaposview sa unsa nga paagi sa paggamit sa pipila sa mga bahin sa stack ug mobalhin ngadto sa pipila ka kinatibuk-ang tambag mahitungod sa mga teknik alang sa mas luwas nga mga koneksyon ug sa katapusan atong tan-awon kon sa unsang paagi sa paggamit sa device certificates sa BLE sa pag-ila sa usa ka peripheral ingon nga tinuod.

Pagsugod

Ang Bluetooth sampAng aplikasyon nga imong pagatukoron gituyo nga gamiton sa usa ka bootloader. Kung nagtrabaho ka sa usa ka bag-ong EFR32MG21B, wala kini usa ka bootloader. Makapangita ka ug pre-built bootloader sa platform\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a folder sa imong SDK.

  1. Pagsugod sa usa ka soc-empty sampang app. Kini nga sampAng app gigamit isip usa ka template ug naghimo sa usa ka maayo nga punto sa pagsugod alang sa bisan unsang BLE nga aplikasyon.
    1. Ablihi ang Silicon Labs Project Wizard gikan sa Simplicity Studio File menu -> bag-o.
    2. Pilia ang BRD4181C ug i-klik ang 'sunod' nga buton.
    3. I-klik ang checkbox nga 'Bluetooth (9)' ubos sa tipo sa teknolohiya.
    4. I-highlight ang 'Bluetooth - SoC Empty' unya i-klik ang sunod.
    5. I-klik ang 'Finish' nga buton.
  2. Karon mahimo nimong idugang ang pipila ka mga kinaiya aron makita kung giunsa ang gipanalipdan ug dili gipanalipdan nga mga kinaiya lahi nga pagtratar.
    1. Ablihi ang slcp sa proyekto file pinaagi sa pag-double click niini sa bintana sa Project Explorer
    2. I-highlight ang 'SOFTWARE COMPONENTS' nga tab ug ablihi ang GATT configuration tool sama sa gipakita sa ubos: Ug gamita ang import tool nga gipakita sa ubos aron ma-import ang gatt_configuration.btconf file gikan sa folder sa server sa gihatag nga mga materyales.Ang database sa GATT adunay naandan nga serbisyo, gitawag nga 'Paghanas', nga adunay pipila ka datos nga giprotektahan ug ang uban wala. Gitugotan ka niini nga itandi kung unsa ang mahitabo kung mosulay sa pag-access sa usa ka giprotektahan nga kinaiya kumpara sa usa nga wala mapanalipdan. Kini usa ka dali nga paagi sa paghimo sa usa ka aparato nga adunay sukaranan nga seguridad.
  3. Gamiton namo ang serial port aron i-print sa console sa Simplicity Studio aron masubay kung unsa ang nahitabo sa aplikasyon. Ang pinakasayon ​​nga paagi sa pagpangita niini nga mga component mao ang pagpangita niini diha sa SOFTWARE COMPONENTS dialog sama sa gipakita:
      1. I-install ang sangkap sa IO Stream USART
      2. I-install ang IO Stream Retarget STDIO component
      3. I-install ang Standard I/O component
      4. I-install ang sangkap sa Log
      5. Ablihi ang component sa Board Control ug i-on ang 'Enable Virtual COM UART'
      6. I-right-click ang adapter sa panel nga 'Debug adapters' ug pilia ang 'Launch Console'. Pilia ang tab nga 'Serial 1' ug ibutang ang cursor sa text entry field sa console window ug pindota ang enter aron pukawon ang console.
  4. Paghimo ug lokal nga variable sa sl_bt_on_event(), nga makita sa app.c, para sa pagtipig sa gunitanan sa koneksyon. Ang variable kinahanglan nga static tungod kay kini nga function gitawag sa matag higayon nga ang usa ka panghitabo gipataas sa stack ug gusto namon nga ang kantidad magpadayon. Ang gunitanan sa koneksyon gamiton sa ulahiseksyon sa lab.
  5. Isulod ang pipila ka app_log() nga mga pahayag para makita sa mga panghitabo kung kanus-a kami konektado, mga paagi sa seguridad, ug uban pa
      1. Iapil ang app_log.h header file
      2. sl_bt_evt_connection_open – i-print ang bond handle ug i-save ang connection handle. Kung ang kuptanan sa bugkos mao ang 0xFF, wala’y bugkos tali sa mga konektado nga aparato nga naglungtad. Usba ang naglungtad nga tigdumala sa panghitabo aron kini ingon niini:
      3. sl_bt_evt_connection_parameters – mode sa seguridad. Gihimo kini aron imong makita kung mausab ang mode sa seguridad. Adunay kalainan sa pag-numero sa mga mode sa seguridad diin ang mode sa seguridad 1, gi-enumerate sa kantidad nga 0, ug uban pa. Idugang ang mosunod nga tigdumala sa panghitabo sa imong aplikasyon:
      4. sl_bt_evt_connection_closed_id. Kini nga tigdumala sa panghitabo giusab aron ma-update ang gunitanan sa koneksyon. Ang bili nga 0xFF gigamit sa pagpakita nga walay aktibong koneksyon. Ang app_log() nga sugo gigamit sa pag-print sa rason sa koneksyon nga sirado, ang listahan sa mga status code ania dinhi. Usba ang kasamtangan nga tigdumala sa panghitabo aron kini ingon niini:
  6. Pagtukod ug pag-flash sa proyekto. Niini nga punto, atong padaganon ang sample app aron makita kung giunsa kini paglihok nga wala’y mga pagbag-o, gawas sa database sa GATT.
  7. Sumpaysumpaya ang EFRConnect mobile app sama sa mosunod:
      1. I-tap ang icon nga 'Bluetooth Browser'.
      2. I-tap ang icon nga 'Connect' sa device nga ginganlan og 'Training'.
  8. Basaha ang dili mapanalipdan nga kinaiya sama sa mosunod:
      1. I-tap ang link nga 'More Info' ubos sa wala mailhi nga serbisyo gamit ang UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
      2. Basaha ang dili protektadong kinaiya, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c pinaagi sa pag-tap sa 'Read' icon. Walay mga surpresa dinhi. Tungod kay ang kinaiya dili mapanalipdan sa bisan unsang paagi, kini ipadala sa plaintext.
  9. Karon basaha ang gipanalipdan nga kinaiya, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Ang imong mobile phone kinahanglan nga mag-aghat kanimo sa pagpares ug pagkonektar, ang mensahe mahimong magkalainlain depende sa imong mobile OS. Human nimo madawat ang hangyo nga ipares, kinahanglan nimo ang usa ka mensahe sa console sama sa mosunod: Nota: Apendise A sa katapusan niini nga manwal adunay summary sa mga kapabilidad sa I/O ug mga paagi sa pagpares alang sa pakisayran. Ang Apendise B nagtingob sa Bluetooth nga mga paagi sa seguridad.

Konfigurasyon sa Security Manager

Ang manedyer sa seguridad kabahin sa Bluetooth stack nga nagtino kung unsang mga bahin sa seguridad ang gigamit. Kini nga mga bahin naglakip sa man-in-the-middle (MITM) nga proteksyon, LE Secure connections (aka ECDH), nagkinahanglan og kumpirmasyon alang sa bonding, ug uban pa. /bonding (tan-awa ang Appendix A para sa summary). Niini nga seksyon makita nimo ang usa ka yano nga pag-setup.

  1. I-setup ang SM nga adunay gusto nga configuration. Ang hardware alang niini nga lab nagpasayon ​​sa pagpakita og passkey sa console. Ang pagsulod sa passkey usa ka kinahanglanon aron mahimo ang proteksyon sa MITM. Idugang ang mosunod nga code sa imong sl_bt_system_boot_id event handler. Kini makapahimo sa man-in-the-middle ug nagpahibalo sa hilit nga device nga kita adunay abilidad sa pagpakita sa usa ka passkey, apan kana lang.
  2. Aron ipakita ang passkey sa console, gikinahanglan ang tigdumala sa panghitabo sama sa gipakita sa ubos:
  3. Itakda ang bonding mode, max nga gidaghanon sa bonding, ug uban pa. Gamita ang mosunod nga code para makasugod:Kini nga mga setting mahimong magamit aron limitahan ang abilidad sa usa ka tig-atake nga makig-bonding sa imong aparato. Kung ang imong produkto kinahanglan ra nga adunay usa ka tiggamit, mahimo nimong limitahan ang labing kadaghan nga mga bond sa 1. Ang maayong lugar aron idugang kini nga mga tawag naa sa sl_bt_system_boot_id event handler. Dili namo i-enable ang bonding karong panahona para mas hapsay ang nahabilin sa lab pero nagset mi ug bonding policy para tugotan ra ang usa ka bond. Alang sa pakisayran, ang dokumentasyon alang niini nga mga API makita dinhi ug dinhi.
  4. Idugang ang mga tigdumala sa panghitabo para sa sl_bt_evt_sm_bonded_id ug sl_bt_evt_sm_bonding_failed_id. Ang nag-unang gamit alang niini nga mga panghitabo mao ang informative karon apan sa ulahi sa lab ikaw makadugang functionality.
  5. Pagtukod ug pag-flash sa target board. Sumpaysumpaya ang EFRConnect ug basaha ang gipanalipdan nga kinaiya sama kaniadto. Niining higayona, imong makita ang usa ka passkey nga gipakita sa console. Ibutang kini nga passkey sa imong mobile phone kung giaghat.
  6. Sulayi ang pagkumpirma sa bonding. Kini nga bahin naghatag sa tiggamit og abilidad sa pagpangayo nga ang mga hangyo sa bonding makumpirma. Ang pagbuhat sa ingon naghatag sa kontrol sa aplikasyon kung unsang mga aparato sa kaedad ang gigapos niini. Ang usa ka posibilidad mao ang paghangyo sa tiggamit sa pagpindot sa usa ka buton sa dili pa tugutan ang bugkos.
    1. Ablihi ang mga setting sa Bluetooth sa imong mobile phone ug kuhaa ang bond sa EFR32 device. Ang mga pagpatuman sa mobile phone lainlain aron kini nga lakang mahimong dili kinahanglan. Kung dili nimo makita ang aparato nga 'Pagbansay' sa imong mga setting sa Bluetooth, padayon lang sa sunod nga lakang.
    2. Sa mga sangkap sa software, i-install ang usa ka pananglitan sa yano nga tagdumala sa butones.
    3. Ilakip ang ulohan file sl_simple_button_instances.h sa app.c
    4. Pagdugang ug handler para sa sl_bt_evt_sm_bonding_confirm_id nga panghitabo. Ang panguna nga trabaho sa kini nga tigdumala sa panghitabo mao ang pagpahibalo sa tiggamit nga ang usa ka hilit nga aparato nangayo usa ka bag-ong bugkos.
    5. Pagdugang ug callback function para sa simple nga button handler para magpadala ug signal sa Bluetooth stack nga nagpaila nga ang usa ka butones gipugos. Gi-override niini ang default callback nga nagbalik lang.
    6. Pagdugang ug external signal event handler. Kini nga panghitabo gipataas isip tubag sa pagdawat og signal, sama sa miaging lakang. Ang panghitabo sa gawas nga signal gamiton aron makumpirma ang pagbugkos.
    7. Usba ang tawag sa sl_bt_sm_configure aron mangayo ug kumpirmasyon sa bonding sama sa
    8. Pagtukod pag-usab ug pag-flash.
    9. Sumpaysumpaya ang EFRConnect ug basaha ang gipanalipdan nga kinaiya sama kaniadto. Karon imong makita ang usa ka mensahe sa console sama sa mosunod:Pindota ang PB0 para kumpirmahon ang bonding. Karon ipakita sa console ang passkey nga isulod sa mobile phone para sa bonding. Pagsulod sa passkey aron makompleto ang proseso sa pagbugkos.

 

Tip: Gamita ang default case sa event handler para mag-print ug message kung ang stack magpadala ug event nga wala maatiman. Ang stack tingali naningkamot sa pagsulti kanimo og usa ka butang nga importante.

Labaw sa mga sukaranan

Niini nga punto, gikuha nimo ang advantage sa mga bahin sa seguridad nga gitanyag sa among stack. Karon atong pauswagon ang pagpatuman pinaagi sa maalamong paggamit sa mga feature nga atong magamit. Ang mosunod nga mga lakang kay opsyonal ug independente sa usag usa, mahimo ka magtukod ug mag-flash human sa matag usa aron makita ang kinaiya o sulayan silang tanan.

  1. Pagdiskonekta sa napakyas nga pagsulay sa bond. Kini usa ka maayong lugar aron mahibal-an ang mga hulga. Kung ang hilit nga aparato wala mosuporta sa encryption/authentication o wala lang sa husto nga mga yawe, mahimo kini usa ka hacker. Busa, atong putlon ang koneksyon. Sulayi pagdugang ug tawag sa sl_bt_connection_close() sa sl_bt_sm_bonding_failed_id nga panghitabo. Ang API gidokumento dinhi.Mahimo nimong sulayan kini nga bahin pinaagi sa pagsulod sa sayup nga passkey.
  2. Gitugotan lamang ang pag-bonding sa piho nga mga panahon. Gilimitahan niini ang oras nga ang usa ka tig-atake kinahanglan maghimo usa ka bugkos ug gipaposible nga gamiton ang bahin nga 'gitugotan ra ang mga koneksyon nga adunay koneksyon'. Ang tigdesinyo makapili kon unsaon pag-enable o pag-disable ang bondable mode. Alang sa mga katuyoan sa demonstrasyon dinhi, mahimo namon ang usa ka 'setup mode' nga adunay PB1 ug mogamit usa ka timer aron ma-disable kini pagkahuman sa 30 segundos.
    1. I-install ang ikaduhang higayon sa yano nga interface sa buton. Kini makahimo sa paggamit sa PB1.
    2. Usba ang callback para magpadala ug lain nga signal sa stack para ma-enable/disable ang bonding. Ang resulta kinahanglan nga tan-awon sama niini:
    3. Usba ang tigdumala sa panghitabo sa gawas nga signal aron kini makadumala niining bag-ong signal. Ang resulta kinahanglan nga sama niini:
    4. Pagdugang ug event handler para sa sl_bt_evt_system_soft_timer_id event. Kini gamiton sa pag-disable sa setup mode.
    5. Ang mosunud nga code mahimong magamit aron mahimo ang bondable mode ug tugotan ang tanan nga koneksyon o i-disable ang bondable mode ug gitugotan lamang ang mga koneksyon gikan sa mga bonded device:
    6. Idugang ang mosunod nga tawag sa sl_bt_system_boot_id event handler
    7. Pagtukod sa proyekto ug i-flash kini sa device.
    8. Sulayi ang pagkonektar sa aparato gamit ang EFRConnect. Ang koneksyon kinahanglan nga mapakyas.
    9. Karon sulayi pagpindot ang PB1 sa dili pa magkonektar sa EFRConnect. Niining higayona ang koneksyon magmalampuson. Human sa 30 segundos makakita ka og mensahe sa console nga nagpakita nga ang device migawas sa setup mode. Kini nagpasabot nga ang bondable mode wala na karon.
  3. Dugangi ang seguridad sa paghimo og koneksyon. Tungod kay ang seguridad mao ang opsyonal, kita kinahanglan nga mohangyo sa usa ka encrypted koneksyon sa labing madali kay sa pagsalig sa GATT mga kinaiya. Ang API gidokumento dinhi. Usa ka maayong dapit nga tawgon kini nga API anaa sa sl_bt_evt_connection_opened_id nga panghitabo.Ang kuptanan sa koneksyon anaa sa variable sa koneksyon.

Luwas nga Identidad

Karon nga aduna na kitay mas luwas nga Bluetooth device, pauswagon nato ang lakang sa pag-authenticate. Nakita na nimo kung unsaon pag-verify ang luwas nga pagkatawo sa mga vault device nga adunay command line sa miaging mga lab sa pagbansay. Niini nga seksyon, atong tan-awon kon sa unsang paagi ang usa ka BLE device makapamatuod sa pagkatawo sa laing BLE device pinaagi sa paghangyo sa iyang certificate chain ug pagpadala og hagit. Ang tanan nga luwas nga mga bahin sa vault naghupot sa ilang kaugalingon nga sertipiko sa aparato ug sertipiko sa batch. Ang pabrika ug gamut nga mga sertipiko lisud nga gi-code sa aplikasyon sa kliyente aron mahimo ang pag-verify sa tibuuk nga kadena sa sertipiko. Tan-awa ang AN1268 para sa dugang nga mga detalye sa luwas nga pagkatawo.

  1. Ipasabot ang usa ka global buffer para sa pagtipig sa pirma sa pamatuod sa device sama sa ubos:
  2. Itakda ang configuration manager sa seguridad aron gamiton ang JustWorks nga pagpares. Gihimo kini aron ang koneksyon ma-encrypt. Sa praktis, kinahanglan gamiton ang proteksyon sa MITM apan aron mapabilin nga simple ang lab, gamiton nato ang JustWorks. Usba ang tawag sa sl_bt_sm_configure balik sa mosunod:Usab, ikomento ang tawag sa setup_mode(tinuod) sa system_boot event handler.
  3. Ablihi ang mga katabang.c gikan sa gihatag nga mga materyales ug kopyaha ang mga sulod sa app.c. Kini nga mga function sa callback naghimo sa mga buluhaton sama sa pagbahin sa mga sertipiko aron sila ipadala sa BLE, pag-verify sa kadena sa sertipiko, ug paghimo/pagpamatuod sa hagit.
  4. Kinahanglan nga matino ang maximum transfer unit (MTU) nga gidak-on aron ang mga sertipiko mahimong mabahin ug mahiusa pag-usab. Ipasabut ang usa ka global nga variable aron maluwas ang MTU sama sa gipakita dinhi:Dayon pagdugang ug event handler para sa GATT MTU nga gibaylo nga panghitabo sama sa gipakita sa ubos:
  5. Adunay tulo ka mga kinaiya sa datos sa tiggamit nga mabasa. Kini nga mga kinaiya gigamit aron ipahibalo ang sertipiko sa aparato, sertipiko sa batch ug ang hagit. Usa ka function sa callback ang gigamit sa pagdumala niini nga mga hangyo sa pagbasa sa user. Pagdugang usa ka handler aron tawagan kini nga function sama sa gipakita sa ubos:Gigamit sa callback ang MTU gikan sa lakang #2 hangtod sa bahin ug ipadala ang mga sertipiko kung gikinahanglan. Nagdumala usab kini sa pagpadala sa gipirmahan nga hagit.
  6. Ang kliyente nagpadala usa ka hagit, usa ka random nga numero nga pirmahan sa server, pinaagi sa pagsulat sa usa sa mga kinaiya sa GATT. Tungod niini nga rason, ang aplikasyon kinahanglan nga adunay usa ka handler alang sa user write request nga panghitabo sama sa ubos:
  7. Pagdugang luwas nga suporta sa pagkatawo files sa proyekto:
    1. app_se_manager_macro.h, app_se_manager_secure_identity.c ug app_se_secure_identity.h gikan sa gihatag nga mga materyales ngadto sa proyekto. Kini files adunay pipila ka mga function sa katabang alang sa mga buluhaton sama sa pagkuha sa gidak-on sa sertipiko, pagkuha sa aparato nga publiko nga yawe ug pagpirma sa usa ka hagit.
    2. Ilakip ang app_se_manager_secure_identity.h sa app.c.
  8. Import ang gihatag nga gatt_configuration-attest.btconf gikan sa gihatag nga mga materyales. Kini nga database sa GATT gitawag ug luwas nga pamatuod nga naglakip sa upat ka mga kinaiya nga gamiton aron mapamatud-an ang pagkatawo sa among aparato. Naglakip kini sa sertipiko sa aparato, sertipiko sa batch, hagit ug tubag.
  9. Ang kliyente, nga gigamit sa pagsundog sa usa ka aparato sama sa gateway, gihatag ingon usa ka kompleto nga proyekto tungod kay kini labi ka komplikado sa pagtukod. Sa kinatibuk-an, ang operasyon sa kliyente mao ang mosunod:
    1. Pag-scan alang sa mga aparato nga nag-anunsyo sa luwas nga serbisyo sa pamatuod ug nagkonektar niini.
    2. Nadiskobrehan ang mga serbisyo ug mga kinaiya sa database sa GATT.
    3. Gibasa ang aparato ug mga sertipiko sa batch ug gipamatud-an ang kadena sa sertipiko gamit ang pabrika ug sertipiko sa ugat nga gitipigan niini sa flash.
    4. Nagpadala usa ka random nga hagit sa server.
    5. Mga pagsulay sa pagsusi sa tubag sa hagit.
    6. Isira ang koneksyon kung mapakyas ang bisan unsang pag-verify.
  10. Paghimo ug pag-flash sa proyekto sa server sa imong server nga WSTK / radioboard.
  11. I-import ang proyekto sa kliyente gikan sa folder sa kliyente sa gihatag nga mga materyales. Paghimo ug pag-flash sa proyekto sa kliyente sa imong kliyente nga WSTK/radioboard.
  12. Pindota ang reset sa kliyente nga WSTK ug ablihi ang serial console. Ang kliyente nagsugod sa pag-scan alang sa mga aparato nga nag-anunsyo sa among luwas nga serbisyo sa pagkilala ug magkonektar kung makit-an ang usa.
  13. Ang kliyente magpakita sa pipila ka mga mensahe aron ipakita nga nakit-an niini ang server nga adunay gusto nga serbisyo ug mga mensahe sa status bahin sa pag-verify sa kadena sa sertipiko.
  14. Kung ang pag-verify moagi, ang kliyente maghimo usa ka random nga numero, gitawag nga hagit, ug ipadala kini sa server. Pirmahan sa server ang hagit gamit ang luwas nga gihuptan nga yawe sa pribadong aparato ug ang pirma balik sa kliyente, gitawag kini nga tubag sa hagit. Gigamit dayon sa kliyente ang publiko nga yawe sa nadawat kaniadto nga sertipiko sa aparato aron mapamatud-an ang pirma. Gihimo kini aron makumpirma nga ang server adunay gyud pribado nga yawe nga giangkon niini. Kung ang hagit gipamatud-an sa husto, usa ka mensahe ang gipakita sa ingon nga epekto; kon dili, ang koneksyon sirado, ug usa ka mensahe ang gipakita nga nagpatin-aw ngano.
  15. Karon magpadala usa ka dili balido nga sertipiko aron makumpirma nga ang pag-verify molihok gyud. Mahimo nimong usbon ang user_read_request_cb() aron madaot ang datos sa sertipiko o ang tubag sa hagit.

Apendise A – I/O Capabilities ug Pairing Methods
Apendise B – Mga Mode sa Seguridad ug Mga Antas

Ang mode sa seguridad 1 mao ra ang mode nga gisuportahan alang sa Bluetooth Low Energy sa stack sa Silicon Labs. Ang mga lebel mao ang mosunod:

  • Level 1 walay seguridad
  • Level 2 nga wala mapamatud-an nga pagpares nga adunay encryption
  • Gipamatud-an sa lebel 3 ang pagpares nga adunay pag-encrypt
  • Ang lebel 4 nagpamatuod nga luwas nga mga koneksyon nga adunay lig-on nga pag-encrypt (ECDH key exchange)

 

Mga Dokumento / Mga Kapanguhaan

silabs 21Q2 luwas nga BLE device Security Lab [pdf] Manwal sa Gumagamit
21Q2 luwas nga BLE device Security Lab, luwas nga BLE device Security Lab, Security Lab

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *