silabs 21Q2 ຄວາມປອດໄພອຸປະກອນ BLE ຫ້ອງທົດລອງຄວາມປອດໄພ

ຄູ່ມືຄວາມປອດໄພ BLE

ໃນຫ້ອງທົດລອງນີ້, ທ່ານຈະເຫັນວິທີການອອກແບບອຸປະກອນ BLE ທີ່ປອດໄພກວ່າ. ພວກເຮົາຈະເລີ່ມຕົ້ນດ້ວຍການສິ້ນສຸດview ກ່ຽວກັບວິທີການນໍາໃຊ້ບາງລັກສະນະ stack ແລະຍ້າຍໄປບາງຄໍາແນະນໍາທົ່ວໄປກ່ຽວກັບເຕັກນິກສໍາລັບການເຊື່ອມຕໍ່ທີ່ປອດໄພກວ່າແລະສຸດທ້າຍພວກເຮົາຈະເຫັນວິທີການນໍາໃຊ້ໃບຢັ້ງຢືນອຸປະກອນຜ່ານ BLE ເພື່ອກໍານົດອຸປະກອນຂ້າງຄຽງເປັນຂອງແທ້ຈິງ.

ການເລີ່ມຕົ້ນ

Bluetooth sampຄໍາຮ້ອງສະຫມັກທີ່ທ່ານຈະສ້າງຂຶ້ນແມ່ນມີຈຸດປະສົງເພື່ອໃຊ້ກັບ bootloader. ຖ້າທ່ານກໍາລັງເຮັດວຽກກັບຍີ່ຫໍ້ໃຫມ່ EFR32MG21B, ມັນຈະບໍ່ມີ bootloader. ທ່ານ​ສາ​ມາດ​ຊອກ​ຫາ bootloader ທີ່​ສ້າງ​ໄວ້​ກ່ອນ​ໃນ​ເວ​ທີ \bootloader\s ໄດ້​ample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a ໂຟນເດີຂອງ SDK ຂອງທ່ານ.

  1. ເລີ່ມຕົ້ນດ້ວຍ soc-empty sample app. ນີ້ sample app ຖືກນໍາໃຊ້ເປັນແມ່ແບບແລະເຮັດໃຫ້ຈຸດເລີ່ມຕົ້ນທີ່ດີສໍາລັບຄໍາຮ້ອງສະຫມັກ BLE ໃດ.
    1. ເປີດຕົວຊ່ວຍສ້າງໂຄງການ Silicon Labs ຈາກ Simplicity Studio File ເມນູ -> ໃຫມ່.
    2. ເລືອກ BRD4181C ແລະກົດປຸ່ມ 'ຕໍ່ໄປ'.
    3. ຄລິກທີ່ກ່ອງໝາຍ 'Bluetooth (9)' ພາຍໃຕ້ປະເພດເຕັກໂນໂລຊີ.
    4. ຈຸດເດັ່ນ 'Bluetooth – SoC Empty' ຈາກນັ້ນຄລິກຕໍ່ໄປ.
    5. ໃຫ້ຄລິກໃສ່ປຸ່ມ 'ສໍາເລັດຮູບ'.
  2. ໃນປັດຈຸບັນທ່ານສາມາດເພີ່ມຄຸນລັກສະນະບາງຢ່າງເພື່ອເບິ່ງວ່າຄຸນລັກສະນະປ້ອງກັນແລະບໍ່ມີການປ້ອງກັນຖືກປະຕິບັດແຕກຕ່າງກັນແນວໃດ.
    1. ເປີດ slcp ຂອງໂຄງການ file ໂດຍການຄລິກສອງຄັ້ງຢູ່ໃນປ່ອງຢ້ຽມ Project Explorer
    2. ເນັ້ນແຖບ 'ສ່ວນປະກອບຂອງຊອບແວ' ແລະເປີດເຄື່ອງມືການຕັ້ງຄ່າ GATT ດັ່ງທີ່ສະແດງຢູ່ລຸ່ມນີ້: ແລະໃຊ້ເຄື່ອງມືການນໍາເຂົ້າທີ່ສະແດງຂ້າງລຸ່ມນີ້ເພື່ອນໍາເຂົ້າ gatt_configuration.btconf file ຈາກໂຟນເດີເຊີບເວີໃນອຸປະກອນທີ່ສະໜອງໃຫ້.ຖານຂໍ້ມູນ GATT ມີບໍລິການທີ່ກໍາຫນົດເອງ, ເອີ້ນວ່າ 'ການຝຶກອົບຮົມ', ມີຂໍ້ມູນບາງຢ່າງທີ່ຖືກປົກປ້ອງແລະບາງອັນທີ່ບໍ່ແມ່ນ. ນີ້ອະນຸຍາດໃຫ້ທ່ານປຽບທຽບສິ່ງທີ່ເກີດຂື້ນໃນເວລາທີ່ພະຍາຍາມເຂົ້າເຖິງລັກສະນະທີ່ຖືກປົກປ້ອງທຽບກັບລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນ. ນີ້ແມ່ນວິທີທີ່ໄວໃນການສ້າງອຸປະກອນທີ່ມີຄວາມປອດໄພຂັ້ນພື້ນຖານຫຼາຍ.
  3. ພວກເຮົາຈະໃຊ້ພອດ serial ເພື່ອພິມໃສ່ console ໃນ Simplicity Studio ເພື່ອຕິດຕາມສິ່ງທີ່ເກີດຂຶ້ນໃນແອັບພລິເຄຊັນ. ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະຊອກຫາອົງປະກອບເຫຼົ່ານີ້ແມ່ນໂດຍການຊອກຫາພວກມັນຢູ່ໃນກ່ອງໂຕ້ຕອບອົງປະກອບຂອງ SOFTWARE ດັ່ງທີ່ສະແດງ:
      1. ຕິດຕັ້ງອົງປະກອບ IO Stream USART
      2. ຕິດຕັ້ງອົງປະກອບ IO Stream Retarget STDIO
      3. ຕິດຕັ້ງອົງປະກອບ I/O ມາດຕະຖານ
      4. ຕິດຕັ້ງອົງປະກອບບັນທຶກ
      5. ເປີດອົງປະກອບການຄວບຄຸມກະດານແລະເປີດ 'ເປີດໃຊ້ Virtual COM UART'
      6. ຄລິກຂວາໃສ່ອະແດັບເຕີໃນແຜງ 'Debug adapters' ແລະເລືອກ 'Launch Console'. ເລືອກແຖບ 'Serial 1' ແລະວາງຕົວກະພິບໃນຊ່ອງໃສ່ຂໍ້ຄວາມຂອງປ່ອງຢ້ຽມ console ແລະກົດ enter ເພື່ອປຸກ console.
  4. ສ້າງຕົວແປທ້ອງຖິ່ນໃນ sl_bt_on_event(), ທີ່ພົບໃນ app.c, ເພື່ອບັນທຶກຕົວເຊື່ອມຕໍ່. ຕົວແປຕ້ອງຄົງທີ່ເນື່ອງຈາກຟັງຊັນນີ້ຖືກເອີ້ນແຕ່ລະຄັ້ງທີ່ເຫດການຖືກຍົກຂຶ້ນມາໂດຍ stack ແລະພວກເຮົາຕ້ອງການໃຫ້ຄ່າຄົງຢູ່. ຕົວຈັບການເຊື່ອມຕໍ່ຈະຖືກໃຊ້ໃນພາຍຫຼັງພາກສ່ວນຂອງຫ້ອງທົດລອງ.
  5. ໃສ່ບາງ app_log() statements ສໍາລັບເຫດການເພື່ອເບິ່ງວ່າພວກເຮົາເຊື່ອມຕໍ່, ຮູບແບບຄວາມປອດໄພ, ແລະອື່ນໆ
      1. ລວມເອົາຫົວຂໍ້ app_log.h file
      2. sl_bt_evt_connection_opened – ພິມຕົວຈັບພັນທະບັດ ແລະບັນທຶກຕົວຈັບການເຊື່ອມຕໍ່. ຖ້າຕົວຈັບພັນທະບັດແມ່ນ 0xFF, ບໍ່ມີພັນທະບັດລະຫວ່າງອຸປະກອນທີ່ເຊື່ອມຕໍ່. ແກ້ໄຂຕົວຈັດການເຫດການທີ່ມີຢູ່ແລ້ວເພື່ອໃຫ້ມັນເບິ່ງຄືວ່ານີ້:
      3. sl_bt_evt_connection_parameters – ຮູບແບບຄວາມປອດໄພ. ນີ້ແມ່ນເຮັດໄດ້ເພື່ອໃຫ້ທ່ານສາມາດເບິ່ງໄດ້ໃນເວລາທີ່ຮູບແບບຄວາມປອດໄພມີການປ່ຽນແປງ. ມີ​ຄວາມ​ແຕກ​ຕ່າງ​ກັນ​ໃນ​ການ​ຈໍາ​ນວນ​ຂອງ​ຮູບ​ແບບ​ຄວາມ​ປອດ​ໄພ​ທີ່​ຮູບ​ແບບ​ຄວາມ​ປອດ​ໄພ 1​, ແມ່ນ enumerated ກັບ​ຄ່າ 0​, ແລະ​ອື່ນໆ​. ເພີ່ມຕົວຈັດການເຫດການຕໍ່ໄປນີ້ໃສ່ແອັບພລິເຄຊັນຂອງທ່ານ:
      4. sl_bt_evt_connection_closed_id. ຕົວຈັດການເຫດການນີ້ຖືກແກ້ໄຂເພື່ອອັບເດດຕົວຈັດການການເຊື່ອມຕໍ່. ຄ່າ 0xFF ຖືກໃຊ້ເພື່ອຊີ້ບອກວ່າບໍ່ມີການເຊື່ອມຕໍ່ທີ່ໃຊ້ງານ. ຄໍາສັ່ງ app_log() ຖືກນໍາໃຊ້ເພື່ອພິມອອກເຫດຜົນສໍາລັບການເຊື່ອມຕໍ່ຖືກປິດ, ບັນຊີລາຍຊື່ຂອງລະຫັດສະຖານະຢູ່ທີ່ນີ້. ແກ້ໄຂຕົວຈັດການເຫດການທີ່ມີຢູ່ແລ້ວເພື່ອໃຫ້ມັນເບິ່ງຄືວ່ານີ້:
  6. ກໍ່ສ້າງແລະ flash ໂຄງການ. ໃນຈຸດນີ້, ພວກເຮົາຈະດໍາເນີນການ sample app ເພື່ອເບິ່ງວ່າມັນປະຕິບັດແນວໃດໂດຍບໍ່ມີການປ່ຽນແປງໃດໆ, ນອກຈາກຖານຂໍ້ມູນ GATT.
  7. ເຊື່ອມຕໍ່ກັບແອັບຯມືຖື EFRConnect ດັ່ງຕໍ່ໄປນີ້:
      1. ແຕະທີ່ໄອຄອນ 'Bluetooth Browser'.
      2. ແຕະທີ່ໄອຄອນ 'ເຊື່ອມຕໍ່' ໃນອຸປະກອນທີ່ມີຊື່ວ່າ 'ການຝຶກອົບຮົມ'.
  8. ອ່ານລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນດັ່ງຕໍ່ໄປນີ້:
      1. ແຕະທີ່ລິ້ງ 'ຂໍ້ມູນເພີ່ມເຕີມ' ພາຍໃຕ້ການບໍລິການທີ່ບໍ່ຮູ້ຈັກກັບ UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
      2. ອ່ານລັກສະນະທີ່ບໍ່ມີການປ້ອງກັນ, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c ໂດຍການແຕະທີ່ໄອຄອນ 'ອ່ານ'. ບໍ່ແປກໃຈຢູ່ທີ່ນີ້. ເນື່ອງຈາກລັກສະນະບໍ່ໄດ້ຖືກປົກປ້ອງໃນທາງໃດກໍ່ຕາມ, ມັນຈະຖືກສົ່ງໄປເປັນຂໍ້ຄວາມທໍາມະດາ.
  9. ຕອນນີ້ອ່ານລັກສະນະທີ່ຖືກປ້ອງກັນ, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. ໂທລະ​ສັບ​ມື​ຖື​ຂອງ​ທ່ານ​ຄວນ​ຈະ​ແຈ້ງ​ໃຫ້​ທ່ານ​ຈັບ​ຄູ່​ແລະ​ການ​ເຊື່ອມ​ຕໍ່​, ຂໍ້​ຄວາມ​ອາດ​ຈະ​ແຕກ​ຕ່າງ​ກັນ​ຂຶ້ນ​ກັບ OS ໂທລະ​ສັບ​ມື​ຖື​ຂອງ​ທ່ານ​. ຫຼັງ​ຈາກ​ທີ່​ທ່ານ​ຍອມ​ຮັບ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ຄູ່​, ທ່ານ​ຄວນ​ຈະ​ມີ​ຂໍ້​ຄວາມ​ກ່ຽວ​ກັບ console ດັ່ງ​ຕໍ່​ໄປ​ນີ້​: ໝາຍເຫດ: ເອກະສານຊ້ອນທ້າຍ A ໃນຕອນທ້າຍຂອງຄູ່ມືສະບັບນີ້ມີບົດສະຫຼຸບຂອງຄວາມສາມາດ I/O ແລະວິທີການຈັບຄູ່ສໍາລັບການອ້າງອີງ. ເອກະສານຊ້ອນທ້າຍ B ສະຫຼຸບຮູບແບບຄວາມປອດໄພ Bluetooth.

ການຕັ້ງຄ່າຕົວຈັດການຄວາມປອດໄພ

ຕົວຈັດການຄວາມປອດໄພເປັນສ່ວນໜຶ່ງຂອງສະແຕມ Bluetooth ທີ່ກຳນົດວ່າຄຸນສົມບັດຄວາມປອດໄພໃດຖືກໃຊ້. ຄຸນສົມບັດເຫຼົ່ານີ້ລວມມີການປົກປ້ອງຜູ້ຊາຍໃນກາງ (MITM), ການເຊື່ອມຕໍ່ LE Secure (aka ECDH), ຮຽກຮ້ອງໃຫ້ມີການຢືນຢັນສໍາລັບການຜູກມັດ, ແລະອື່ນໆ. ຜູ້ຈັດການຄວາມປອດໄພຍັງຈັດການຄວາມສາມາດຂອງ I/O ທີ່ຖືກນໍາໃຊ້ເພື່ອກໍານົດວິທີການທີ່ຖືກນໍາໃຊ້ສໍາລັບການຈັບຄູ່. / ພັນທະບັດ (ເບິ່ງເອກະສານຊ້ອນທ້າຍ A ສໍາລັບບົດສະຫຼຸບ). ໃນ​ພາກ​ນີ້​ທ່ານ​ຈະ​ເຫັນ​ການ​ຕັ້ງ​ຄ່າ​ງ່າຍ​ດາຍ​.

  1. ຕັ້ງຄ່າ SM ດ້ວຍການຕັ້ງຄ່າທີ່ຕ້ອງການ. ຮາດແວສໍາລັບຫ້ອງທົດລອງນີ້ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການສະແດງລະຫັດຜ່ານໃນ console. ການປ້ອນ Passkey ແມ່ນຄວາມຕ້ອງການເພື່ອເປີດໃຊ້ການປົກປ້ອງ MITM. ເພີ່ມລະຫັດຕໍ່ໄປນີ້ໃສ່ຕົວຈັດການເຫດການ sl_bt_system_boot_id ຂອງທ່ານ. ນີ້ເຮັດໃຫ້ຜູ້ຊາຍໃນກາງແລະແຈ້ງໃຫ້ອຸປະກອນຫ່າງໄກສອກຫຼີກວ່າພວກເຮົາມີຄວາມສາມາດໃນການສະແດງລະຫັດຜ່ານ, ແຕ່ວ່າທັງຫມົດ.
  2. ເພື່ອສະແດງ passkey ໃນ console, ຕ້ອງການຕົວຈັດການເຫດການດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້:
  3. ຕັ້ງຮູບແບບການຜູກມັດ, ຈໍານວນສູງສຸດຂອງພັນທະບັດ, ແລະອື່ນໆ. ໃຊ້ລະຫັດຕໍ່ໄປນີ້ເພື່ອເລີ່ມຕົ້ນ:ການຕັ້ງຄ່າເຫຼົ່ານີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຈໍາກັດຄວາມສາມາດຂອງຜູ້ໂຈມຕີທີ່ຈະຜູກມັດກັບອຸປະກອນຂອງທ່ານ. ຖ້າຜະລິດຕະພັນຂອງທ່ານຕ້ອງການພຽງແຕ່ມີຜູ້ໃຊ້ດຽວ, ຫຼັງຈາກນັ້ນທ່ານສາມາດຈໍາກັດພັນທະບັດສູງສຸດເປັນ 1. ສະຖານທີ່ທີ່ດີທີ່ຈະເພີ່ມການໂທເຫຼົ່ານີ້ແມ່ນຢູ່ໃນຕົວຈັດການເຫດການ sl_bt_system_boot_id. ພວກເຮົາຈະບໍ່ເປີດໃຊ້ການຜູກມັດໃນເວລານີ້ເພື່ອເຮັດໃຫ້ສ່ວນທີ່ເຫຼືອຂອງຫ້ອງທົດລອງດໍາເນີນໄປຢ່າງຄ່ອງແຄ້ວ, ແຕ່ພວກເຮົາກໍານົດນະໂຍບາຍຄວາມຜູກພັນເພື່ອໃຫ້ພຽງແຕ່ພັນທະບັດດຽວເທົ່ານັ້ນ. ສໍາລັບການອ້າງອິງ, ເອກະສານສໍາລັບ APIs ເຫຼົ່ານີ້ແມ່ນພົບເຫັນຢູ່ທີ່ນີ້ແລະທີ່ນີ້ .
  4. ເພີ່ມຕົວຈັດການເຫດການສໍາລັບ sl_bt_evt_sm_bonded_id ແລະ sl_bt_evt_sm_bonding_failed_id. ການນໍາໃຊ້ຕົ້ນຕໍສໍາລັບເຫດການເຫຼົ່ານີ້ແມ່ນໃຫ້ຂໍ້ມູນໃນປັດຈຸບັນແຕ່ຕໍ່ມາໃນຫ້ອງທົດລອງທ່ານຈະເພີ່ມຫນ້າທີ່.
  5. ສ້າງແລະ flash ກັບຄະນະເປົ້າຫມາຍ. ເຊື່ອມ​ຕໍ່​ກັບ EFRConnect ແລະ​ອ່ານ​ລັກ​ສະ​ນະ​ປົກ​ປັກ​ຮັກ​ສາ​ດັ່ງ​ທີ່​ຜ່ານ​ມາ​. ເວລານີ້, ທ່ານຈະເຫັນລະຫັດຜ່ານທີ່ສະແດງຢູ່ໃນ console. ໃສ່ລະຫັດຜ່ານນີ້ຢູ່ໃນໂທລະສັບມືຖືຂອງເຈົ້າເມື່ອຖືກເຕືອນ.
  6. ລອງໃຊ້ການຢືນຢັນການຜູກມັດ. ຄຸນນະສົມບັດນີ້ເຮັດໃຫ້ຜູ້ໃຊ້ສາມາດຮຽກຮ້ອງໃຫ້ຄໍາຮ້ອງຂໍການຜູກມັດໄດ້ຮັບການຢືນຢັນ. ການເຮັດດັ່ງນັ້ນເຮັດໃຫ້ແອັບພລິເຄຊັນຄວບຄຸມວ່າອຸປະກອນເພື່ອນມິດໃດທີ່ມັນຜູກມັດກັບ. ຄວາມເປັນໄປໄດ້ຫນຶ່ງແມ່ນຮຽກຮ້ອງໃຫ້ຜູ້ໃຊ້ກົດປຸ່ມຫນຶ່ງກ່ອນທີ່ຈະອະນຸຍາດໃຫ້ພັນທະບັດ.
    1. ເປີດການຕັ້ງຄ່າ Bluetooth ໃນໂທລະສັບມືຖືຂອງທ່ານແລະເອົາພັນທະບັດກັບອຸປະກອນ EFR32. ການປະຕິບັດໂທລະສັບມືຖືແຕກຕ່າງກັນດັ່ງນັ້ນຂັ້ນຕອນນີ້ອາດຈະບໍ່ຈໍາເປັນ. ຖ້າທ່ານບໍ່ເຫັນອຸປະກອນ 'ການຝຶກອົບຮົມ' ໃນການຕັ້ງຄ່າ Bluetooth ຂອງທ່ານ, ພຽງແຕ່ດໍາເນີນການຂັ້ນຕອນຕໍ່ໄປ.
    2. ໃນອົງປະກອບຂອງຊອບແວ, ຕິດຕັ້ງຫນຶ່ງຕົວຢ່າງຂອງຕົວຈັດການປຸ່ມງ່າຍດາຍ.
    3. ລວມເອົາຫົວ file sl_simple_button_instances.h ໃນ app.c
    4. ເພີ່ມຕົວຈັດການສຳລັບເຫດການ sl_bt_evt_sm_bonding_confirm_id. ວຽກງານຕົ້ນຕໍຂອງຜູ້ຈັດການເຫດການນີ້ແມ່ນເພື່ອແຈ້ງໃຫ້ຜູ້ໃຊ້ຮູ້ວ່າອຸປະກອນຫ່າງໄກສອກຫຼີກກໍາລັງຮ້ອງຂໍພັນທະບັດໃຫມ່.
    5. ເພີ່ມຟັງຊັນໂທກັບສໍາລັບຕົວຈັບປຸ່ມທີ່ງ່າຍດາຍເພື່ອສົ່ງສັນຍານໄປຫາ stack Bluetooth ຊີ້ບອກວ່າປຸ່ມໄດ້ຖືກກົດ. ອັນນີ້ overrides ຄ່າເລີ່ມຕົ້ນ callback ທີ່ພຽງແຕ່ກັບຄືນມາ.
    6. ເພີ່ມຕົວຈັດການເຫດການສັນຍານພາຍນອກ. ເຫດການນີ້ໄດ້ຖືກຍົກຂຶ້ນມາເພື່ອຕອບສະຫນອງຕໍ່ການໄດ້ຮັບສັນຍານ, ເຊັ່ນໃນຂັ້ນຕອນທີ່ຜ່ານມາ. ເຫດການສັນຍານພາຍນອກຈະຖືກນໍາໃຊ້ເພື່ອຢືນຢັນການຜູກມັດ.
    7. ປ່ຽນການໂທຫາ sl_bt_sm_configure ເພື່ອຮຽກຮ້ອງໃຫ້ມີການຢືນຢັນການຜູກມັດເຊັ່ນ
    8. ສ້າງໃຫມ່ແລະ flash.
    9. ເຊື່ອມ​ຕໍ່​ກັບ EFRConnect ແລະ​ອ່ານ​ລັກ​ສະ​ນະ​ປົກ​ປັກ​ຮັກ​ສາ​ດັ່ງ​ທີ່​ຜ່ານ​ມາ​. ໃນປັດຈຸບັນທ່ານຈະເຫັນຂໍ້ຄວາມຢູ່ໃນ console ດັ່ງຕໍ່ໄປນີ້:ກົດ PB0 ເພື່ອຢືນຢັນການຜູກມັດ. ໃນປັດຈຸບັນ console ຈະສະແດງ passkey ທີ່ຈະເຂົ້າໄປໃນໂທລະສັບມືຖືສໍາລັບການຜູກມັດ. ໃສ່ passkey ເພື່ອເຮັດສໍາເລັດຂະບວນການຜູກມັດ.

 

ເຄັດລັບ: ໃຊ້ກໍລະນີເລີ່ມຕົ້ນໃນຕົວຈັດການເຫດການເພື່ອພິມຂໍ້ຄວາມອອກເມື່ອ stack ສົ່ງເຫດການທີ່ບໍ່ຖືກຈັດການ. stack ອາດຈະພະຍາຍາມບອກທ່ານບາງສິ່ງບາງຢ່າງທີ່ສໍາຄັນ.

ນອກເຫນືອຈາກພື້ນຖານ

ໃນຈຸດນີ້, ທ່ານໄດ້ປະຕິບັດ advantage ຂອງຄຸນນະສົມບັດຄວາມປອດໄພທີ່ stack ຂອງພວກເຮົາມີໃຫ້. ຕອນນີ້ໃຫ້ເຮົາປັບປຸງການຈັດຕັ້ງປະຕິບັດຜ່ານການນຳໃຊ້ຄຸນສົມບັດທີ່ສະຫລາດໃນການກໍາຈັດຂອງພວກເຮົາ. ຂັ້ນຕອນຕໍ່ໄປນີ້ແມ່ນທາງເລືອກແລະເປັນເອກະລາດຂອງກັນແລະກັນ, ທ່ານສາມາດສ້າງແລະກະພິບຫຼັງຈາກແຕ່ລະຄົນເພື່ອເບິ່ງພຶດຕິກໍາຫຼືພະຍາຍາມທັງຫມົດຮ່ວມກັນ.

  1. ຕັດການເຊື່ອມຕໍ່ໃນຄວາມພະຍາຍາມພັນທະບັດທີ່ລົ້ມເຫລວ. ນີ້ແມ່ນສະຖານທີ່ທີ່ດີທີ່ຈະກວດພົບໄພຂົ່ມຂູ່. ຖ້າອຸປະກອນທາງໄກບໍ່ຮອງຮັບການເຂົ້າລະຫັດ/ການພິສູດຢືນຢັນ ຫຼືພຽງແຕ່ບໍ່ມີກະແຈທີ່ຖືກຕ້ອງ, ມັນອາດຈະເປັນແຮກເກີ. ດັ່ງນັ້ນ, ໃຫ້ພວກເຮົາທໍາລາຍການເຊື່ອມຕໍ່. ລອງເພີ່ມການໂທຫາ sl_bt_connection_close() ໃນເຫດການ sl_bt_sm_bonding_failed_id. API ແມ່ນບັນທຶກຢູ່ທີ່ນີ້.ທ່ານສາມາດທົດສອບຄຸນສົມບັດນີ້ໄດ້ໂດຍການໃສ່ລະຫັດຜ່ານຜິດ.
  2. ພຽງແຕ່ອະນຸຍາດໃຫ້ຜູກມັດໃນບາງເວລາ. ນີ້ຈໍາກັດເວລາທີ່ຜູ້ໂຈມຕີຕ້ອງສ້າງພັນທະບັດແລະເຮັດໃຫ້ສາມາດນໍາໃຊ້ຄຸນສົມບັດ 'ອະນຸຍາດພຽງແຕ່ການເຊື່ອມຕໍ່ທີ່ຖືກຜູກມັດ'. ຜູ້ອອກແບບສາມາດເລືອກວິທີເປີດໃຊ້ ຫຼືປິດໂໝດການຜູກມັດໄດ້. ສໍາລັບຈຸດປະສົງການສາທິດຢູ່ທີ່ນີ້, ພວກເຮົາຈະເປີດໃຊ້ 'ຮູບແບບການຕັ້ງຄ່າ' ກັບ PB1 ແລະໃຊ້ໂມງຈັບເວລາເພື່ອປິດມັນຫຼັງຈາກ 30 ວິນາທີ.
    1. ຕິດຕັ້ງຕົວຢ່າງທີສອງຂອງການໂຕ້ຕອບປຸ່ມງ່າຍດາຍ. ນີ້ຈະຊ່ວຍໃຫ້ການນໍາໃຊ້ PB1.
    2. ແກ້ໄຂການໂທກັບເພື່ອສົ່ງສັນຍານທີ່ແຕກຕ່າງກັນໄປຫາ stack ເພື່ອເປີດໃຊ້ / ປິດການຜູກມັດ. ຜົນໄດ້ຮັບຄວນຈະມີລັກສະນະເຊັ່ນນີ້:
    3. ແກ້ໄຂຕົວຈັດການເຫດການສັນຍານພາຍນອກເພື່ອໃຫ້ມັນຈັດການກັບສັນຍານໃຫມ່ນີ້. ຜົນໄດ້ຮັບຄວນຈະເປັນເຊັ່ນນີ້:
    4. ເພີ່ມຕົວຈັດການເຫດການສໍາລັບເຫດການ sl_bt_evt_system_soft_timer_id. ນີ້ຈະໃຊ້ເພື່ອປິດການໃຊ້ງານຮູບແບບການຕັ້ງຄ່າ.
    5. ລະຫັດຕໍ່ໄປນີ້ສາມາດໃຊ້ເພື່ອເປີດໃຊ້ໂໝດຜູກມັດໄດ້ ແລະອະນຸຍາດໃຫ້ເຊື່ອມຕໍ່ທັງໝົດ ຫຼືປິດການນຳໃຊ້ໂໝດຜູກມັດໄດ້ ແລະອະນຸຍາດໃຫ້ເຊື່ອມຕໍ່ຈາກອຸປະກອນທີ່ຜູກມັດໄດ້ເທົ່ານັ້ນ:
    6. ເພີ່ມການໂທຕໍ່ໄປນີ້ໃນຕົວຈັດການເຫດການ sl_bt_system_boot_id
    7. ສ້າງໂຄງການແລະ flash ມັນກັບອຸປະກອນ.
    8. ລອງເຊື່ອມຕໍ່ກັບອຸປະກອນດ້ວຍ EFRConnect. ການເຊື່ອມຕໍ່ຄວນຈະລົ້ມເຫລວ.
    9. ຕອນນີ້ລອງກົດ PB1 ກ່ອນທີ່ຈະເຊື່ອມຕໍ່ກັບ EFRConnect. ເວລານີ້ການເຊື່ອມຕໍ່ຈະປະສົບຜົນສໍາເລັດ. ຫຼັງ​ຈາກ 30 ວິ​ນາ​ທີ​ທ່ານ​ຈະ​ເຫັນ​ຂໍ້​ຄວາມ​ໃນ console ຊີ້​ບອກ​ວ່າ​ອຸ​ປະ​ກອນ​ກໍາ​ລັງ​ອອກ​ຈາກ​ຮູບ​ແບບ​ການ​ຕັ້ງ​ຄ່າ​. ນີ້​ຫມາຍ​ຄວາມ​ວ່າ​ໃນ​ປັດ​ຈຸ​ບັນ​ຮູບ​ແບບ bondable ໄດ້​ຖືກ​ປິດ​ການ​ໃຊ້​ງານ​.
  3. ເພີ່ມທະວີຄວາມປອດໄພໃນການສ້າງການເຊື່ອມຕໍ່. ເນື່ອງຈາກຄວາມປອດໄພເປັນທາງເລືອກ, ພວກເຮົາຄວນຮ້ອງຂໍໃຫ້ມີການເຊື່ອມຕໍ່ເຂົ້າລະຫັດໄວເທົ່າທີ່ຈະເປັນໄປໄດ້ແທນທີ່ຈະອີງໃສ່ຄຸນລັກສະນະ GATT. API ແມ່ນບັນທຶກຢູ່ທີ່ນີ້. ສະຖານທີ່ທີ່ດີທີ່ຈະໂທຫາ API ນີ້ແມ່ນຢູ່ໃນເຫດການ sl_bt_evt_connection_opened_id. ຕົວຈັບການເຊື່ອມຕໍ່ແມ່ນມີຢູ່ໃນຕົວແປການເຊື່ອມຕໍ່.

ການລະບຸຕົວຕົນທີ່ປອດໄພ

ຕອນນີ້ພວກເຮົາມີອຸປະກອນ Bluetooth ທີ່ປອດໄພກວ່າ, ໃຫ້ປັບປຸງຂັ້ນຕອນການພິສູດຢືນຢັນ. ທ່ານເຄີຍເຫັນວິທີການຢັ້ງຢືນຕົວຕົນທີ່ປອດໄພຂອງອຸປະກອນຫ້ອງໂຖງດ້ວຍບັນທັດຄໍາສັ່ງຢູ່ໃນຫ້ອງທົດລອງການຝຶກອົບຮົມກ່ອນຫນ້າ. ໃນພາກນີ້, ພວກເຮົາຈະເບິ່ງວິທີການຫນຶ່ງອຸປະກອນ BLE ສາມາດຢືນຢັນຕົວຕົນຂອງອຸປະກອນ BLE ອື່ນໂດຍການຮ້ອງຂໍລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນຂອງມັນແລະສົ່ງສິ່ງທ້າທາຍ. ພາກສ່ວນທີ່ປອດໄພທັງໝົດຖືໃບຮັບຮອງອຸປະກອນ ແລະໃບຢັ້ງຢືນຊຸດຂອງຕົນເອງ. ໂຮງງານຜະລິດແລະໃບຢັ້ງຢືນຮາກແມ່ນລະຫັດຍາກເຂົ້າໄປໃນຄໍາຮ້ອງສະຫມັກລູກຄ້າເພື່ອໃຫ້ສາມາດກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນທັງຫມົດ. ເບິ່ງ AN1268 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຕົວຕົນທີ່ປອດໄພ.

  1. ກໍານົດ buffer ທົ່ວໂລກສໍາລັບການເກັບຮັກສາລາຍເຊັນຢັ້ງຢືນອຸປະກອນດັ່ງລຸ່ມນີ້:
  2. ຕັ້ງຄ່າຕົວຈັດການຄວາມປອດໄພເພື່ອໃຊ້ການຈັບຄູ່ JustWorks. ນີ້ແມ່ນເຮັດເພື່ອໃຫ້ການເຊື່ອມຕໍ່ຖືກເຂົ້າລະຫັດ. ໃນການປະຕິບັດ, ການປົກປ້ອງ MITM ຄວນຖືກນໍາໃຊ້ແຕ່ເພື່ອໃຫ້ຫ້ອງທົດລອງງ່າຍດາຍ, ພວກເຮົາຈະໃຊ້ JustWorks. ປ່ຽນການໂທຫາ sl_bt_sm_configure ກັບຄືນໄປບ່ອນຕໍ່ໄປນີ້:ນອກຈາກນີ້, ໃຫ້ຄໍາຄິດຄໍາເຫັນອອກການໂທຫາ setup_mode (true) ໃນຕົວຈັດການເຫດການ system_boot.
  3. ເປີດ helpers.c ຈາກເອກະສານທີ່ສະໜອງໃຫ້ ແລະຄັດລອກເນື້ອໃນໃສ່ app.c. ຫນ້າທີ່ເອີ້ນຄືນເຫຼົ່ານີ້ປະຕິບັດວຽກງານເຊັ່ນການແບ່ງສ່ວນໃບຢັ້ງຢືນເພື່ອໃຫ້ພວກເຂົາສາມາດສົ່ງຜ່ານ BLE, ການກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນ, ແລະການສ້າງ / ກວດສອບສິ່ງທ້າທາຍ.
  4. ມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະກໍານົດຂະຫນາດຫນ່ວຍການໂອນສູງສຸດ (MTU) ເພື່ອໃຫ້ໃບຢັ້ງຢືນສາມາດຖືກແບ່ງອອກແລະປະກອບໃຫມ່. ກໍານົດຕົວແປທົ່ວໂລກເພື່ອບັນທຶກ MTU ດັ່ງທີ່ສະແດງຢູ່ທີ່ນີ້:ຫຼັງຈາກນັ້ນ, ເພີ່ມຕົວຈັດການເຫດການສໍາລັບເຫດການແລກປ່ຽນ GATT MTU ດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້:
  5. ມີສາມລັກສະນະຂໍ້ມູນຜູ້ໃຊ້ທີ່ສາມາດອ່ານໄດ້. ຄຸນລັກສະນະເຫຼົ່ານີ້ຖືກນໍາໃຊ້ເພື່ອຕິດຕໍ່ສື່ສານໃບຢັ້ງຢືນອຸປະກອນ, ໃບຢັ້ງຢືນ batch ແລະສິ່ງທ້າທາຍ. ຟັງຊັນໂທກັບຖືກໃຊ້ເພື່ອຈັດການກັບການຮ້ອງຂໍການອ່ານຂອງຜູ້ໃຊ້ເຫຼົ່ານີ້. ເພີ່ມຕົວຈັດການເພື່ອເອີ້ນຟັງຊັນນີ້ຕາມຮູບຂ້າງລຸ່ມນີ້:ການເອີ້ນຄືນໃຊ້ MTU ຈາກຂັ້ນຕອນ #2 ເພື່ອແບ່ງສ່ວນ ແລະສົ່ງໃບຢັ້ງຢືນຕາມຄວາມຕ້ອງການ. ມັນຍັງຈັດການສົ່ງສິ່ງທ້າທາຍທີ່ໄດ້ລົງນາມ.
  6. ລູກຄ້າສົ່ງຄໍາທ້າທາຍ, ຕົວເລກແບບສຸ່ມທີ່ຈະຖືກເຊັນໂດຍເຄື່ອງແມ່ຂ່າຍ, ໂດຍການຂຽນຫນຶ່ງໃນລັກສະນະ GATT. ດ້ວຍເຫດຜົນນີ້, ແອັບພລິເຄຊັນຕ້ອງມີຕົວຈັດການສໍາລັບເຫດການການຮ້ອງຂໍຂອງຜູ້ໃຊ້ຂຽນດັ່ງຕໍ່ໄປນີ້:
  7. ເພີ່ມການຮອງຮັບຕົວຕົນທີ່ປອດໄພ files ກັບ​ໂຄງ​ການ​:
    1. app_se_manager_macro.h, app_se_manager_secure_identity.c ແລະ app_se_secure_identity.h ຈາກອຸປະກອນທີ່ສະໜອງໃຫ້ກັບໂຄງການ. ເຫຼົ່ານີ້ files ມີບາງຫນ້າທີ່ຜູ້ຊ່ວຍສໍາລັບວຽກງານເຊັ່ນ: ການໄດ້ຮັບຂະຫນາດຂອງໃບຢັ້ງຢືນ, ການໄດ້ຮັບລະຫັດສາທາລະນະຂອງອຸປະກອນແລະການເຊັນສິ່ງທ້າທາຍ.
    2. ລວມເອົາ app_se_manager_secure_identity.h ໃນ app.c.
  8. ນຳເຂົ້າ gatt_configuration-attest.btconf ທີ່ສະໜອງໃຫ້ຈາກວັດສະດຸທີ່ສະໜອງໃຫ້. ຖານຂໍ້ມູນ GATT ນີ້ເອີ້ນວ່າການຢັ້ງຢືນທີ່ປອດໄພເຊິ່ງປະກອບມີສີ່ລັກສະນະທີ່ຈະຖືກນໍາໃຊ້ເພື່ອຢືນຢັນຕົວຕົນຂອງອຸປະກອນຂອງພວກເຮົາ. ເຫຼົ່ານີ້ລວມມີໃບຢັ້ງຢືນອຸປະກອນ, ໃບຢັ້ງຢືນຊຸດ, ສິ່ງທ້າທາຍແລະການຕອບໂຕ້.
  9. ລູກຄ້າ, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອຈໍາລອງອຸປະກອນເຊັ່ນ: ປະຕູຮົ້ວ, ໄດ້ຖືກສະຫນອງໃຫ້ເປັນໂຄງການທີ່ສົມບູນນັບຕັ້ງແຕ່ມັນມີຄວາມຊັບຊ້ອນຫຼາຍໃນການກໍ່ສ້າງ. ໂດຍທົ່ວໄປ, ການດໍາເນີນງານຂອງລູກຄ້າແມ່ນດັ່ງຕໍ່ໄປນີ້:
    1. ສະແກນອຸປະກອນໂຄສະນາການບໍລິການຢັ້ງຢືນທີ່ປອດໄພ ແລະເຊື່ອມຕໍ່ກັບພວກມັນ.
    2. ຄົ້ນພົບການບໍລິການຖານຂໍ້ມູນ GATT ແລະຄຸນລັກສະນະ.
    3. ອ່ານອຸປະກອນແລະໃບຢັ້ງຢືນ batch ແລະກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນໂດຍໃຊ້ໂຮງງານຜະລິດແລະໃບຢັ້ງຢືນຮາກທີ່ມັນຖືກເກັບໄວ້ໃນແຟດ.
    4. ສົ່ງສິ່ງທ້າທາຍແບບສຸ່ມໄປຫາເຄື່ອງແມ່ຂ່າຍ.
    5. ຄວາມພະຍາຍາມທີ່ຈະກວດສອບການຕອບສະຫນອງຕໍ່ສິ່ງທ້າທາຍ.
    6. ປິດການເຊື່ອມຕໍ່ຖ້າການຢັ້ງຢືນທັງສອງລົ້ມເຫລວ.
  10. ສ້າງແລະກະພິບໂຄງການເຊີບເວີກັບເຄື່ອງແມ່ຂ່າຍຂອງທ່ານ WSTK /radioboard.
  11. ນໍາເຂົ້າໂຄງການລູກຄ້າຈາກໂຟເດີລູກຄ້າໃນເອກະສານທີ່ສະຫນອງໃຫ້. ສ້າງ​ແລະ​ກະ​ພິບ​ໂຄງ​ການ​ລູກ​ຄ້າ​ໃຫ້​ລູກ​ຄ້າ WSTK/radioboard ຂອງ​ທ່ານ​.
  12. ກົດຣີເຊັດເທິງລູກຄ້າ WSTK ແລະເປີດ serial console. ລູກຄ້າເລີ່ມການສະແກນຫາອຸປະກອນໂຄສະນາການບໍລິການຕົວຕົນທີ່ປອດໄພຂອງພວກເຮົາ ແລະຈະເຊື່ອມຕໍ່ເມື່ອມັນພົບອັນໜຶ່ງ.
  13. ລູກຄ້າຈະສະແດງຂໍ້ຄວາມບາງຢ່າງເພື່ອຊີ້ບອກວ່າມັນໄດ້ພົບເຫັນເຄື່ອງແມ່ຂ່າຍທີ່ມີການບໍລິການທີ່ຕ້ອງການແລະຂໍ້ຄວາມສະຖານະພາບກ່ຽວກັບການຢັ້ງຢືນລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນ.
  14. ຖ້າການຢັ້ງຢືນຜ່ານ, ລູກຄ້າຈະສ້າງຕົວເລກແບບສຸ່ມ, ເອີ້ນວ່າສິ່ງທ້າທາຍ, ແລະສົ່ງມັນໄປຫາເຄື່ອງແມ່ຂ່າຍ. ເຊີບເວີຈະເຊັນການທ້າທາຍດ້ວຍກະແຈອຸປະກອນສ່ວນຕົວທີ່ຍຶດໄວ້ຢ່າງປອດໄພ ແລະລາຍເຊັນຄືນໃຫ້ກັບລູກຄ້າ, ອັນນີ້ເອີ້ນວ່າການຕອບໂຕ້ສິ່ງທ້າທາຍ. ຫຼັງຈາກນັ້ນ, ລູກຄ້າໃຊ້ລະຫັດສາທາລະນະໃນໃບຢັ້ງຢືນອຸປະກອນທີ່ໄດ້ຮັບກ່ອນຫນ້ານີ້ເພື່ອກວດສອບລາຍເຊັນ. ນີ້ແມ່ນເຮັດເພື່ອຢືນຢັນວ່າເຄື່ອງແມ່ຂ່າຍກໍ່ມີລະຫັດສ່ວນຕົວທີ່ມັນອ້າງວ່າມີ. ຖ້າການທ້າທາຍຖືກກວດສອບຢ່າງຖືກຕ້ອງ, ຂໍ້ຄວາມຈະສະແດງຜົນນັ້ນ; ຖ້າບໍ່ດັ່ງນັ້ນ, ການເຊື່ອມຕໍ່ຖືກປິດ, ແລະຂໍ້ຄວາມຈະສະແດງອະທິບາຍວ່າເປັນຫຍັງ.
  15. ຕອນນີ້ສົ່ງໃບຢັ້ງຢືນທີ່ບໍ່ຖືກຕ້ອງເພື່ອຢືນຢັນວ່າການຢັ້ງຢືນໄດ້ຜົນແທ້. ທ່ານສາມາດດັດແປງ 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 ທີ່ປອດໄພ, ຫ້ອງທົດລອງຄວາມປອດໄພ

ເອກະສານອ້າງອີງ

ອອກຄໍາເຫັນ

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງການຖືກໝາຍໄວ້ *