silabs 21Q2 ຄວາມປອດໄພອຸປະກອນ BLE ຫ້ອງທົດລອງຄວາມປອດໄພ
ຄູ່ມືຄວາມປອດໄພ BLE
ໃນຫ້ອງທົດລອງນີ້, ທ່ານຈະເຫັນວິທີການອອກແບບອຸປະກອນ BLE ທີ່ປອດໄພກວ່າ. ພວກເຮົາຈະເລີ່ມຕົ້ນດ້ວຍການສິ້ນສຸດview ກ່ຽວກັບວິທີການນໍາໃຊ້ບາງລັກສະນະ stack ແລະຍ້າຍໄປບາງຄໍາແນະນໍາທົ່ວໄປກ່ຽວກັບເຕັກນິກສໍາລັບການເຊື່ອມຕໍ່ທີ່ປອດໄພກວ່າແລະສຸດທ້າຍພວກເຮົາຈະເຫັນວິທີການນໍາໃຊ້ໃບຢັ້ງຢືນອຸປະກອນຜ່ານ BLE ເພື່ອກໍານົດອຸປະກອນຂ້າງຄຽງເປັນຂອງແທ້ຈິງ.
ການເລີ່ມຕົ້ນ
Bluetooth sampຄໍາຮ້ອງສະຫມັກທີ່ທ່ານຈະສ້າງຂຶ້ນແມ່ນມີຈຸດປະສົງເພື່ອໃຊ້ກັບ bootloader. ຖ້າທ່ານກໍາລັງເຮັດວຽກກັບຍີ່ຫໍ້ໃຫມ່ EFR32MG21B, ມັນຈະບໍ່ມີ bootloader. ທ່ານສາມາດຊອກຫາ bootloader ທີ່ສ້າງໄວ້ກ່ອນໃນເວທີ \bootloader\s ໄດ້ample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a ໂຟນເດີຂອງ SDK ຂອງທ່ານ.
- ເລີ່ມຕົ້ນດ້ວຍ soc-empty sample app. ນີ້ sample app ຖືກນໍາໃຊ້ເປັນແມ່ແບບແລະເຮັດໃຫ້ຈຸດເລີ່ມຕົ້ນທີ່ດີສໍາລັບຄໍາຮ້ອງສະຫມັກ BLE ໃດ.
- ເປີດຕົວຊ່ວຍສ້າງໂຄງການ Silicon Labs ຈາກ Simplicity Studio File ເມນູ -> ໃຫມ່.
- ເລືອກ BRD4181C ແລະກົດປຸ່ມ 'ຕໍ່ໄປ'.
- ຄລິກທີ່ກ່ອງໝາຍ 'Bluetooth (9)' ພາຍໃຕ້ປະເພດເຕັກໂນໂລຊີ.
- ຈຸດເດັ່ນ 'Bluetooth – SoC Empty' ຈາກນັ້ນຄລິກຕໍ່ໄປ.
- ໃຫ້ຄລິກໃສ່ປຸ່ມ 'ສໍາເລັດຮູບ'.
- ໃນປັດຈຸບັນທ່ານສາມາດເພີ່ມຄຸນລັກສະນະບາງຢ່າງເພື່ອເບິ່ງວ່າຄຸນລັກສະນະປ້ອງກັນແລະບໍ່ມີການປ້ອງກັນຖືກປະຕິບັດແຕກຕ່າງກັນແນວໃດ.
- ເປີດ slcp ຂອງໂຄງການ file ໂດຍການຄລິກສອງຄັ້ງຢູ່ໃນປ່ອງຢ້ຽມ Project Explorer
- ເນັ້ນແຖບ 'ສ່ວນປະກອບຂອງຊອບແວ' ແລະເປີດເຄື່ອງມືການຕັ້ງຄ່າ GATT ດັ່ງທີ່ສະແດງຢູ່ລຸ່ມນີ້:
ແລະໃຊ້ເຄື່ອງມືການນໍາເຂົ້າທີ່ສະແດງຂ້າງລຸ່ມນີ້ເພື່ອນໍາເຂົ້າ gatt_configuration.btconf file ຈາກໂຟນເດີເຊີບເວີໃນອຸປະກອນທີ່ສະໜອງໃຫ້.
ຖານຂໍ້ມູນ GATT ມີບໍລິການທີ່ກໍາຫນົດເອງ, ເອີ້ນວ່າ 'ການຝຶກອົບຮົມ', ມີຂໍ້ມູນບາງຢ່າງທີ່ຖືກປົກປ້ອງແລະບາງອັນທີ່ບໍ່ແມ່ນ. ນີ້ອະນຸຍາດໃຫ້ທ່ານປຽບທຽບສິ່ງທີ່ເກີດຂື້ນໃນເວລາທີ່ພະຍາຍາມເຂົ້າເຖິງລັກສະນະທີ່ຖືກປົກປ້ອງທຽບກັບລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນ. ນີ້ແມ່ນວິທີທີ່ໄວໃນການສ້າງອຸປະກອນທີ່ມີຄວາມປອດໄພຂັ້ນພື້ນຖານຫຼາຍ.
- ພວກເຮົາຈະໃຊ້ພອດ serial ເພື່ອພິມໃສ່ console ໃນ Simplicity Studio ເພື່ອຕິດຕາມສິ່ງທີ່ເກີດຂຶ້ນໃນແອັບພລິເຄຊັນ. ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະຊອກຫາອົງປະກອບເຫຼົ່ານີ້ແມ່ນໂດຍການຊອກຫາພວກມັນຢູ່ໃນກ່ອງໂຕ້ຕອບອົງປະກອບຂອງ SOFTWARE ດັ່ງທີ່ສະແດງ:
-
- ຕິດຕັ້ງອົງປະກອບ IO Stream USART
- ຕິດຕັ້ງອົງປະກອບ IO Stream Retarget STDIO
- ຕິດຕັ້ງອົງປະກອບ I/O ມາດຕະຖານ
- ຕິດຕັ້ງອົງປະກອບບັນທຶກ
- ເປີດອົງປະກອບການຄວບຄຸມກະດານແລະເປີດ 'ເປີດໃຊ້ Virtual COM UART'
- ຄລິກຂວາໃສ່ອະແດັບເຕີໃນແຜງ 'Debug adapters' ແລະເລືອກ 'Launch Console'. ເລືອກແຖບ 'Serial 1' ແລະວາງຕົວກະພິບໃນຊ່ອງໃສ່ຂໍ້ຄວາມຂອງປ່ອງຢ້ຽມ console ແລະກົດ enter ເພື່ອປຸກ console.
-
- ສ້າງຕົວແປທ້ອງຖິ່ນໃນ sl_bt_on_event(), ທີ່ພົບໃນ app.c, ເພື່ອບັນທຶກຕົວເຊື່ອມຕໍ່. ຕົວແປຕ້ອງຄົງທີ່ເນື່ອງຈາກຟັງຊັນນີ້ຖືກເອີ້ນແຕ່ລະຄັ້ງທີ່ເຫດການຖືກຍົກຂຶ້ນມາໂດຍ stack ແລະພວກເຮົາຕ້ອງການໃຫ້ຄ່າຄົງຢູ່. ຕົວຈັບການເຊື່ອມຕໍ່ຈະຖືກໃຊ້ໃນພາຍຫຼັງ
ພາກສ່ວນຂອງຫ້ອງທົດລອງ.
- ໃສ່ບາງ app_log() statements ສໍາລັບເຫດການເພື່ອເບິ່ງວ່າພວກເຮົາເຊື່ອມຕໍ່, ຮູບແບບຄວາມປອດໄພ, ແລະອື່ນໆ
-
- ລວມເອົາຫົວຂໍ້ app_log.h file
- sl_bt_evt_connection_opened – ພິມຕົວຈັບພັນທະບັດ ແລະບັນທຶກຕົວຈັບການເຊື່ອມຕໍ່. ຖ້າຕົວຈັບພັນທະບັດແມ່ນ 0xFF, ບໍ່ມີພັນທະບັດລະຫວ່າງອຸປະກອນທີ່ເຊື່ອມຕໍ່. ແກ້ໄຂຕົວຈັດການເຫດການທີ່ມີຢູ່ແລ້ວເພື່ອໃຫ້ມັນເບິ່ງຄືວ່ານີ້:
- sl_bt_evt_connection_parameters – ຮູບແບບຄວາມປອດໄພ. ນີ້ແມ່ນເຮັດໄດ້ເພື່ອໃຫ້ທ່ານສາມາດເບິ່ງໄດ້ໃນເວລາທີ່ຮູບແບບຄວາມປອດໄພມີການປ່ຽນແປງ. ມີຄວາມແຕກຕ່າງກັນໃນການຈໍານວນຂອງຮູບແບບຄວາມປອດໄພທີ່ຮູບແບບຄວາມປອດໄພ 1, ແມ່ນ enumerated ກັບຄ່າ 0, ແລະອື່ນໆ. ເພີ່ມຕົວຈັດການເຫດການຕໍ່ໄປນີ້ໃສ່ແອັບພລິເຄຊັນຂອງທ່ານ:
- sl_bt_evt_connection_closed_id. ຕົວຈັດການເຫດການນີ້ຖືກແກ້ໄຂເພື່ອອັບເດດຕົວຈັດການການເຊື່ອມຕໍ່. ຄ່າ 0xFF ຖືກໃຊ້ເພື່ອຊີ້ບອກວ່າບໍ່ມີການເຊື່ອມຕໍ່ທີ່ໃຊ້ງານ. ຄໍາສັ່ງ app_log() ຖືກນໍາໃຊ້ເພື່ອພິມອອກເຫດຜົນສໍາລັບການເຊື່ອມຕໍ່ຖືກປິດ, ບັນຊີລາຍຊື່ຂອງລະຫັດສະຖານະຢູ່ທີ່ນີ້. ແກ້ໄຂຕົວຈັດການເຫດການທີ່ມີຢູ່ແລ້ວເພື່ອໃຫ້ມັນເບິ່ງຄືວ່ານີ້:
- ລວມເອົາຫົວຂໍ້ app_log.h file
-
- ກໍ່ສ້າງແລະ flash ໂຄງການ. ໃນຈຸດນີ້, ພວກເຮົາຈະດໍາເນີນການ sample app ເພື່ອເບິ່ງວ່າມັນປະຕິບັດແນວໃດໂດຍບໍ່ມີການປ່ຽນແປງໃດໆ, ນອກຈາກຖານຂໍ້ມູນ GATT.
- ເຊື່ອມຕໍ່ກັບແອັບຯມືຖື EFRConnect ດັ່ງຕໍ່ໄປນີ້:
-
- ແຕະທີ່ໄອຄອນ 'Bluetooth Browser'.
- ແຕະທີ່ໄອຄອນ 'ເຊື່ອມຕໍ່' ໃນອຸປະກອນທີ່ມີຊື່ວ່າ 'ການຝຶກອົບຮົມ'.
-
- ອ່ານລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນດັ່ງຕໍ່ໄປນີ້:
-
- ແຕະທີ່ລິ້ງ 'ຂໍ້ມູນເພີ່ມເຕີມ' ພາຍໃຕ້ການບໍລິການທີ່ບໍ່ຮູ້ຈັກກັບ UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- ອ່ານລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນ, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c ໂດຍການແຕະທີ່ໄອຄອນ 'ອ່ານ'. ບໍ່ແປກໃຈຢູ່ທີ່ນີ້. ເນື່ອງຈາກລັກສະນະບໍ່ໄດ້ຖືກປົກປ້ອງໃນທາງໃດກໍ່ຕາມ, ມັນຈະຖືກສົ່ງໄປເປັນຂໍ້ຄວາມທໍາມະດາ.
-
- ຕອນນີ້ອ່ານລັກສະນະທີ່ຖືກປ້ອງກັນ, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. ໂທລະສັບມືຖືຂອງທ່ານຄວນຈະແຈ້ງໃຫ້ທ່ານຈັບຄູ່ແລະການເຊື່ອມຕໍ່, ຂໍ້ຄວາມອາດຈະແຕກຕ່າງກັນຂຶ້ນກັບ OS ໂທລະສັບມືຖືຂອງທ່ານ. ຫຼັງຈາກທີ່ທ່ານຍອມຮັບຄໍາຮ້ອງສະຫມັກຄູ່, ທ່ານຄວນຈະມີຂໍ້ຄວາມກ່ຽວກັບ console ດັ່ງຕໍ່ໄປນີ້:
ໝາຍເຫດ: ເອກະສານຊ້ອນທ້າຍ A ໃນຕອນທ້າຍຂອງຄູ່ມືສະບັບນີ້ມີບົດສະຫຼຸບຂອງຄວາມສາມາດ I/O ແລະວິທີການຈັບຄູ່ສໍາລັບການອ້າງອີງ. ເອກະສານຊ້ອນທ້າຍ B ສະຫຼຸບຮູບແບບຄວາມປອດໄພ Bluetooth.
ການຕັ້ງຄ່າຕົວຈັດການຄວາມປອດໄພ
ຕົວຈັດການຄວາມປອດໄພເປັນສ່ວນໜຶ່ງຂອງສະແຕມ Bluetooth ທີ່ກຳນົດວ່າຄຸນສົມບັດຄວາມປອດໄພໃດຖືກໃຊ້. ຄຸນສົມບັດເຫຼົ່ານີ້ລວມມີການປົກປ້ອງຜູ້ຊາຍໃນກາງ (MITM), ການເຊື່ອມຕໍ່ LE Secure (aka ECDH), ຮຽກຮ້ອງໃຫ້ມີການຢືນຢັນສໍາລັບການຜູກມັດ, ແລະອື່ນໆ. ຜູ້ຈັດການຄວາມປອດໄພຍັງຈັດການຄວາມສາມາດຂອງ I/O ທີ່ຖືກນໍາໃຊ້ເພື່ອກໍານົດວິທີການທີ່ຖືກນໍາໃຊ້ສໍາລັບການຈັບຄູ່. / ພັນທະບັດ (ເບິ່ງເອກະສານຊ້ອນທ້າຍ A ສໍາລັບບົດສະຫຼຸບ). ໃນພາກນີ້ທ່ານຈະເຫັນການຕັ້ງຄ່າງ່າຍດາຍ.
- ຕັ້ງຄ່າ SM ດ້ວຍການຕັ້ງຄ່າທີ່ຕ້ອງການ. ຮາດແວສໍາລັບຫ້ອງທົດລອງນີ້ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການສະແດງລະຫັດຜ່ານໃນ console. ການປ້ອນ Passkey ແມ່ນຄວາມຕ້ອງການເພື່ອເປີດໃຊ້ການປົກປ້ອງ MITM. ເພີ່ມລະຫັດຕໍ່ໄປນີ້ໃສ່ຕົວຈັດການເຫດການ sl_bt_system_boot_id ຂອງທ່ານ. ນີ້ເຮັດໃຫ້ຜູ້ຊາຍໃນກາງແລະແຈ້ງໃຫ້ອຸປະກອນຫ່າງໄກສອກຫຼີກວ່າພວກເຮົາມີຄວາມສາມາດໃນການສະແດງລະຫັດຜ່ານ, ແຕ່ວ່າທັງຫມົດ.
- ເພື່ອສະແດງ passkey ໃນ console, ຕ້ອງການຕົວຈັດການເຫດການດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້:
- ຕັ້ງຮູບແບບການຜູກມັດ, ຈໍານວນສູງສຸດຂອງພັນທະບັດ, ແລະອື່ນໆ. ໃຊ້ລະຫັດຕໍ່ໄປນີ້ເພື່ອເລີ່ມຕົ້ນ:
ການຕັ້ງຄ່າເຫຼົ່ານີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຈໍາກັດຄວາມສາມາດຂອງຜູ້ໂຈມຕີທີ່ຈະຜູກມັດກັບອຸປະກອນຂອງທ່ານ. ຖ້າຜະລິດຕະພັນຂອງທ່ານຕ້ອງການພຽງແຕ່ມີຜູ້ໃຊ້ດຽວ, ຫຼັງຈາກນັ້ນທ່ານສາມາດຈໍາກັດພັນທະບັດສູງສຸດເປັນ 1. ສະຖານທີ່ທີ່ດີທີ່ຈະເພີ່ມການໂທເຫຼົ່ານີ້ແມ່ນຢູ່ໃນຕົວຈັດການເຫດການ sl_bt_system_boot_id. ພວກເຮົາຈະບໍ່ເປີດໃຊ້ການຜູກມັດໃນເວລານີ້ເພື່ອເຮັດໃຫ້ສ່ວນທີ່ເຫຼືອຂອງຫ້ອງທົດລອງດໍາເນີນໄປຢ່າງຄ່ອງແຄ້ວ, ແຕ່ພວກເຮົາກໍານົດນະໂຍບາຍຄວາມຜູກພັນເພື່ອໃຫ້ພຽງແຕ່ພັນທະບັດດຽວເທົ່ານັ້ນ. ສໍາລັບການອ້າງອິງ, ເອກະສານສໍາລັບ APIs ເຫຼົ່ານີ້ແມ່ນພົບເຫັນຢູ່ທີ່ນີ້ແລະທີ່ນີ້ .
- ເພີ່ມຕົວຈັດການເຫດການສໍາລັບ sl_bt_evt_sm_bonded_id ແລະ sl_bt_evt_sm_bonding_failed_id. ການນໍາໃຊ້ຕົ້ນຕໍສໍາລັບເຫດການເຫຼົ່ານີ້ແມ່ນໃຫ້ຂໍ້ມູນໃນປັດຈຸບັນແຕ່ຕໍ່ມາໃນຫ້ອງທົດລອງທ່ານຈະເພີ່ມຫນ້າທີ່.
- ສ້າງແລະ flash ກັບຄະນະເປົ້າຫມາຍ. ເຊື່ອມຕໍ່ກັບ EFRConnect ແລະອ່ານລັກສະນະປົກປັກຮັກສາດັ່ງທີ່ຜ່ານມາ. ເວລານີ້, ທ່ານຈະເຫັນລະຫັດຜ່ານທີ່ສະແດງຢູ່ໃນ console. ໃສ່ລະຫັດຜ່ານນີ້ຢູ່ໃນໂທລະສັບມືຖືຂອງເຈົ້າເມື່ອຖືກເຕືອນ.
- ລອງໃຊ້ການຢືນຢັນການຜູກມັດ. ຄຸນນະສົມບັດນີ້ເຮັດໃຫ້ຜູ້ໃຊ້ສາມາດຮຽກຮ້ອງໃຫ້ຄໍາຮ້ອງຂໍການຜູກມັດໄດ້ຮັບການຢືນຢັນ. ການເຮັດດັ່ງນັ້ນເຮັດໃຫ້ແອັບພລິເຄຊັນຄວບຄຸມວ່າອຸປະກອນເພື່ອນມິດໃດທີ່ມັນຜູກມັດກັບ. ຄວາມເປັນໄປໄດ້ຫນຶ່ງແມ່ນຮຽກຮ້ອງໃຫ້ຜູ້ໃຊ້ກົດປຸ່ມຫນຶ່ງກ່ອນທີ່ຈະອະນຸຍາດໃຫ້ພັນທະບັດ.
- ເປີດການຕັ້ງຄ່າ Bluetooth ໃນໂທລະສັບມືຖືຂອງທ່ານແລະເອົາພັນທະບັດກັບອຸປະກອນ EFR32. ການປະຕິບັດໂທລະສັບມືຖືແຕກຕ່າງກັນດັ່ງນັ້ນຂັ້ນຕອນນີ້ອາດຈະບໍ່ຈໍາເປັນ. ຖ້າທ່ານບໍ່ເຫັນອຸປະກອນ 'ການຝຶກອົບຮົມ' ໃນການຕັ້ງຄ່າ Bluetooth ຂອງທ່ານ, ພຽງແຕ່ດໍາເນີນການຂັ້ນຕອນຕໍ່ໄປ.
- ໃນອົງປະກອບຂອງຊອບແວ, ຕິດຕັ້ງຫນຶ່ງຕົວຢ່າງຂອງຕົວຈັດການປຸ່ມງ່າຍດາຍ.
- ລວມເອົາຫົວ file sl_simple_button_instances.h ໃນ app.c
- ເພີ່ມຕົວຈັດການສຳລັບເຫດການ sl_bt_evt_sm_bonding_confirm_id. ວຽກງານຕົ້ນຕໍຂອງຜູ້ຈັດການເຫດການນີ້ແມ່ນເພື່ອແຈ້ງໃຫ້ຜູ້ໃຊ້ຮູ້ວ່າອຸປະກອນຫ່າງໄກສອກຫຼີກກໍາລັງຮ້ອງຂໍພັນທະບັດໃຫມ່.
- ເພີ່ມຟັງຊັນໂທກັບສໍາລັບຕົວຈັບປຸ່ມທີ່ງ່າຍດາຍເພື່ອສົ່ງສັນຍານໄປຫາ stack Bluetooth ຊີ້ບອກວ່າປຸ່ມໄດ້ຖືກກົດ. ອັນນີ້ overrides ຄ່າເລີ່ມຕົ້ນ callback ທີ່ພຽງແຕ່ກັບຄືນມາ.
- ເພີ່ມຕົວຈັດການເຫດການສັນຍານພາຍນອກ. ເຫດການນີ້ໄດ້ຖືກຍົກຂຶ້ນມາເພື່ອຕອບສະຫນອງຕໍ່ການໄດ້ຮັບສັນຍານ, ເຊັ່ນໃນຂັ້ນຕອນທີ່ຜ່ານມາ. ເຫດການສັນຍານພາຍນອກຈະຖືກນໍາໃຊ້ເພື່ອຢືນຢັນການຜູກມັດ.
- ປ່ຽນການໂທຫາ sl_bt_sm_configure ເພື່ອຮຽກຮ້ອງໃຫ້ມີການຢືນຢັນການຜູກມັດເຊັ່ນ
- ສ້າງໃຫມ່ແລະ flash.
- ເຊື່ອມຕໍ່ກັບ EFRConnect ແລະອ່ານລັກສະນະປົກປັກຮັກສາດັ່ງທີ່ຜ່ານມາ. ໃນປັດຈຸບັນທ່ານຈະເຫັນຂໍ້ຄວາມຢູ່ໃນ console ດັ່ງຕໍ່ໄປນີ້:
ກົດ PB0 ເພື່ອຢືນຢັນການຜູກມັດ. ໃນປັດຈຸບັນ console ຈະສະແດງ passkey ທີ່ຈະເຂົ້າໄປໃນໂທລະສັບມືຖືສໍາລັບການຜູກມັດ. ໃສ່ passkey ເພື່ອເຮັດສໍາເລັດຂະບວນການຜູກມັດ.
ເຄັດລັບ: ໃຊ້ກໍລະນີເລີ່ມຕົ້ນໃນຕົວຈັດການເຫດການເພື່ອພິມຂໍ້ຄວາມອອກເມື່ອ stack ສົ່ງເຫດການທີ່ບໍ່ຖືກຈັດການ. stack ອາດຈະພະຍາຍາມບອກທ່ານບາງສິ່ງບາງຢ່າງທີ່ສໍາຄັນ.
ນອກເຫນືອຈາກພື້ນຖານ
ໃນຈຸດນີ້, ທ່ານໄດ້ປະຕິບັດ advantage ຂອງຄຸນນະສົມບັດຄວາມປອດໄພທີ່ stack ຂອງພວກເຮົາມີໃຫ້. ຕອນນີ້ໃຫ້ເຮົາປັບປຸງການຈັດຕັ້ງປະຕິບັດຜ່ານການນຳໃຊ້ຄຸນສົມບັດທີ່ສະຫລາດໃນການກໍາຈັດຂອງພວກເຮົາ. ຂັ້ນຕອນຕໍ່ໄປນີ້ແມ່ນທາງເລືອກແລະເປັນເອກະລາດຂອງກັນແລະກັນ, ທ່ານສາມາດສ້າງແລະກະພິບຫຼັງຈາກແຕ່ລະຄົນເພື່ອເບິ່ງພຶດຕິກໍາຫຼືພະຍາຍາມທັງຫມົດຮ່ວມກັນ.
- ຕັດການເຊື່ອມຕໍ່ໃນຄວາມພະຍາຍາມພັນທະບັດທີ່ລົ້ມເຫລວ. ນີ້ແມ່ນສະຖານທີ່ທີ່ດີທີ່ຈະກວດພົບໄພຂົ່ມຂູ່. ຖ້າອຸປະກອນທາງໄກບໍ່ຮອງຮັບການເຂົ້າລະຫັດ/ການພິສູດຢືນຢັນ ຫຼືພຽງແຕ່ບໍ່ມີກະແຈທີ່ຖືກຕ້ອງ, ມັນອາດຈະເປັນແຮກເກີ. ດັ່ງນັ້ນ, ໃຫ້ພວກເຮົາທໍາລາຍການເຊື່ອມຕໍ່. ລອງເພີ່ມການໂທຫາ sl_bt_connection_close() ໃນເຫດການ sl_bt_sm_bonding_failed_id. API ແມ່ນບັນທຶກຢູ່ທີ່ນີ້.
ທ່ານສາມາດທົດສອບຄຸນສົມບັດນີ້ໄດ້ໂດຍການໃສ່ລະຫັດຜ່ານຜິດ.
- ພຽງແຕ່ອະນຸຍາດໃຫ້ຜູກມັດໃນບາງເວລາ. ນີ້ຈໍາກັດເວລາທີ່ຜູ້ໂຈມຕີຕ້ອງສ້າງພັນທະບັດແລະເຮັດໃຫ້ສາມາດນໍາໃຊ້ຄຸນສົມບັດ 'ອະນຸຍາດພຽງແຕ່ການເຊື່ອມຕໍ່ທີ່ຖືກຜູກມັດ'. ຜູ້ອອກແບບສາມາດເລືອກວິທີເປີດໃຊ້ ຫຼືປິດໂໝດການຜູກມັດໄດ້. ສໍາລັບຈຸດປະສົງການສາທິດຢູ່ທີ່ນີ້, ພວກເຮົາຈະເປີດໃຊ້ 'ຮູບແບບການຕັ້ງຄ່າ' ກັບ PB1 ແລະໃຊ້ໂມງຈັບເວລາເພື່ອປິດມັນຫຼັງຈາກ 30 ວິນາທີ.
- ຕິດຕັ້ງຕົວຢ່າງທີສອງຂອງການໂຕ້ຕອບປຸ່ມງ່າຍດາຍ. ນີ້ຈະຊ່ວຍໃຫ້ການນໍາໃຊ້ PB1.
- ແກ້ໄຂການໂທກັບເພື່ອສົ່ງສັນຍານທີ່ແຕກຕ່າງກັນໄປຫາ stack ເພື່ອເປີດໃຊ້ / ປິດການຜູກມັດ. ຜົນໄດ້ຮັບຄວນຈະມີລັກສະນະເຊັ່ນນີ້:
- ແກ້ໄຂຕົວຈັດການເຫດການສັນຍານພາຍນອກເພື່ອໃຫ້ມັນຈັດການກັບສັນຍານໃຫມ່ນີ້. ຜົນໄດ້ຮັບຄວນຈະເປັນເຊັ່ນນີ້:
- ເພີ່ມຕົວຈັດການເຫດການສໍາລັບເຫດການ sl_bt_evt_system_soft_timer_id. ນີ້ຈະໃຊ້ເພື່ອປິດການໃຊ້ງານຮູບແບບການຕັ້ງຄ່າ.
- ລະຫັດຕໍ່ໄປນີ້ສາມາດໃຊ້ເພື່ອເປີດໃຊ້ໂໝດຜູກມັດໄດ້ ແລະອະນຸຍາດໃຫ້ເຊື່ອມຕໍ່ທັງໝົດ ຫຼືປິດການນຳໃຊ້ໂໝດຜູກມັດໄດ້ ແລະອະນຸຍາດໃຫ້ເຊື່ອມຕໍ່ຈາກອຸປະກອນທີ່ຜູກມັດໄດ້ເທົ່ານັ້ນ:
- ເພີ່ມການໂທຕໍ່ໄປນີ້ໃນຕົວຈັດການເຫດການ sl_bt_system_boot_id
- ສ້າງໂຄງການແລະ flash ມັນກັບອຸປະກອນ.
- ລອງເຊື່ອມຕໍ່ກັບອຸປະກອນດ້ວຍ EFRConnect. ການເຊື່ອມຕໍ່ຄວນຈະລົ້ມເຫລວ.
- ຕອນນີ້ລອງກົດ PB1 ກ່ອນທີ່ຈະເຊື່ອມຕໍ່ກັບ EFRConnect. ເວລານີ້ການເຊື່ອມຕໍ່ຈະປະສົບຜົນສໍາເລັດ. ຫຼັງຈາກ 30 ວິນາທີທ່ານຈະເຫັນຂໍ້ຄວາມໃນ console ຊີ້ບອກວ່າອຸປະກອນກໍາລັງອອກຈາກຮູບແບບການຕັ້ງຄ່າ. ນີ້ຫມາຍຄວາມວ່າໃນປັດຈຸບັນຮູບແບບ bondable ໄດ້ຖືກປິດການໃຊ້ງານ.
- ເພີ່ມທະວີຄວາມປອດໄພໃນການສ້າງການເຊື່ອມຕໍ່. ເນື່ອງຈາກຄວາມປອດໄພເປັນທາງເລືອກ, ພວກເຮົາຄວນຮ້ອງຂໍໃຫ້ມີການເຊື່ອມຕໍ່ເຂົ້າລະຫັດໄວເທົ່າທີ່ຈະເປັນໄປໄດ້ແທນທີ່ຈະອີງໃສ່ຄຸນລັກສະນະ GATT. API ແມ່ນບັນທຶກຢູ່ທີ່ນີ້. ສະຖານທີ່ທີ່ດີທີ່ຈະໂທຫາ API ນີ້ແມ່ນຢູ່ໃນເຫດການ sl_bt_evt_connection_opened_id. ຕົວຈັບການເຊື່ອມຕໍ່ແມ່ນມີຢູ່ໃນຕົວແປການເຊື່ອມຕໍ່.
ການລະບຸຕົວຕົນທີ່ປອດໄພ
ຕອນນີ້ພວກເຮົາມີອຸປະກອນ Bluetooth ທີ່ປອດໄພກວ່າ, ໃຫ້ປັບປຸງຂັ້ນຕອນການພິສູດຢືນຢັນ. ທ່ານເຄີຍເຫັນວິທີການຢັ້ງຢືນຕົວຕົນທີ່ປອດໄພຂອງອຸປະກອນຫ້ອງໂຖງດ້ວຍບັນທັດຄໍາສັ່ງຢູ່ໃນຫ້ອງທົດລອງການຝຶກອົບຮົມກ່ອນຫນ້າ. ໃນພາກນີ້, ພວກເຮົາຈະເບິ່ງວິທີການຫນຶ່ງອຸປະກອນ BLE ສາມາດຢືນຢັນຕົວຕົນຂອງອຸປະກອນ BLE ອື່ນໂດຍການຮ້ອງຂໍລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນຂອງມັນແລະສົ່ງສິ່ງທ້າທາຍ. ພາກສ່ວນທີ່ປອດໄພທັງໝົດຖືໃບຮັບຮອງອຸປະກອນ ແລະໃບຢັ້ງຢືນຊຸດຂອງຕົນເອງ. ໂຮງງານຜະລິດແລະໃບຢັ້ງຢືນຮາກແມ່ນລະຫັດຍາກເຂົ້າໄປໃນຄໍາຮ້ອງສະຫມັກລູກຄ້າເພື່ອໃຫ້ສາມາດກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນທັງຫມົດ. ເບິ່ງ AN1268 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຕົວຕົນທີ່ປອດໄພ.
- ກໍານົດ buffer ທົ່ວໂລກສໍາລັບການເກັບຮັກສາລາຍເຊັນຢັ້ງຢືນອຸປະກອນດັ່ງລຸ່ມນີ້:
- ຕັ້ງຄ່າຕົວຈັດການຄວາມປອດໄພເພື່ອໃຊ້ການຈັບຄູ່ JustWorks. ນີ້ແມ່ນເຮັດເພື່ອໃຫ້ການເຊື່ອມຕໍ່ຖືກເຂົ້າລະຫັດ. ໃນການປະຕິບັດ, ການປົກປ້ອງ MITM ຄວນຖືກນໍາໃຊ້ແຕ່ເພື່ອໃຫ້ຫ້ອງທົດລອງງ່າຍດາຍ, ພວກເຮົາຈະໃຊ້ JustWorks. ປ່ຽນການໂທຫາ sl_bt_sm_configure ກັບຄືນໄປບ່ອນຕໍ່ໄປນີ້:
ນອກຈາກນີ້, ໃຫ້ຄໍາຄິດຄໍາເຫັນອອກການໂທຫາ setup_mode (true) ໃນຕົວຈັດການເຫດການ system_boot.
- ເປີດ helpers.c ຈາກເອກະສານທີ່ສະໜອງໃຫ້ ແລະຄັດລອກເນື້ອໃນໃສ່ app.c. ຫນ້າທີ່ເອີ້ນຄືນເຫຼົ່ານີ້ປະຕິບັດວຽກງານເຊັ່ນການແບ່ງສ່ວນໃບຢັ້ງຢືນເພື່ອໃຫ້ພວກເຂົາສາມາດສົ່ງຜ່ານ BLE, ການກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນ, ແລະການສ້າງ / ກວດສອບສິ່ງທ້າທາຍ.
- ມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະກໍານົດຂະຫນາດຫນ່ວຍການໂອນສູງສຸດ (MTU) ເພື່ອໃຫ້ໃບຢັ້ງຢືນສາມາດຖືກແບ່ງອອກແລະປະກອບໃຫມ່. ກໍານົດຕົວແປທົ່ວໂລກເພື່ອບັນທຶກ MTU ດັ່ງທີ່ສະແດງຢູ່ທີ່ນີ້:
ຫຼັງຈາກນັ້ນ, ເພີ່ມຕົວຈັດການເຫດການສໍາລັບເຫດການແລກປ່ຽນ GATT MTU ດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້:
- ມີສາມລັກສະນະຂໍ້ມູນຜູ້ໃຊ້ທີ່ສາມາດອ່ານໄດ້. ຄຸນລັກສະນະເຫຼົ່ານີ້ຖືກນໍາໃຊ້ເພື່ອຕິດຕໍ່ສື່ສານໃບຢັ້ງຢືນອຸປະກອນ, ໃບຢັ້ງຢືນ batch ແລະສິ່ງທ້າທາຍ. ຟັງຊັນໂທກັບຖືກໃຊ້ເພື່ອຈັດການກັບການຮ້ອງຂໍການອ່ານຂອງຜູ້ໃຊ້ເຫຼົ່ານີ້. ເພີ່ມຕົວຈັດການເພື່ອເອີ້ນຟັງຊັນນີ້ຕາມຮູບຂ້າງລຸ່ມນີ້:
ການເອີ້ນຄືນໃຊ້ MTU ຈາກຂັ້ນຕອນ #2 ເພື່ອແບ່ງສ່ວນ ແລະສົ່ງໃບຢັ້ງຢືນຕາມຄວາມຕ້ອງການ. ມັນຍັງຈັດການສົ່ງສິ່ງທ້າທາຍທີ່ໄດ້ລົງນາມ.
- ລູກຄ້າສົ່ງຄໍາທ້າທາຍ, ຕົວເລກແບບສຸ່ມທີ່ຈະຖືກເຊັນໂດຍເຄື່ອງແມ່ຂ່າຍ, ໂດຍການຂຽນຫນຶ່ງໃນລັກສະນະ GATT. ດ້ວຍເຫດຜົນນີ້, ແອັບພລິເຄຊັນຕ້ອງມີຕົວຈັດການສໍາລັບເຫດການການຮ້ອງຂໍຂອງຜູ້ໃຊ້ຂຽນດັ່ງຕໍ່ໄປນີ້:
- ເພີ່ມການຮອງຮັບຕົວຕົນທີ່ປອດໄພ files ກັບໂຄງການ:
- app_se_manager_macro.h, app_se_manager_secure_identity.c ແລະ app_se_secure_identity.h ຈາກອຸປະກອນທີ່ສະໜອງໃຫ້ກັບໂຄງການ. ເຫຼົ່ານີ້ files ມີບາງຫນ້າທີ່ຜູ້ຊ່ວຍສໍາລັບວຽກງານເຊັ່ນ: ການໄດ້ຮັບຂະຫນາດຂອງໃບຢັ້ງຢືນ, ການໄດ້ຮັບລະຫັດສາທາລະນະຂອງອຸປະກອນແລະການເຊັນສິ່ງທ້າທາຍ.
- ລວມເອົາ app_se_manager_secure_identity.h ໃນ app.c.
- ນຳເຂົ້າ gatt_configuration-attest.btconf ທີ່ສະໜອງໃຫ້ຈາກວັດສະດຸທີ່ສະໜອງໃຫ້. ຖານຂໍ້ມູນ GATT ນີ້ເອີ້ນວ່າການຢັ້ງຢືນທີ່ປອດໄພເຊິ່ງປະກອບມີສີ່ລັກສະນະທີ່ຈະຖືກນໍາໃຊ້ເພື່ອຢືນຢັນຕົວຕົນຂອງອຸປະກອນຂອງພວກເຮົາ. ເຫຼົ່ານີ້ລວມມີໃບຢັ້ງຢືນອຸປະກອນ, ໃບຢັ້ງຢືນຊຸດ, ສິ່ງທ້າທາຍແລະການຕອບໂຕ້.
- ລູກຄ້າ, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອຈໍາລອງອຸປະກອນເຊັ່ນ: ປະຕູຮົ້ວ, ໄດ້ຖືກສະຫນອງໃຫ້ເປັນໂຄງການທີ່ສົມບູນນັບຕັ້ງແຕ່ມັນມີຄວາມຊັບຊ້ອນຫຼາຍໃນການກໍ່ສ້າງ. ໂດຍທົ່ວໄປ, ການດໍາເນີນງານຂອງລູກຄ້າແມ່ນດັ່ງຕໍ່ໄປນີ້:
- ສະແກນອຸປະກອນໂຄສະນາການບໍລິການຢັ້ງຢືນທີ່ປອດໄພ ແລະເຊື່ອມຕໍ່ກັບພວກມັນ.
- ຄົ້ນພົບການບໍລິການຖານຂໍ້ມູນ GATT ແລະຄຸນລັກສະນະ.
- ອ່ານອຸປະກອນແລະໃບຢັ້ງຢືນ batch ແລະກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນໂດຍໃຊ້ໂຮງງານຜະລິດແລະໃບຢັ້ງຢືນຮາກທີ່ມັນຖືກເກັບໄວ້ໃນແຟດ.
- ສົ່ງສິ່ງທ້າທາຍແບບສຸ່ມໄປຫາເຄື່ອງແມ່ຂ່າຍ.
- ຄວາມພະຍາຍາມທີ່ຈະກວດສອບການຕອບສະຫນອງຕໍ່ສິ່ງທ້າທາຍ.
- ປິດການເຊື່ອມຕໍ່ຖ້າການຢັ້ງຢືນທັງສອງລົ້ມເຫລວ.
- ສ້າງແລະກະພິບໂຄງການເຊີບເວີກັບເຄື່ອງແມ່ຂ່າຍຂອງທ່ານ WSTK /radioboard.
- ນໍາເຂົ້າໂຄງການລູກຄ້າຈາກໂຟເດີລູກຄ້າໃນເອກະສານທີ່ສະຫນອງໃຫ້. ສ້າງແລະກະພິບໂຄງການລູກຄ້າໃຫ້ລູກຄ້າ WSTK/radioboard ຂອງທ່ານ.
- ກົດຣີເຊັດເທິງລູກຄ້າ WSTK ແລະເປີດ serial console. ລູກຄ້າເລີ່ມການສະແກນຫາອຸປະກອນໂຄສະນາການບໍລິການຕົວຕົນທີ່ປອດໄພຂອງພວກເຮົາ ແລະຈະເຊື່ອມຕໍ່ເມື່ອມັນພົບອັນໜຶ່ງ.
- ລູກຄ້າຈະສະແດງຂໍ້ຄວາມບາງຢ່າງເພື່ອຊີ້ບອກວ່າມັນໄດ້ພົບເຫັນເຄື່ອງແມ່ຂ່າຍທີ່ມີການບໍລິການທີ່ຕ້ອງການແລະຂໍ້ຄວາມສະຖານະພາບກ່ຽວກັບການຢັ້ງຢືນລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນ.
- ຖ້າການຢັ້ງຢືນຜ່ານ, ລູກຄ້າຈະສ້າງຕົວເລກແບບສຸ່ມ, ເອີ້ນວ່າສິ່ງທ້າທາຍ, ແລະສົ່ງມັນໄປຫາເຄື່ອງແມ່ຂ່າຍ. ເຊີບເວີຈະເຊັນການທ້າທາຍດ້ວຍກະແຈອຸປະກອນສ່ວນຕົວທີ່ຍຶດໄວ້ຢ່າງປອດໄພ ແລະລາຍເຊັນຄືນໃຫ້ກັບລູກຄ້າ, ອັນນີ້ເອີ້ນວ່າການຕອບໂຕ້ສິ່ງທ້າທາຍ. ຫຼັງຈາກນັ້ນ, ລູກຄ້າໃຊ້ລະຫັດສາທາລະນະໃນໃບຢັ້ງຢືນອຸປະກອນທີ່ໄດ້ຮັບກ່ອນຫນ້ານີ້ເພື່ອກວດສອບລາຍເຊັນ. ນີ້ແມ່ນເຮັດເພື່ອຢືນຢັນວ່າເຄື່ອງແມ່ຂ່າຍກໍ່ມີລະຫັດສ່ວນຕົວທີ່ມັນອ້າງວ່າມີ. ຖ້າການທ້າທາຍຖືກກວດສອບຢ່າງຖືກຕ້ອງ, ຂໍ້ຄວາມຈະສະແດງຜົນນັ້ນ; ຖ້າບໍ່ດັ່ງນັ້ນ, ການເຊື່ອມຕໍ່ຖືກປິດ, ແລະຂໍ້ຄວາມຈະສະແດງອະທິບາຍວ່າເປັນຫຍັງ.
- ຕອນນີ້ສົ່ງໃບຢັ້ງຢືນທີ່ບໍ່ຖືກຕ້ອງເພື່ອຢືນຢັນວ່າການຢັ້ງຢືນໄດ້ຜົນແທ້. ທ່ານສາມາດດັດແປງ user_read_request_cb() ທີ່ຈະເສຍຫາຍທັງຂໍ້ມູນໃບຢັ້ງຢືນຫຼືຄໍາຕອບທີ່ທ້າທາຍ.
ເອກະສານຊ້ອນທ້າຍ A – ຄວາມສາມາດຂອງ I/O ແລະວິທີການຈັບຄູ່ 
ເອກະສານຊ້ອນທ້າຍ B – ຮູບແບບຄວາມປອດໄພ ແລະລະດັບ
ໂໝດຄວາມປອດໄພ 1 ເປັນໂໝດດຽວທີ່ຮອງຮັບ Bluetooth Low Energy ໃນ Silicon Labs' stack. ລະດັບດັ່ງຕໍ່ໄປນີ້:
- ລະດັບ 1 ບໍ່ມີຄວາມປອດໄພ
- ລະດັບ 2 ການຈັບຄູ່ທີ່ບໍ່ໄດ້ຮັບການຢືນຢັນດ້ວຍການເຂົ້າລະຫັດ
- ລະດັບ 3 ຢືນຢັນການຈັບຄູ່ກັບການເຂົ້າລະຫັດ
- ການເຊື່ອມຕໍ່ທີ່ປອດໄພຂອງການກວດສອບລະດັບ 4 ທີ່ມີການເຂົ້າລະຫັດທີ່ເຂັ້ມແຂງ (ການແລກປ່ຽນກະແຈ ECDH)
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
silabs 21Q2 ຄວາມປອດໄພອຸປະກອນ BLE ຫ້ອງທົດລອງຄວາມປອດໄພ [pdf] ຄູ່ມືຜູ້ໃຊ້ ຫ້ອງທົດລອງຄວາມປອດໄພອຸປະກອນ BLE ທີ່ປອດໄພ 21Q2, ຫ້ອງທົດລອງຄວາມປອດໄພອຸປະກອນ BLE ທີ່ປອດໄພ, ຫ້ອງທົດລອງຄວາມປອດໄພ |