silabs 21Q2 aman piranti BLE Keamanan Lab
Manual Lab Keamanan BLE
Ing lab iki, sampeyan bakal weruh carane ngrancang piranti BLE luwih aman. Kita bakal miwiti karo liwatview carane nggunakake sawetara fitur tumpukan lan pindhah menyang sawetara saran umum bab Techniques kanggo sambungan luwih aman lan pungkasanipun kita bakal weruh carane nggunakake sertifikat piranti liwat BLE kanggo ngenali peripheral minangka asli.
Miwiti
Bluetooth sampAplikasi sing bakal sampeyan gunakake kanggo digunakake karo bootloader. Yen sampeyan nggarap EFR32MG21B anyar, ora bakal duwe bootloader. Sampeyan bisa nemokake bootloader sing wis dibangun ing platform\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a folder SDK sampeyan.
- Mulai karo s soc-kosongampiki app. Iki sample app digunakake minangka cithakan lan ndadekake titik wiwitan apik kanggo aplikasi BLE.
- Bukak Wisaya Proyek Silicon Labs saka Simplicity Studio File menu -> anyar.
- Pilih BRD4181C lan klik tombol 'sabanjure'.
- Klik kothak centhang 'Bluetooth (9)' ing jinis teknologi.
- Sorot 'Bluetooth – SoC Empty' banjur klik sabanjure.
- Klik tombol 'Rampung'.
- Saiki sampeyan bisa nambah sawetara ciri kanggo ndeleng carane karakteristik sing dilindhungi lan ora dilindhungi dianggep beda.
- Bukak proyek slcp file kanthi ngeklik kaping pindho ing jendhela Project Explorer
- Nyorot tab 'KOMPONEN SOFTWARE' lan bukak alat konfigurasi GATT kaya ing ngisor iki:
Lan nggunakake alat ngimpor kapacak ing ngisor iki kanggo ngimpor gatt_configuration.btconf file saka folder server ing materi sing kasedhiya.
database GATT wis layanan adat, disebut 'Training', karo sawetara data sing dilindhungi lan sawetara sing ora. Iki ngidini sampeyan mbandhingake apa sing kedadeyan nalika nyoba ngakses karakteristik sing dilindhungi vs sing ora dilindhungi. Iki minangka cara cepet nggawe piranti kanthi keamanan dhasar.
- Kita bakal nggunakake port serial kanggo nyetak menyang console ing Simplicity Studio kanggo nglacak apa sing kedadeyan ing aplikasi kasebut. Cara paling gampang kanggo nemokake komponen kasebut yaiku kanthi nggoleki ing dialog KOMPONEN SOFTWARE kaya sing ditampilake:
-
- Instal komponen IO Stream USART
- Instal komponen IO Stream Retarget STDIO
- Instal komponen I/O Standar
- Instal komponen Log
- Bukak komponen Kontrol Papan lan aktifake 'Aktifake UART COM Virtual'
- Klik-tengen adaptor ing panel 'Debug adapters' banjur pilih 'Launch Console'. Pilih tab 'Serial 1' lan selehake kursor ing kolom entri teks ing jendhela console lan penet enter kanggo tangi console.
-
- Nggawe variabel lokal ing sl_bt_on_event (), ditemokaké ing app.c, kanggo nyimpen nangani sambungan. Variabel kudu statis amarga fungsi iki diarani saben acara diunggahake dening tumpukan lan kita pengin nilai kasebut tetep. Nangani sambungan bakal digunakake ing mengko
bagean saka lab.
- Pasang sawetara app_log () statements kanggo acara kanggo ndeleng nalika kita disambungake, mode keamanan, etc
-
- Kalebu header app_log.h file
- sl_bt_evt_connection_opened – print jaminan nangani lan nyimpen gagang sambungan. Yen gagang jaminan 0xFF, ora ana jaminan ing antarane piranti sing disambungake. Owahi panangan acara sing wis ana supaya katon kaya iki:
- sl_bt_evt_connection_parameters – mode keamanan. Iki rampung supaya sampeyan bisa ndeleng nalika mode keamanan diganti. Ana prabédan ing nomer saka mode keamanan ngendi keamanan mode 1, enumerated karo nilai 0, etc. Tambah panangan acara ing ngisor iki menyang aplikasi sampeyan:
- sl_bt_evt_connection_closed_id. Handler acara iki diowahi kanggo nganyari gagang sambungan. Nilai 0xFF digunakake kanggo nuduhake yen ora ana sambungan aktif. App_log () printah digunakake kanggo print metu alesan sambungan ditutup, dhaftar kode status kene. Owahi panangan acara sing wis ana supaya katon kaya iki:
- Kalebu header app_log.h file
-
- Mbangun lan kerlip proyek. Ing jalur iki, kita bakal mbukak sample app kanggo ndeleng carane nindakake tanpa owah-owahan, saliyane database GATT.
- Sambungake karo aplikasi seluler EFRConnect kaya ing ngisor iki:
-
- Tutul lambang 'Bluetooth Browser'.
- Tutul lambang 'Sambungake' ing piranti sing jenenge 'Latihan'.
-
- Waca karakteristik sing ora dilindhungi kaya ing ngisor iki:
-
- Tutul link 'Info Luwih' ing layanan sing ora dingerteni nganggo UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- Waca karakteristik sing ora dilindhungi, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c kanthi nutul lambang 'Waca'. Ora ana kejutan ing kene. Amarga karakteristik kasebut ora dilindhungi kanthi cara apa wae, bakal dikirim kanthi plainteks.
-
- Saiki maca karakteristik sing dilindhungi, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Ponsel sampeyan kudu njaluk sampeyan masangake lan nyambungake, pesen bisa beda-beda gumantung saka OS seluler sampeyan. Sawise sampeyan nampa panjalukan kanggo pasangan, sampeyan kudu pesen ing console minangka nderek:
Cathetan: Lampiran A ing mburi manual iki wis ringkesan saka Kapabilitas I / O lan cara pasangan kanggo referensi. Lampiran B ngringkes mode keamanan Bluetooth.
Konfigurasi Manager Keamanan
Pangatur keamanan minangka bagean saka tumpukan Bluetooth sing nemtokake fitur keamanan sing digunakake. Fitur kasebut kalebu proteksi man-in-the-middle (MITM), sambungan LE Secure (aka ECDH), mbutuhake konfirmasi kanggo ikatan, lsp. Manajer keamanan uga nangani kemampuan I / O sing digunakake kanggo nemtokake cara sing digunakake kanggo pasangan. / ikatan (pirsani Lampiran A kanggo ringkesan). Ing bagean iki sampeyan bakal weruh persiyapan prasaja.
- Setup SM kanthi konfigurasi sing dikarepake. Hardware kanggo lab iki nggampangake kanggo nampilake passkey ing console. Entri passkey minangka syarat kanggo ngaktifake proteksi MITM. Tambah kode ing ngisor iki kanggo sl_bt_system_boot_id pengendali acara. Iki mbisakake man-in-the-middle lan informs piranti remot sing kita duwe kemampuan kanggo nampilake passkey, nanging iku kabeh.
- Kanggo nampilake sandhi ing konsol, pawang acara dibutuhake kaya sing kapacak ing ngisor iki:
- Setel mode ikatan, jumlah ikatan maksimal, lsp. Gunakake kode ing ngisor iki kanggo miwiti:
Setelan iki bisa digunakake kanggo matesi kemampuan panyerang kanggo ikatan karo piranti sampeyan. Yen produk sampeyan mung kudu duwe siji pangguna, sampeyan bisa mbatesi ikatan maksimal dadi 1. Panggonan sing apik kanggo nambah panggilan kasebut yaiku ing sl_bt_system_boot_id pengendali acara. Kita ora bakal ngaktifake ikatan ing wektu iki kanggo nggawe lab liyane luwih lancar nanging kita nyetel kabijakan ikatan kanggo ngidini mung siji ikatan. Kanggo referensi, dokumentasi kanggo API iki ditemokake ing kene lan ing kene.
- Tambah pengendali acara kanggo sl_bt_evt_sm_bonded_id lan sl_bt_evt_sm_bonding_failed_id. Panggunaan utama kanggo acara kasebut saiki informatif nanging mengko ing laboratorium sampeyan bakal nambah fungsionalitas.
- Mbangun lan kerlip menyang papan target. Sambungake karo EFRConnect lan waca karakteristik sing dilindhungi kaya sadurunge. Wektu iki, sampeyan bakal weruh sandhi ditampilake ing console. Ketik sandhi iki ing ponsel nalika dijaluk.
- Coba konfirmasi ikatan. Fitur iki menehi pangguna kemampuan kanggo njaluk panjalukan ikatan dikonfirmasi. Mengkono menehi kontrol aplikasi liwat piranti peer sing disambungake. Salah sawijining kemungkinan yaiku mbutuhake pangguna menet tombol sadurunge ngidini jaminan kasebut.
- Bukak setelan Bluetooth ing ponsel lan copot ikatan menyang piranti EFR32. Implementasi telpon seluler beda-beda supaya langkah iki bisa uga ora perlu. Yen sampeyan ora ndeleng piranti 'Latihan' ing setelan Bluetooth, terusake menyang langkah sabanjure.
- Ing komponen piranti lunak, instal siji conto saka tombol handler prasaja.
- Kalebu header file sl_simple_button_instances.h ing app.c
- Tambah handler kanggo acara sl_bt_evt_sm_bonding_confirm_id. Tugas utama pawang acara iki yaiku menehi informasi marang pangguna yen piranti remot njaluk jaminan anyar.
- Tambah fungsi callback kanggo tombol handler prasaja kanggo ngirim sinyal menyang tumpukan Bluetooth nuduhake yen tombol wis dipencet. Iki ngatasi panggilan bali standar sing mung bali.
- Tambah handler acara sinyal eksternal. Acara iki diunggahake minangka respon kanggo nampa sinyal, kayata ing langkah sadurunge. Acara sinyal eksternal bakal digunakake kanggo konfirmasi ikatan.
- Ngganti telpon kanggo sl_bt_sm_configure mbutuhake konfirmasi iketan kayata
- Mbangun maneh lan lampu kilat.
- Sambungake karo EFRConnect lan waca karakteristik sing dilindhungi kaya sadurunge. Saiki sampeyan bakal weruh pesen ing console kaya mangkene:
Pencet PB0 kanggo konfirmasi ikatan. Saiki konsol bakal nampilake sandhi sing bakal dilebokake ing ponsel kanggo ikatan. Ketik sandhi kanggo ngrampungake proses ikatan.
Tip: Gunakake kasus gawan ing pawang acara kanggo print metu pesen nalika tumpukan ngirim acara sing ora ditangani. Tumpukan bisa uga nyoba ngandhani babagan sing penting.
Ngluwihi dhasar
Ing titik iki, sampeyan wis njupuk advantage saka fitur keamanan sing tumpukan kita wis kurban. Saiki ayo nambah implementasine kanthi nggunakake fitur sing wicaksana. Langkah-langkah ing ngisor iki opsional lan bebas saka saben liyane, sampeyan bisa mbangun lan kerlip sawise saben kanggo ndeleng prilaku utawa nyoba kabeh bebarengan.
- Pedhot ing nyoba jaminan gagal. Iki minangka papan sing apik kanggo ndeteksi ancaman. Yen piranti remot ora ndhukung enkripsi / otentikasi utawa mung ora duwe kunci sing bener, bisa uga dadi peretas. Dadi, ayo pedhot sambungan. Coba tambahake telpon menyang sl_bt_connection_close () ing acara sl_bt_sm_bonding_failed_id. API didokumentasikan ing kene.
Sampeyan bisa nyoba fitur iki kanthi ngetik sandhi sing salah.
- Mung ngidini ikatan ing wektu tartamtu. Iki mbatesi wektu panyerang kudu nggawe ikatan lan ngidini nggunakake fitur 'mung ngidini sambungan terikat'. Desainer bisa milih carane ngaktifake utawa mateni mode bondable. Kanggo tujuan demonstrasi ing kene, kita bakal ngaktifake 'mode persiyapan' karo PB1 lan nggunakake timer kanggo mateni sawise 30 detik.
- Instal conto liya saka antarmuka tombol prasaja. Iki bakal ngaktifake panggunaan PB1.
- Ngowahi callback kanggo ngirim sinyal beda kanggo tumpukan kanggo ngaktifake / mateni iketan. Asil kudu katon kaya iki:
- Ngowahi handler acara sinyal external supaya nangani sinyal anyar iki. Asil kudu kaya iki:
- Tambah handler acara kanggo acara sl_bt_evt_system_soft_timer_id. Iki bakal digunakake kanggo mateni mode persiyapan.
- Kode ing ngisor iki bisa digunakake kanggo ngaktifake mode bondable lan ngidini kabeh sambungan utawa mateni mode bondable lan mung ngidini sambungan saka piranti terikat:
- Tambah telpon ing ngisor iki ing sl_bt_system_boot_id pengendali acara
- Mbangun proyek lan kerlip menyang piranti.
- Coba sambungake menyang piranti nganggo EFRConnect. Sambungan kudu gagal.
- Saiki coba pencet PB1 sadurunge nyambungake karo EFRConnect. Wektu iki sambungan bakal sukses. Sawise 30 detik, sampeyan bakal weruh pesen ing konsol sing nuduhake yen piranti metu saka mode persiyapan. Iki tegese mode bondable saiki dipateni.
- Tambah keamanan nalika nggawe sambungan. Wiwit keamanan opsional, kita kudu njaluk sambungan ndhelik sanalika bisa tinimbang gumantung ing karakteristik GATT. API didokumentasikan ing kene. Panggonan apik kanggo nelpon API iki ing acara sl_bt_evt_connection_opened_id. Gagang sambungan kasedhiya ing variabel sambungan.
Identitas Aman
Saiki kita duwe piranti Bluetooth sing luwih aman, ayo nambah langkah otentikasi. Sampeyan wis ndeleng carane verifikasi identitas aman saka piranti vault karo baris printah ing labs latihan sadurungé. Ing bagean iki, kita bakal weruh carane siji piranti BLE bisa verifikasi identitas piranti BLE liyane kanthi njaluk chain certificate lan ngirim tantangan. Kabeh bagean vault aman duwe sertifikat piranti lan sertifikat kumpulan dhewe. Sertifikat pabrik lan oyod dikode kanthi keras menyang aplikasi klien supaya bisa verifikasi kabeh rantai sertifikat. Waca AN1268 kanggo rincian liyane babagan identitas aman.
- Temtokake buffer global kanggo nyimpen tandha bukti piranti kaya ing ngisor iki:
- Setel konfigurasi manajer keamanan kanggo nggunakake pasangan JustWorks. Iki ditindakake supaya sambungan kasebut dienkripsi. Ing praktik, proteksi MITM kudu digunakake nanging supaya laboratorium tetep prasaja, kita bakal nggunakake JustWorks. Ganti telpon menyang sl_bt_sm_configure bali menyang ing ngisor iki:
Uga, komentar metu telpon kanggo setup_mode(true) ing system_boot event handler.
- Mbukak helpers.c saka bahan sing kasedhiya lan nyalin isi menyang app.c. Fungsi callback iki nindakake tugas kayata segmentasi sertifikat supaya bisa dikirim liwat BLE, verifikasi chain sertifikat, lan ngasilake / verifikasi tantangan.
- Perlu kanggo nemtokake ukuran unit transfer maksimum (MTU) supaya sertifikat bisa dibagi lan dipasang maneh. Netepake variabel global kanggo nyimpen MTU kaya sing ditampilake ing kene:
Banjur nambah handler acara kanggo GATT MTU diijolke acara minangka kapacak ing ngisor iki:
- Ana telung karakteristik data pangguna sing bisa diwaca. Karakteristik kasebut digunakake kanggo komunikasi sertifikat piranti, sertifikat batch lan tantangan. Fungsi callback digunakake kanggo nangani panjalukan maca pangguna iki. Tambah handler kanggo nelpon fungsi iki minangka kapacak ing ngisor iki:
Callback nggunakake MTU saka langkah #2 menyang segmen lan ngirim sertifikat yen perlu. Uga nangani ngirim tantangan mlebu.
- Klien ngirim tantangan, nomer acak kanggo mlebu dening server, dening nulis siji karakteristik GATT. Mulane, aplikasi kasebut kudu duwe panangan kanggo acara panjaluk nulis pangguna kaya ing ngisor iki:
- Tambah dhukungan identitas sing aman files kanggo proyek:
- app_se_manager_macro.h, app_se_manager_secure_identity.c lan app_se_secure_identity.h saka bahan sing kasedhiya kanggo proyek kasebut. Iki files ngemot sawetara fungsi helper kanggo tugas kayata njupuk ukuran certificate, njupuk kunci umum piranti lan mlebu tantangan.
- Kalebu app_se_manager_secure_identity.h ing app.c.
- Impor kasedhiya gatt_configuration-attest.btconf saka bahan kasedhiya. Database GATT iki disebut bukti aman sing kalebu papat ciri sing bakal digunakake kanggo verifikasi identitas piranti kita. Iki kalebu sertifikat piranti, sertifikat batch, tantangan lan respon.
- Klien, sing digunakake kanggo simulasi piranti kayata gateway, diwenehake minangka proyek lengkap amarga luwih rumit kanggo mbangun. Umumé, operasi klien kaya ing ngisor iki:
- Pindai piranti sing ngiklanake layanan bukti sing aman lan nyambung menyang piranti kasebut.
- Nemokake layanan lan karakteristik database GATT.
- Maca sertifikat piranti lan kumpulan lan verifikasi rantai sertifikat nggunakake sertifikat pabrik lan oyod sing disimpen ing lampu kilat.
- Ngirim tantangan acak menyang server.
- Nyoba kanggo verifikasi respon kanggo tantangan.
- Nutup sambungan yen salah siji verifikasi gagal.
- Gawe lan kerlip proyek server menyang server WSTK / radioboard sampeyan.
- Impor proyek klien saka folder klien ing bahan sing kasedhiya. Mbangun lan kerlip proyek klien menyang klien WSTK / radioboard.
- Pencet reset ing klien WSTK lan mbukak console serial. Klien wiwit mindhai piranti sing ngiklanake layanan identitas sing aman lan bakal nyambung nalika nemokake.
- Klien bakal nampilake sawetara pesen kanggo nunjukake yen wis nemokake server kanthi layanan sing dikarepake lan pesen status babagan verifikasi rantai sertifikat.
- Yen verifikasi liwat, klien bakal ngasilake nomer acak, disebut tantangan, lan ngirim menyang server. Server bakal mlebu tantangan kasebut kanthi kunci piranti pribadi sing dicekel kanthi aman lan teken bali menyang klien, iki diarani respon tantangan. Klien banjur nggunakake kunci umum ing sertifikat piranti sing ditampa sadurunge kanggo verifikasi teken. Iki ditindakake kanggo konfirmasi manawa server pancen duwe kunci pribadi sing diklaim duwe. Yen tantangan kasebut diverifikasi kanthi bener, pesen bakal ditampilake kanggo efek kasebut; yen ora, sambungan ditutup, lan pesen ditampilake nerangake apa.
- Saiki kirim sertifikat sing ora bener kanggo konfirmasi manawa verifikasi kasebut pancen bisa digunakake. Sampeyan bisa ngowahi user_read_request_cb () kanggo ngrusak data sertifikat utawa respon tantangan.
Lampiran A - Kapabilitas I/O lan Metode Pasangan 
Lampiran B - Mode lan Tingkat Keamanan
Mode keamanan 1 minangka siji-sijine mode sing didhukung kanggo Bluetooth Low Energy ing tumpukan Silicon Labs. Tingkatan kasebut kaya ing ngisor iki:
- Level 1 ora ana keamanan
- Level 2 pasangan ora sah karo enkripsi
- Level 3 pasangan otentikasi karo enkripsi
- Tingkat 4 sambungan aman otentikasi kanthi enkripsi sing kuat (tukar kunci ECDH)
Dokumen / Sumber Daya
![]() |
silabs 21Q2 aman piranti BLE Keamanan Lab [pdf] Manual pangguna 21Q2 Lab Keamanan piranti BLE aman, Lab Keamanan piranti BLE aman, Lab Keamanan |