silabs 21Q2 aman alat BLE Kaamanan Lab

BLE Kaamanan Lab Manual

Dina lab ieu, anjeun bakal nempo kumaha mendesain alat BLE leuwih aman. Urang mimitian ku hiji leuwihview kumaha ngagunakeun sababaraha fitur tumpukan sarta ngaléngkah ka sababaraha saran umum ngeunaan téhnik pikeun sambungan leuwih aman sarta tungtungna urang bakal ningali kumaha ngagunakeun sertipikat alat leuwih BLE pikeun ngaidentipikasi hiji periferal sakumaha otentik.

Ngamimitian

Bluetooth sample aplikasi nu bakal ngawangun on dimaksudkeun pikeun dipaké kalawan bootloader a. Upami anjeun damel sareng EFR32MG21B énggal, éta moal gaduh bootloader. Anjeun tiasa mendakan bootloader anu tos diwangun dina platform\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a folder SDK Anjeun.

  1. Mimitian ku s soc-kosongampaplikasi na. Ieu sample aplikasi dipaké salaku citakan jeung ngajadikeun titik awal alus pikeun sagala aplikasi BLE.
    1. Buka Wizard Proyék Silicon Labs tina Simplicity Studio File menu -> anyar.
    2. Pilih BRD4181C teras klik tombol 'salajengna'.
    3. Pencét kotak centang 'Bluetooth (9)' dina jinis téknologi.
    4. Sorot 'Bluetooth - SoC Empty' teras klik salajengna.
    5. Pencét tombol 'Rengse'.
  2. Ayeuna anjeun tiasa nambihan sababaraha ciri pikeun ningali kumaha ciri anu ditangtayungan sareng anu teu dijagi dirawat sacara béda.
    1. Buka slcp proyék file ku ngaklik dua kali dina jandela Project Explorer
    2. Sorot tab 'SOFTWARE COMPONENTS' sareng buka alat konfigurasi GATT sapertos anu dipidangkeun di handap ieu: Tur nganggo alat impor ditémbongkeun di handap pikeun ngimpor gatt_configuration.btconf file ti folder server dina bahan disadiakeun.database GATT boga layanan custom, disebut 'Latihan', kalawan sababaraha data anu ditangtayungan sarta sababaraha nu henteu. Ieu ngamungkinkeun anjeun pikeun ngabandingkeun naon anu lumangsung nalika nyobian ngaksés ciri anu ditangtayungan vs anu teu dijagi. Ieu cara gancang nyieun alat jeung kaamanan pisan dasar.
  3. Kami bakal nganggo port serial pikeun nyitak kana konsol di Simplicity Studio pikeun ngalacak naon anu aya dina aplikasi. Cara panggampangna pikeun milarian komponén ieu nyaéta ku milarianana dina dialog KOMPONEN SOFTWARE sapertos anu dipidangkeun:
      1. Pasang komponén IO Stream USART
      2. Pasang komponén IO Stream Retarget STDIO
      3. Pasang komponén standar I / O
      4. Pasang komponén Log
      5. Buka komponén Board Control sareng hurungkeun 'Aktipkeun Virtual COM UART'
      6. Klik-katuhu adaptor dina panel 'Debug adapters' tur pilih 'Launch Console'. Pilih tab 'Serial 1' sareng nempatkeun kursor dina widang éntri téks dina jandela konsol sareng pencét asup pikeun hudang konsol.
  4. Jieun variabel lokal di sl_bt_on_event (), kapanggih dina app.c, pikeun nyimpen cecekelan sambungan. Variabel kudu statik saprak fungsi ieu disebut unggal waktos hiji acara diangkat ku tumpukan jeung urang hoyong nilai janten pengkuh. Cecekelan sambungan bakal dipaké dina engkébagian lab.
  5. Selapkeun sababaraha pernyataan app_log () pikeun acara ningali nalika urang disambungkeun, modeu kaamanan, jsb
      1. Kaasup lulugu app_log.h file
      2. sl_bt_evt_connection_opened - cecekelan beungkeut print tur nyimpen cecekelan sambungan. Lamun cecekelan beungkeut nyaeta 0xFF, euweuh beungkeut antara alat disambungkeun aya. Robah panangan acara anu tos aya supados katingali sapertos kieu:
      3. sl_bt_evt_connection_parameters - modeu kaamanan. Hal ieu dilakukeun supados anjeun tiasa ningali nalika modeu kaamanan robih. Aya bédana dina panomeran modus kaamanan mana mode kaamanan 1, enumerated kalawan nilai 0, jsb. Tambihkeun panangan acara ieu kana aplikasi anjeun:
      4. sl_bt_evt_connection_closed_id. Ieu acara Handler dirobah pikeun ngamutahirkeun cecekelan sambungan. Nilai 0xFF dipaké pikeun nunjukkeun yén euweuh sambungan aktip. Paréntah app_log () dipaké pikeun nyitak alesan pikeun sambungan ditutup, daptar kode status di dieu. Robah panangan acara anu tos aya supados katingali sapertos kieu:
  6. Ngawangun sareng flash proyék. Dina titik ieu, urang bakal ngajalankeun sample aplikasi pikeun katingal kumaha eta behaves tanpa parobahan naon, sagigireun GATT database.
  7. Sambungkeun sareng aplikasi mobile EFRConnect sapertos kieu:
      1. Ketok ikon 'Bluetooth Browser'.
      2. Ketok ikon 'Sambungkeun' dina alat nu ngaranna 'Latihan'.
  8. Maca ciri anu teu dijagi sapertos kieu:
      1. Ketok tautan 'Info Langkung' dina ladénan anu teu dipikanyaho nganggo UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
      2. Baca ciri nu teu dijagi, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c ku cara ngetok ikon 'Baca'. Taya kejutan di dieu. Kusabab ciri henteu ditangtayungan ku cara naon waé, éta bakal dikirim dina plaintext.
  9. Ayeuna baca ciri nu ditangtayungan, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Telepon sélulér anjeun kedah nyarankeun anjeun nyapasangkeun sareng nyambungkeun, pesenna tiasa bénten-béda gumantung kana OS sélulér anjeun. Saatos nampi pamenta pikeun nyapasangkeun, anjeun kedah pesen dina konsol sapertos kieu: Catetan: Appendix A dina tungtung manual ieu boga kasimpulan I / O kamampuhan jeung métode papasangan pikeun rujukan. Appendix B nyimpulkeun modeu kaamanan Bluetooth.

Konfigurasi Manajer Kaamanan

Pangatur kaamanan mangrupikeun bagian tina tumpukan Bluetooth anu nangtukeun fitur kaamanan mana anu dianggo. Fitur ieu kalebet panyalindungan man-in-the-middle (MITM), sambungan LE Secure (alias ECDH), ngabutuhkeun konfirmasi pikeun beungkeutan, jsb. Manajer kaamanan ogé nanganan kamampuan I / O anu dianggo pikeun nangtukeun metode mana anu dianggo pikeun papasangan. / beungkeutan (tingali Appendix A pikeun kasimpulan). Dina bagian ieu anjeun bakal nempo hiji setelan basajan.

  1. Setup SM kalayan konfigurasi nu dipikahoyong. Hardware pikeun lab ieu matak ngamudahkeun pikeun nembongkeun hiji passkey on konsol nu. Éntri passkey mangrupikeun sarat pikeun ngaktipkeun panyalindungan MITM. Tambahkeun kodeu handap pikeun sl_bt_system_boot_id handler acara Anjeun. Ieu ngamungkinkeun man-in-the-middle sareng nginpokeun ka alat jauh yén urang gaduh kamampuan pikeun nampilkeun konci sandi, tapi éta waé.
  2. Pikeun nampilkeun konci sandi dina konsol, panangan acara diperyogikeun sapertos anu dipidangkeun di handap ieu:
  3. Setel mode beungkeutan, jumlah maksimal beungkeutan, jsb. Anggo kodeu ieu pikeun ngamimitian:Setelan ieu tiasa dianggo pikeun ngawatesan kamampuan panyerang pikeun ngabeungkeut sareng alat anjeun. Lamun produk Anjeun ngan kudu boga hiji pamaké, mangka anjeun bisa ngawatesan beungkeut maksimum 1. Tempat nu sae pikeun nambahkeun panggero ieu dina sl_bt_system_boot_id event Handler. Kami moal ngaktipkeun beungkeutan dina waktos ayeuna supados sesa lab langkung lancar tapi kami netepkeun kawijakan beungkeutan pikeun ngan ukur hiji beungkeut. Pikeun rujukan, dokuméntasi pikeun API ieu kapanggih di dieu jeung di dieu.
  4. Tambahkeun pawang acara pikeun sl_bt_evt_sm_bonded_id jeung sl_bt_evt_sm_bonding_failed_id. Pamakéan utama pikeun acara ieu informatif ayeuna tapi engké di lab anjeun bakal nambahan fungsionalitas.
  5. Ngawangun sareng flash ka papan target. Sambungkeun sareng EFRConnect sareng baca ciri anu ditangtayungan sapertos sateuacana. Waktos ieu, anjeun bakal ningali konci konci anu dipidangkeun dina konsol. Lebetkeun konci ieu dina telepon sélulér anjeun nalika dipenta.
  6. Coba kaluar konfirmasi beungkeutan. Fitur ieu masihan pangguna kamampuan pikeun meryogikeun paménta beungkeutan dikonfirmasi. Lakukeun kitu masihan kadali aplikasi kana alat peer mana anu beungkeutan. Hiji kamungkinan nyaéta meryogikeun pangguna pikeun mencét tombol sateuacan ngijinkeun beungkeut.
    1. Buka setélan Bluetooth dina handphone anjeun sarta cabut beungkeut ka alat EFR32. Palaksanaan telepon sélulér béda-béda sahingga léngkah ieu panginten henteu diperyogikeun. Upami anjeun henteu ningali alat 'Latihan' dina setélan Bluetooth anjeun, teraskeun kana léngkah salajengna.
    2. Dina komponén software, install hiji conto tina tombol Handler basajan.
    3. Kaasup lulugu file sl_simple_button_instances.h dina app.c
    4. Tambahkeun panangan pikeun acara sl_bt_evt_sm_bonding_confirm_id. Tugas utama panangan acara ieu nyaéta pikeun nginpokeun ka pangguna yén alat jauh naroskeun beungkeut énggal.
    5. Nambahkeun fungsi callback pikeun tombol Handler basajan pikeun ngirim sinyal ka tumpukan Bluetooth nunjukkeun yén tombol a geus dipencet. Ieu overrides nu callback standar nu saukur mulih.
    6. Tambahkeun panangan acara sinyal éksternal. Kajadian ieu diangkat pikeun ngaréspon nampi sinyal, sapertos dina léngkah sateuacana. Acara sinyal éksternal bakal dianggo pikeun mastikeun beungkeutan.
    7. Ngarobah panggero pikeun sl_bt_sm_configure merlukeun konfirmasi beungkeutan kayaning
    8. Ngawangun deui sareng flash.
    9. Sambungkeun sareng EFRConnect sareng baca ciri anu ditangtayungan sapertos sateuacana. Ayeuna anjeun bakal ningali pesen dina konsol sapertos kieu:Pencét PB0 pikeun mastikeun beungkeutan. Ayeuna konsol bakal mintonkeun passkey pikeun diasupkeun kana handphone pikeun beungkeutan. Lebetkeun konci pikeun ngarengsekeun prosés beungkeutan.

 

Tip: Anggo kasus standar dina panangan acara pikeun nyitak pesen nalika tumpukan ngirim acara anu henteu diurus. Tumpukan bisa jadi nyobian ngabejaan Anjeun hal penting.

Saluareun Dasar

Dina titik ieu, anjeun geus nyokot advantage tina fitur kaamanan nu tumpukan kami geus nawarkeun. Ayeuna hayu urang ningkatkeun palaksanaan ngaliwatan pamakéan wijaksana fitur di pembuangan urang. Léngkah-léngkah di handap ieu mangrupikeun pilihan sareng bebas masing-masing, anjeun tiasa ngawangun sareng kedip-kedip saatos masing-masing pikeun ningali paripolah atanapi cobian sadayana babarengan.

  1. Pegatkeun sambungan dina usaha beungkeut gagal. Ieu mangrupikeun tempat anu saé pikeun ngadeteksi ancaman. Upami alat jauh henteu ngadukung enkripsi / auténtikasi atanapi ngan teu gaduh konci anu leres, éta tiasa janten hacker. Ku kituna, hayu urang megatkeun sambungan. Coba tambahkeun telepon ka sl_bt_connection_close () dina acara sl_bt_sm_bonding_failed_id. API didokumentasikeun di dieu.Anjeun tiasa nguji fitur ieu ku cara nuliskeun sandi salah.
  2. Ukur ngidinan beungkeutan dina waktu nu tangtu. Ieu ngabatesan waktos panyerang kedah ngabentuk beungkeut sareng ngamungkinkeun ngagunakeun fitur 'ngan ukur ngawenangkeun sambungan kabeungkeut'. Désainer tiasa milih kumaha ngaktipkeun atanapi nganonaktipkeun mode anu tiasa diikat. Pikeun tujuan demonstrasi di dieu, urang bakal ngaktifkeun 'mode setelan' sareng PB1 sareng nganggo timer pikeun nganonaktipkeun saatos 30 detik.
    1. Pasang conto kadua tina panganteur tombol basajan. Ieu bakal ngaktipkeun pamakéan PB1.
    2. Ngaropéa callback pikeun ngirim sinyal béda ka tumpukan pikeun ngaktipkeun / nganonaktipkeun beungkeutan. Hasilna kedah sapertos kieu:
    3. Ngarobah sinyal éksternal Handler acara supados handles sinyal anyar ieu. Hasilna kedah sapertos kieu:
    4. Tambahkeun panangan acara pikeun acara sl_bt_evt_system_soft_timer_id. Ieu bakal dipaké pikeun nganonaktipkeun mode setelan.
    5. Kodeu di handap ieu tiasa dianggo pikeun ngaktipkeun mode kabeungkeut sareng ngijinkeun sadaya sambungan atanapi nganonaktipkeun mode kabeungkeut sareng ngan ukur ngijinkeun sambungan tina alat kabeungkeut:
    6. Tambahkeun panggero handap dina sl_bt_system_boot_id acara Handler
    7. Ngawangun proyék jeung flash ka alat.
    8. Coba sambungkeun ka alat nganggo EFRConnect. Sambungan kedah gagal.
    9. Ayeuna cobian pencét PB1 sateuacan nyambungkeun sareng EFRConnect. Waktos ieu sambungan bakal suksés. Saatos 30 detik anjeun bakal ningali pesen dina konsol anu nunjukkeun yén alatna kaluar tina modeu setelan. Ieu ngandung harti yén mode bondable ayeuna ditumpurkeun.
  3. Ningkatkeun kaamanan dina ngabentuk sambungan. Kusabab kaamanan nyaeta pilihan, urang kudu ménta sambungan énkripsi pas mungkin tinimbang ngandelkeun ciri GATT. API didokumentasikeun di dieu. Hiji tempat alus pikeun nelepon API ieu dina sl_bt_evt_connection_opened_id event.The sambungan cecekelan sadia dina variabel sambungan.

Idéntitas Aman

Ayeuna urang gaduh alat Bluetooth anu langkung aman, hayu urang ningkatkeun léngkah auténtikasi. Anjeun parantos ningali kumaha pariksa idéntitas aman tina alat kolong kalayan garis paréntah di laboratorium latihan sateuacana. Dina bagian ieu, urang bakal ningali kumaha hiji alat BLE tiasa pariksa identitas alat BLE sejen ku pamundut ranté sertipikat sarta ngirim tangtangan. Kabéh bagian kolong aman nyekel sertipikat alat sorangan jeung sertipikat bets. Pabrik sareng akar sertipikat keras disandi kana aplikasi klien pikeun ngaktipkeun verifikasi sadaya ranté sertipikat. Tingal AN1268 pikeun detil langkung seueur ngeunaan identitas aman.

  1. Nangtukeun panyangga global pikeun nyimpen tanda tangan kasaksian alat sapertos ieu di handap:
  2. Setel konfigurasi manajer kaamanan pikeun make pasangan JustWorks. Hal ieu dilakukeun supados sambunganna énkripsi. Dina prakték, panyalindungan MITM kudu dipaké tapi tetep lab basajan, urang bakal ngagunakeun JustWorks. Robah telepon ka sl_bt_sm_configure deui ka handap:Oge, mairan sauran ka setup_mode(leres) dina panangan acara system_boot.
  3. Buka helpers.c tina bahan nu disadiakeun jeung salin eusina kana app.c. Fungsi callback ieu ngalaksanakeun tugas sapertos ngabagi sertipikat supados tiasa dikirim ngaliwatan BLE, pariksa ranté sertipikat, sareng ngahasilkeun / pariksa tantangan.
  4. Perlu nangtukeun ukuran unit transfer maksimum (MTU) supados sertipikat tiasa dipisahkeun sareng dipasang deui. Nangtukeun variabel global pikeun nyimpen MTU sakumaha ditémbongkeun di dieu:Lajeng nambahkeun hiji Handler acara pikeun GATT MTU disilihtukeurkeun acara sakumaha ditémbongkeun di handap ieu:
  5. Aya tilu ciri data pangguna anu tiasa dibaca. Karakteristik ieu dianggo pikeun komunikasi sertipikat alat, sertipikat angkatan sareng tantangan. A fungsi callback dipaké pikeun nanganan requests maca pamaké ieu. Tambahkeun pawang pikeun nelepon fungsi ieu ditémbongkeun saperti di handap ieu:Panggilan balik nganggo MTU ti lengkah #2 ka ruas sareng ngirim sertipikat upami diperyogikeun. Ogé handles ngirim tantangan ditandatanganan.
  6. klien nu ngirimkeun tangtangan, jumlah acak bakal ditandatanganan ku server, ku nulis salah sahiji ciri GATT. Ku sabab kitu, aplikasi kedah gaduh panangan pikeun acara pamundut nyerat pangguna sapertos ieu di handap:
  7. Tambahkeun rojongan identitas aman files kana proyék:
    1. app_se_manager_macro.h, app_se_manager_secure_identity.c sareng app_se_secure_identity.h tina bahan anu disayogikeun pikeun proyék éta. Ieu files ngandung sababaraha fungsi helper pikeun tugas-tugas sapertos kéngingkeun ukuran sertipikat, kéngingkeun konci umum alat sareng nandatanganan tantangan.
    2. Asupkeun app_se_manager_secure_identity.h dina app.c.
  8. Impor disadiakeun gatt_configuration-attest.btconf tina bahan disadiakeun. database GATT ieu disebut aman attestation nu ngawengku opat ciri nu bakal dipaké pikeun pariksa identitas alat urang. Ieu kalebet sertipikat alat, sertipikat angkatan, tantangan sareng réspon.
  9. Klién, anu dianggo pikeun simulasi alat sapertos gateway, disayogikeun salaku proyék lengkep sabab éta langkung rumit pikeun ngawangun. Sacara umum, operasi klien nyaéta kieu:
    1. Nyeken alat anu ngiklankeun ladenan pangbuktian anu aman sareng nyambung ka aranjeunna.
    2. Discovers ladenan database GATT sarta ciri.
    3. Maca sertipikat alat sareng bets sareng pariksa ranté sertipikat nganggo pabrik sareng sertipikat akar anu disimpen dina lampu kilat.
    4. Ngirimkeun tantangan acak ka server.
    5. Usaha pikeun pariksa réspon kana tantangan.
    6. Nutup sambungan lamun salah sahiji verifikasi gagal.
  10. Ngawangun sareng flash proyék server ka server WSTK / radioboard anjeun.
  11. Impor proyék klien tina folder klien dina bahan anu disayogikeun. Ngawangun sareng flash proyék klien ka WSTK / radioboard klien anjeun.
  12. Pencét reset dina klien WSTK tur muka konsol serial. Klién mimiti nyeken alat anu ngiklankeun jasa idéntitas aman kami sareng bakal nyambung nalika mendakan hiji.
  13. Klién bakal nampilkeun sababaraha pesen pikeun nunjukkeun yén éta parantos mendakan server kalayan layanan anu dipikahoyong sareng pesen status ngeunaan verifikasi ranté sertipikat.
  14. Lamun verifikasi pas, klien bakal ngahasilkeun angka acak, disebut tantangan, sarta ngirimkeunana ka server. Server bakal nandatanganan tantangan sareng konci alat pribadi anu aman sareng tanda tangan deui ka klien, ieu disebut réspon tantangan. Klién teras nganggo konci umum dina sertipikat alat anu ditampi sateuacana pikeun pariksa tandatangan. Hal ieu dilakukeun pikeun mastikeun yén server leres-leres ngagaduhan konci pribadi anu diklaim gaduh. Upami tangtangan diverifikasi leres, pesen dipintonkeun kana pangaruh éta; disebutkeun, sambungan ditutup, sarta dipintonkeun pesen ngajelaskeun naha.
  15. Ayeuna kirimkeun sertipikat anu teu sah pikeun mastikeun yén verifikasi éta leres-leres jalanna. Anjeun tiasa ngarobih user_read_request_cb() pikeun ngaruksak data sertipikat atanapi réspon tantangan.

Appendix A - Kamampuh I/O jeung Métode Papasangan
Appendix B - Modeu Kaamanan jeung Tingkat

Modeu Kaamanan 1 mangrupikeun hiji-hijina mode anu dirojong pikeun Bluetooth Low Energy dina tumpukan Silicon Labs. Tingkatna nyaéta kieu:

  • Tingkat 1 euweuh kaamanan
  • Level 2 pasangan unauthenticated kalawan enkripsi
  • Tingkat 3 dioténtikasi papasangan sareng énkripsi
  • Tingkat 4 ngaoténtikasi sambungan aman sareng énkripsi anu kuat (tukar konci ECDH)

 

Dokumén / Sumberdaya

silabs 21Q2 aman alat BLE Kaamanan Lab [pdf] Manual pamaké
21Q2 aman BLE alat Lab Kaamanan, aman BLE alat Kaamanan Lab, Kaamanan Lab

Rujukan

Ninggalkeun komentar

alamat surélék anjeun moal diterbitkeun. Widang diperlukeun ditandaan *