silabs 21Q2 សុវត្ថិភាពឧបករណ៍ BLE Security Lab
សៀវភៅណែនាំមន្ទីរពិសោធន៍សុវត្ថិភាព BLE
នៅក្នុងមន្ទីរពិសោធន៍នេះ អ្នកនឹងឃើញពីរបៀបរចនាឧបករណ៍ BLE ដែលមានសុវត្ថិភាពជាងមុន។ យើងនឹងចាប់ផ្តើមជាមួយនឹងការបញ្ចប់view អំពីរបៀបប្រើលក្ខណៈពិសេសមួយចំនួននៃជង់ ហើយបន្តទៅការណែនាំទូទៅមួយចំនួនអំពីបច្ចេកទេសសម្រាប់ការតភ្ជាប់ដែលមានសុវត្ថិភាពជាងមុន ហើយចុងក្រោយយើងនឹងឃើញពីរបៀបប្រើវិញ្ញាបនបត្រឧបករណ៍នៅលើ BLE ដើម្បីកំណត់អត្តសញ្ញាណគ្រឿងកុំព្យូទ័រថាពិតប្រាកដ។
ការចាប់ផ្តើម
ប៊្លូធូសample កម្មវិធីដែលអ្នកនឹងត្រូវបង្កើតគឺមានបំណងប្រើជាមួយកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធ។ ប្រសិនបើអ្នកកំពុងធ្វើការជាមួយម៉ាក EFR32MG21B ថ្មី វានឹងមិនមានកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធទេ។ អ្នកអាចស្វែងរកកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធដែលបានបង្កើតជាមុននៅក្នុង platform\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a ថតឯកសារ SDK របស់អ្នក។
- ចាប់ផ្តើមជាមួយ soc-empty sampកម្មវិធីឡេ។ នេះ សample app ត្រូវបានប្រើជាគំរូ និងបង្កើតចំណុចចាប់ផ្តើមដ៏ល្អសម្រាប់កម្មវិធី BLE ណាមួយ។
- បើកអ្នកជំនួយគម្រោង Silicon Labs ពី Simplicity Studio File ម៉ឺនុយ -> ថ្មី។
- ជ្រើសរើស BRD4181C ហើយចុចប៊ូតុង 'បន្ទាប់' ។
- ចុចប្រអប់ធីក 'ប៊្លូធូស (9)' នៅក្រោមប្រភេទបច្ចេកវិទ្យា។
- បន្លិច 'ប៊្លូធូស - សូស៊ីទទេ' បន្ទាប់មកចុចបន្ទាប់។
- ចុចប៊ូតុង 'បញ្ចប់' ។
- ឥឡូវនេះអ្នកអាចបន្ថែមលក្ខណៈមួយចំនួនដើម្បីមើលពីរបៀបដែលលក្ខណៈការពារ និងមិនបានការពារត្រូវបានប្រព្រឹត្តខុសគ្នា។
- បើក slcp របស់គម្រោង file ដោយចុចទ្វេដងលើវានៅក្នុងបង្អួច Project Explorer
- រំលេចផ្ទាំង 'សមាសធាតុសូហ្វវែរ' ហើយបើកឧបករណ៍កំណត់រចនាសម្ព័ន្ធ GATT ដូចបង្ហាញខាងក្រោម៖
ហើយប្រើឧបករណ៍នាំចូលដែលបង្ហាញខាងក្រោមដើម្បីនាំចូល gatt_configuration.btconf file ពីថតម៉ាស៊ីនមេនៅក្នុងសម្ភារៈដែលបានផ្តល់។
មូលដ្ឋានទិន្នន័យ GATT មានសេវាកម្មផ្ទាល់ខ្លួនដែលហៅថា 'ការបណ្តុះបណ្តាល' ជាមួយនឹងទិន្នន័យមួយចំនួនដែលត្រូវបានការពារ និងមួយចំនួនដែលមិនមាន។ នេះអនុញ្ញាតឱ្យអ្នកប្រៀបធៀបអ្វីដែលកើតឡើងនៅពេលព្យាយាមចូលប្រើលក្ខណៈការពារធៀបនឹងលក្ខណៈដែលមិនការពារ។ នេះគឺជាវិធីរហ័សក្នុងការបង្កើតឧបករណ៍ដែលមានសុវត្ថិភាពជាមូលដ្ឋាន។
- យើងនឹងប្រើច្រកសៀរៀលដើម្បីបោះពុម្ពទៅកាន់កុងសូលក្នុង Simplicity Studio ដើម្បីតាមដានអ្វីដែលកំពុងកើតឡើងនៅក្នុងកម្មវិធី។ មធ្យោបាយងាយស្រួលបំផុតក្នុងការស្វែងរកសមាសធាតុទាំងនេះគឺដោយស្វែងរកពួកវានៅក្នុងប្រអប់ SOFTWARE COMPONENTS ដូចដែលបានបង្ហាញ៖
-
- ដំឡើងសមាសភាគ IO Stream USART
- ដំឡើងសមាសភាគ IO Stream Retarget STDIO
- ដំឡើងសមាសភាគ I/O ស្តង់ដារ
- ដំឡើងសមាសធាតុកំណត់ហេតុ
- បើកផ្នែកគ្រប់គ្រងក្តារ ហើយបើក 'បើកដំណើរការ Virtual COM UART'
- ចុចកណ្ដុរស្ដាំលើអាដាប់ទ័រនៅក្នុងបន្ទះ 'Debug adapters' ហើយជ្រើសរើស 'Launch Console'។ ជ្រើសរើសផ្ទាំង 'Serial 1' ហើយដាក់ទស្សន៍ទ្រនិចក្នុងប្រអប់បញ្ចូលអត្ថបទនៃបង្អួចកុងសូល ហើយចុច Enter ដើម្បីដាស់កុងសូល។
-
- បង្កើតអថេរមូលដ្ឋាននៅក្នុង sl_bt_on_event() ដែលបានរកឃើញនៅក្នុង app.c សម្រាប់រក្សាទុកចំណុចទាញការតភ្ជាប់។ អថេរត្រូវតែឋិតិវន្ត ដោយសារមុខងារនេះត្រូវបានគេហៅថារាល់ពេលដែលព្រឹត្តិការណ៍មួយត្រូវបានលើកឡើងដោយជង់ ហើយយើងចង់ឱ្យតម្លៃបន្ត។ ចំណុចទាញនៃការតភ្ជាប់នឹងត្រូវបានប្រើនៅពេលក្រោយ
ផ្នែកនៃមន្ទីរពិសោធន៍។
- បញ្ចូលសេចក្តីថ្លែងការណ៍ app_log() មួយចំនួនសម្រាប់ព្រឹត្តិការណ៍ដើម្បីមើលពេលដែលយើងបានតភ្ជាប់ របៀបសុវត្ថិភាព។ល។
-
- រួមបញ្ចូលបឋមកថា app_log.h file
- sl_bt_evt_connection_opened – បោះពុម្ពចំណុចទាញ និងរក្សាទុកចំណុចទាញតភ្ជាប់។ ប្រសិនបើចំណុចទាញចំណងគឺ 0xFF គ្មានចំណងរវាងឧបករណ៍ដែលបានតភ្ជាប់ទេ។ កែប្រែកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ដែលមានស្រាប់ ដើម្បីឱ្យវាមើលទៅដូចនេះ៖
- sl_bt_evt_connection_parameters – របៀបសុវត្ថិភាព។ វាត្រូវបានធ្វើដូច្នេះអ្នកអាចឃើញនៅពេលដែលរបៀបសុវត្ថិភាពផ្លាស់ប្តូរ។ មានភាពខុសប្លែកគ្នានៅក្នុងការកំណត់លេខនៃរបៀបសុវត្ថិភាព ដែលរបៀបសុវត្ថិភាព 1 ត្រូវបានរាប់បញ្ចូលជាមួយនឹងតម្លៃ 0 ។ល។ បន្ថែមកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ខាងក្រោមទៅកម្មវិធីរបស់អ្នក៖
- sl_bt_evt_connection_closed_id ។ កម្មវិធីដោះស្រាយព្រឹត្តិការណ៍នេះត្រូវបានកែប្រែដើម្បីធ្វើបច្ចុប្បន្នភាពចំណុចទាញការតភ្ជាប់។ តម្លៃ 0xFF ត្រូវបានប្រើដើម្បីបង្ហាញថាមិនមានការតភ្ជាប់សកម្មទេ។ ពាក្យបញ្ជា app_log() ត្រូវបានប្រើដើម្បីបោះពុម្ពហេតុផលសម្រាប់ការតភ្ជាប់ត្រូវបានបិទ បញ្ជីកូដស្ថានភាពគឺនៅទីនេះ។ កែប្រែកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ដែលមានស្រាប់ ដើម្បីឱ្យវាមើលទៅដូចនេះ៖
- រួមបញ្ចូលបឋមកថា app_log.h file
-
- បង្កើតនិងបំភ្លឺគម្រោង។ នៅចំណុចនេះយើងនឹងដំណើរការ sample app ដើម្បីមើលពីរបៀបដែលវាមានឥរិយាបទដោយគ្មានការផ្លាស់ប្តូរណាមួយ ក្រៅពីមូលដ្ឋានទិន្នន័យ GATT ។
- ភ្ជាប់ជាមួយកម្មវិធីទូរស័ព្ទ EFRConnect ដូចខាងក្រោម៖
-
- ប៉ះរូបតំណាង 'Bluetooth Browser'។
- ប៉ះរូបតំណាង 'ភ្ជាប់' នៅលើឧបករណ៍ដែលមានឈ្មោះថា 'ការបណ្តុះបណ្តាល' ។
-
- សូមអានលក្ខណៈដែលមិនបានការពារដូចខាងក្រោម៖
-
- ចុចលើតំណ 'ព័ត៌មានបន្ថែម' នៅក្រោមសេវាកម្មមិនស្គាល់ជាមួយ UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 ។
- អានលក្ខណៈដែលមិនបានការពារ UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c ដោយចុចលើរូបតំណាង 'អាន' ។ គ្មានការភ្ញាក់ផ្អើលនៅទីនេះទេ។ ដោយសារលក្ខណៈមិនត្រូវបានការពារតាមមធ្យោបាយណាមួយទេ វានឹងផ្ញើជាអត្ថបទធម្មតា។
-
- ឥឡូវនេះសូមអានលក្ខណៈដែលបានការពារ UUID d4261dbb-dcd0-daab-ec95-deec088d532b។ ទូរសព្ទចល័តរបស់អ្នកគួរប្រាប់ឱ្យអ្នកផ្គូផ្គង និងភ្ជាប់ សារអាចប្រែប្រួលអាស្រ័យលើប្រព័ន្ធប្រតិបត្តិការទូរសព្ទរបស់អ្នក។ បន្ទាប់ពីអ្នកទទួលយកសំណើដើម្បីផ្គូផ្គង អ្នកគួរតែផ្ញើសារនៅលើកុងសូលដូចខាងក្រោម៖
ចំណាំ៖ ឧបសម្ព័ន្ធ A នៅចុងបញ្ចប់នៃសៀវភៅណែនាំនេះមានសេចក្តីសង្ខេបនៃសមត្ថភាព I/O និងវិធីសាស្ត្រផ្គូផ្គងសម្រាប់ជាឯកសារយោង។ ឧបសម្ព័ន្ធ B សង្ខេបរបៀបសុវត្ថិភាពប៊្លូធូស។
ការកំណត់រចនាសម្ព័ន្ធកម្មវិធីគ្រប់គ្រងសុវត្ថិភាព
កម្មវិធីគ្រប់គ្រងសុវត្ថិភាពគឺជាផ្នែកមួយនៃជង់ប៊្លូធូសដែលកំណត់មុខងារសុវត្ថិភាពណាមួយដែលត្រូវប្រើ។ មុខងារទាំងនេះរួមមានការការពារមនុស្សនៅកណ្តាល (MITM) ការតភ្ជាប់ LE Secure (ហៅកាត់ថា ECDH) ទាមទារការបញ្ជាក់សម្រាប់ការភ្ជាប់។ / ការផ្សារភ្ជាប់ (សូមមើលឧបសម្ព័ន្ធ A សម្រាប់សេចក្តីសង្ខេប) ។ នៅក្នុងផ្នែកនេះអ្នកនឹងឃើញការដំឡើងសាមញ្ញ។
- ដំឡើង SM ជាមួយនឹងការកំណត់ដែលចង់បាន។ ផ្នែករឹងសម្រាប់មន្ទីរពិសោធន៍នេះធ្វើឱ្យវាងាយស្រួលក្នុងការបង្ហាញលេខសម្ងាត់នៅលើកុងសូល។ ការបញ្ចូលលេខសម្ងាត់គឺជាតម្រូវការដើម្បីបើកការការពារ MITM ។ បន្ថែមកូដខាងក្រោមទៅកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ sl_bt_system_boot_id របស់អ្នក។ វាអនុញ្ញាតឱ្យមនុស្សនៅកណ្តាល និងជូនដំណឹងដល់ឧបករណ៍ពីចម្ងាយថាយើងមានសមត្ថភាពក្នុងការបង្ហាញលេខសម្ងាត់ ប៉ុន្តែនោះជាអ្វីទាំងអស់។
- ដើម្បីបង្ហាញលេខសម្ងាត់នៅលើកុងសូល អ្នកដោះស្រាយព្រឹត្តិការណ៍ត្រូវបានទាមទារដូចបានបង្ហាញខាងក្រោម៖
- កំណត់របៀបនៃការផ្សារភ្ជាប់ ចំនួនអតិបរមានៃចំណង។ល។ ប្រើកូដខាងក្រោមដើម្បីចាប់ផ្តើម៖
ការកំណត់ទាំងនេះអាចត្រូវបានប្រើដើម្បីកំណត់សមត្ថភាពរបស់អ្នកវាយប្រហារក្នុងការភ្ជាប់ជាមួយឧបករណ៍របស់អ្នក។ ប្រសិនបើផលិតផលរបស់អ្នកត្រូវមានអ្នកប្រើប្រាស់តែម្នាក់ នោះអ្នកអាចកំណត់ចំណងអតិបរមាត្រឹម 1។ កន្លែងដ៏ល្អដើម្បីបន្ថែមការហៅទូរសព្ទទាំងនេះគឺនៅក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ sl_bt_system_boot_id។ យើងនឹងមិនបើកការផ្សារភ្ជាប់នៅពេលនេះដើម្បីធ្វើឱ្យបន្ទប់ពិសោធន៍ដែលនៅសល់ដំណើរការទៅដោយរលូននោះទេ ប៉ុន្តែយើងកំណត់គោលការណ៍នៃការផ្សារភ្ជាប់ដើម្បីអនុញ្ញាតឱ្យមានចំណងតែមួយប៉ុណ្ណោះ។ សម្រាប់ឯកសារយោង ឯកសារសម្រាប់ APIs ទាំងនេះត្រូវបានរកឃើញនៅទីនេះ និងនៅទីនេះ។
- បន្ថែមកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍សម្រាប់ sl_bt_evt_sm_bonded_id និង sl_bt_evt_sm_bonding_failed_id ។ ការប្រើប្រាស់សំខាន់សម្រាប់ព្រឹត្តិការណ៍ទាំងនេះគឺជាព័ត៌មាននាពេលបច្ចុប្បន្ន ប៉ុន្តែនៅពេលក្រោយនៅក្នុងមន្ទីរពិសោធន៍ អ្នកនឹងបន្ថែមមុខងារ។
- បង្កើតនិងបញ្ចេញពន្លឺទៅក្តារគោលដៅ។ ភ្ជាប់ជាមួយ EFRConnect ហើយអានលក្ខណៈការពារដូចពីមុន។ លើកនេះ អ្នកនឹងឃើញលេខសម្ងាត់បង្ហាញនៅលើកុងសូល។ បញ្ចូលលេខសម្ងាត់នេះនៅលើទូរស័ព្ទដៃរបស់អ្នក នៅពេលត្រូវបានសួរ។
- សាកល្បងការបញ្ជាក់ចំណង។ មុខងារនេះផ្តល់ឱ្យអ្នកប្រើប្រាស់នូវលទ្ធភាពទាមទារឱ្យមានការបញ្ជាក់អំពីការភ្ជាប់សំណើ។ ការធ្វើដូច្នេះផ្តល់ឱ្យកម្មវិធីនូវការគ្រប់គ្រងលើឧបករណ៍ណាមួយដែលវាភ្ជាប់ជាមួយ។ លទ្ធភាពមួយគឺតម្រូវឱ្យអ្នកប្រើប្រាស់ចុចប៊ូតុងមួយ មុននឹងអនុញ្ញាតឱ្យមានចំណង។
- បើកការកំណត់ប៊្លូធូសនៅក្នុងទូរស័ព្ទដៃរបស់អ្នក ហើយដកចំណងទៅឧបករណ៍ EFR32។ ការអនុវត្តទូរស័ព្ទចល័តមានភាពខុសប្លែកគ្នា ដូច្នេះជំហាននេះប្រហែលជាមិនចាំបាច់ទេ។ ប្រសិនបើអ្នកមិនឃើញឧបករណ៍ 'ការបណ្តុះបណ្តាល' នៅក្នុងការកំណត់ប៊្លូធូសរបស់អ្នកទេ គ្រាន់តែបន្តទៅជំហានបន្ទាប់។
- នៅក្នុងសមាសធាតុកម្មវិធី សូមដំឡើងឧទាហរណ៍មួយនៃកម្មវិធីដោះស្រាយប៊ូតុងសាមញ្ញ។
- រួមបញ្ចូលបឋមកថា file sl_simple_button_instances.h ក្នុង app.c
- បន្ថែមកម្មវិធីដោះស្រាយសម្រាប់ព្រឹត្តិការណ៍ sl_bt_evt_sm_bonding_confirm_id ។ ការងារចម្បងរបស់អ្នកដោះស្រាយព្រឹត្តិការណ៍នេះគឺដើម្បីជូនដំណឹងដល់អ្នកប្រើប្រាស់ថាឧបករណ៍ពីចម្ងាយកំពុងស្នើសុំចំណងថ្មី។
- បន្ថែមមុខងារហៅត្រឡប់សម្រាប់ឧបករណ៍ដោះស្រាយប៊ូតុងសាមញ្ញដើម្បីផ្ញើសញ្ញាទៅជង់ប៊្លូធូសដែលបង្ហាញថាប៊ូតុងមួយត្រូវបានចុច។ វាបដិសេធការហៅត្រឡប់លំនាំដើមដែលគ្រាន់តែត្រឡប់។
- បន្ថែមឧបករណ៍ដោះស្រាយព្រឹត្តិការណ៍សញ្ញាខាងក្រៅ។ ព្រឹត្តិការណ៍នេះត្រូវបានលើកឡើងក្នុងការឆ្លើយតបទៅនឹងការទទួលសញ្ញាដូចជានៅក្នុងជំហានមុន។ ព្រឹត្តិការណ៍សញ្ញាខាងក្រៅនឹងត្រូវបានប្រើដើម្បីបញ្ជាក់ការភ្ជាប់។
- ផ្លាស់ប្តូរការហៅទៅ sl_bt_sm_configure ដើម្បីទាមទារការបញ្ជាក់ការភ្ជាប់ដូចជា
- បង្កើតឡើងវិញនិងបញ្ចេញពន្លឺ។
- ភ្ជាប់ជាមួយ EFRConnect ហើយអានលក្ខណៈការពារដូចពីមុន។ ឥឡូវអ្នកនឹងឃើញសារមួយនៅលើកុងសូលដូចខាងក្រោម៖
ចុច PB0 ដើម្បីបញ្ជាក់ការភ្ជាប់។ ឥឡូវនេះកុងសូលនឹងបង្ហាញលេខសម្ងាត់ដែលត្រូវបញ្ចូលនៅលើទូរស័ព្ទដៃសម្រាប់ការភ្ជាប់។ បញ្ចូលលេខសម្ងាត់ដើម្បីបញ្ចប់ដំណើរការភ្ជាប់។
ព័ត៌មានជំនួយ៖ ប្រើករណីលំនាំដើមក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ដើម្បីបោះពុម្ពសារនៅពេលជង់ផ្ញើព្រឹត្តិការណ៍ដែលមិនត្រូវបានដោះស្រាយ។ ជង់ប្រហែលជាកំពុងព្យាយាមប្រាប់អ្នកនូវអ្វីមួយដែលសំខាន់។
លើសពីមូលដ្ឋាន
នៅចំណុចនេះអ្នកបានយក advantage នៃលក្ខណៈពិសេសសុវត្ថិភាពដែលជង់របស់យើងមានផ្តល់ជូន។ ឥឡូវនេះ ចូរយើងកែលម្អការអនុវត្តតាមរយៈការប្រើប្រាស់មុខងារប្រកបដោយប្រាជ្ញានៅក្នុងការចោលរបស់យើង។ ជំហានខាងក្រោមគឺស្រេចចិត្ត និងឯករាជ្យពីគ្នាទៅវិញទៅមក អ្នកអាចបង្កើត និងបញ្ចេញពន្លឺបន្ទាប់គ្នា ដើម្បីមើលឥរិយាបថ ឬសាកល្បងទាំងអស់គ្នា។
- ផ្តាច់ការប៉ុនប៉ងមិនបានសម្រេច។ នេះគឺជាកន្លែងដ៏ល្អដើម្បីស្វែងរកការគំរាមកំហែង។ ប្រសិនបើឧបករណ៍ពីចម្ងាយមិនគាំទ្រការអ៊ិនគ្រីប/ការផ្ទៀងផ្ទាត់ ឬគ្រាន់តែមិនមានសោត្រឹមត្រូវ វាអាចជាអ្នកលួចចូល។ ដូច្នេះសូមបំបែកការតភ្ជាប់។ ព្យាយាមបន្ថែមការហៅទៅ sl_bt_connection_close() នៅក្នុងព្រឹត្តិការណ៍ sl_bt_sm_bonding_failed_id ។ API ត្រូវបានចងក្រងជាឯកសារនៅទីនេះ។
អ្នកអាចសាកល្បងមុខងារនេះដោយបញ្ចូលលេខសម្ងាត់ខុស។
- អនុញ្ញាតឱ្យមានចំណងនៅពេលជាក់លាក់ប៉ុណ្ណោះ។ នេះកំណត់ពេលវេលាដែលអ្នកវាយប្រហារត្រូវបង្កើតចំណង និងធ្វើឱ្យវាអាចប្រើមុខងារ 'អនុញ្ញាតតែការតភ្ជាប់ដែលមានចំណង' ។ អ្នករចនាអាចជ្រើសរើសរបៀបបើក ឬបិទរបៀបអាចជាប់បាន។ សម្រាប់គោលបំណងបង្ហាញនៅទីនេះ យើងនឹងបើក 'របៀបដំឡើង' ជាមួយ PB1 ហើយប្រើកម្មវិធីកំណត់ម៉ោងដើម្បីបិទវាបន្ទាប់ពី 30 វិនាទី។
- ដំឡើងឧទាហរណ៍ទីពីរនៃចំណុចប្រទាក់ប៊ូតុងសាមញ្ញ។ នេះនឹងអនុញ្ញាតឱ្យប្រើ PB1 ។
- កែប្រែការហៅត្រឡប់មកវិញដើម្បីផ្ញើសញ្ញាផ្សេងទៅជង់ដើម្បីបើក/បិទការភ្ជាប់។ លទ្ធផលគួរតែមើលទៅដូចនេះ៖
- កែប្រែឧបករណ៍ដោះស្រាយព្រឹត្តិការណ៍សញ្ញាខាងក្រៅ ដើម្បីឱ្យវាគ្រប់គ្រងសញ្ញាថ្មីនេះ។ លទ្ធផលគួរតែដូចនេះ៖
- បន្ថែមកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍សម្រាប់ព្រឹត្តិការណ៍ sl_bt_evt_system_soft_timer_id ។ វានឹងប្រើដើម្បីបិទរបៀបរៀបចំ។
- កូដខាងក្រោមអាចត្រូវបានប្រើដើម្បីបើករបៀប bondable និងអនុញ្ញាតឱ្យមានការតភ្ជាប់ទាំងអស់ ឬដើម្បីបិទរបៀប bondable ហើយអនុញ្ញាតតែការតភ្ជាប់ពីឧបករណ៍ដែលបានភ្ជាប់៖
- បន្ថែមការហៅខាងក្រោមនៅក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ sl_bt_system_boot_id
- បង្កើតគម្រោង ហើយបញ្ចេញវាទៅឧបករណ៍។
- សាកល្បងភ្ជាប់ទៅឧបករណ៍ជាមួយ EFRConnect ។ ការតភ្ជាប់គួរតែបរាជ័យ។
- ឥឡូវសាកល្បងចុច PB1 មុនពេលភ្ជាប់ជាមួយ EFRConnect។ លើកនេះការតភ្ជាប់នឹងទទួលបានជោគជ័យ។ បន្ទាប់ពី 30 វិនាទី អ្នកនឹងឃើញសារនៅលើកុងសូលដែលបង្ហាញថាឧបករណ៍នេះកំពុងចេញពីរបៀបដំឡើង។ នេះមានន័យថារបៀបជាប់បំណុលឥឡូវត្រូវបានបិទ។
- បង្កើនសុវត្ថិភាពលើការបង្កើតការតភ្ជាប់។ ដោយសារសុវត្ថិភាពគឺស្រេចចិត្ត យើងគួរតែស្នើសុំការតភ្ជាប់ដែលបានអ៊ិនគ្រីបឱ្យបានឆាប់តាមដែលអាចធ្វើទៅបាន ជាជាងពឹងផ្អែកលើលក្ខណៈ GATT ។ API ត្រូវបានចងក្រងជាឯកសារនៅទីនេះ។ កន្លែងដ៏ល្អដើម្បីហៅ API នេះគឺនៅក្នុងព្រឹត្តិការណ៍ sl_bt_evt_connection_opened_id។ ចំណុចទាញនៃការតភ្ជាប់មាននៅក្នុងអថេរនៃការតភ្ជាប់។
អត្តសញ្ញាណសុវត្ថិភាព
ឥឡូវនេះ យើងមានឧបករណ៍ប៊្លូធូសដែលមានសុវត្ថិភាពជាងមុន អនុញ្ញាតឱ្យធ្វើឱ្យប្រសើរឡើងនូវជំហាននៃការផ្ទៀងផ្ទាត់។ អ្នកបានឃើញពីរបៀបផ្ទៀងផ្ទាត់អត្តសញ្ញាណសុវត្ថិភាពនៃឧបករណ៍តុដេកជាមួយបន្ទាត់ពាក្យបញ្ជានៅក្នុងមន្ទីរពិសោធន៍បណ្តុះបណ្តាលពីមុន។ នៅក្នុងផ្នែកនេះ យើងនឹងឃើញពីរបៀបដែលឧបករណ៍ BLE មួយអាចផ្ទៀងផ្ទាត់អត្តសញ្ញាណនៃឧបករណ៍ BLE ផ្សេងទៀតដោយស្នើសុំខ្សែសង្វាក់វិញ្ញាបនបត្ររបស់វា និងផ្ញើបញ្ហាប្រឈមមួយ។ ផ្នែកតុដេកដែលមានសុវត្ថិភាពទាំងអស់មានវិញ្ញាបនបត្រឧបករណ៍ផ្ទាល់ខ្លួន និងវិញ្ញាបនបត្របាច់។ វិញ្ញាបនបត្ររបស់រោងចក្រ និងឫសត្រូវបានសរសេរកូដរឹងទៅក្នុងកម្មវិធីអតិថិជន ដើម្បីបើកការផ្ទៀងផ្ទាត់ខ្សែសង្វាក់វិញ្ញាបនបត្រទាំងមូល។ សូមមើល AN1268 សម្រាប់ព័ត៌មានលម្អិតអំពីអត្តសញ្ញាណសុវត្ថិភាព។
- កំណត់សតិបណ្ដោះអាសន្នសកលសម្រាប់ការរក្សាទុកហត្ថលេខាបញ្ជាក់ឧបករណ៍ដូចខាងក្រោម៖
- កំណត់ការកំណត់រចនាសម្ព័ន្ធកម្មវិធីគ្រប់គ្រងសុវត្ថិភាពដើម្បីប្រើការផ្គូផ្គង JustWorks ។ នេះត្រូវបានធ្វើដូច្នេះការតភ្ជាប់ត្រូវបានអ៊ិនគ្រីប។ នៅក្នុងការអនុវត្ត ការការពារ MITM គួរតែត្រូវបានប្រើ ប៉ុន្តែដើម្បីឱ្យមន្ទីរពិសោធន៍មានភាពសាមញ្ញ យើងនឹងប្រើ JustWorks ។ ផ្លាស់ប្តូរការហៅទៅ sl_bt_sm_configure ត្រឡប់ទៅខាងក្រោម៖
ដូចគ្នានេះផងដែរ, បញ្ចេញមតិអំពីការហៅទៅ setup_mode (ពិត) នៅក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ system_boot ។
- បើក helpers.c ពីសម្ភារៈដែលបានផ្តល់ ហើយចម្លងមាតិកាទៅក្នុង app.c ។ មុខងារហៅត្រឡប់មកវិញទាំងនេះអនុវត្តភារកិច្ចដូចជាការបែងចែកវិញ្ញាបនបត្រ ដូច្នេះពួកគេអាចផ្ញើតាម BLE ផ្ទៀងផ្ទាត់ខ្សែសង្វាក់វិញ្ញាបនបត្រ និងបង្កើត/ផ្ទៀងផ្ទាត់បញ្ហាប្រឈម។
- វាចាំបាច់ដើម្បីកំណត់ទំហំឯកតាផ្ទេរអតិបរមា (MTU) ដូច្នេះវិញ្ញាបនបត្រអាចត្រូវបានបែងចែកនិងប្រមូលផ្តុំឡើងវិញ។ កំណត់អថេរសកលដើម្បីរក្សាទុក MTU ដូចដែលបានបង្ហាញនៅទីនេះ៖
បន្ទាប់មកបន្ថែមកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍សម្រាប់ព្រឹត្តិការណ៍ផ្លាស់ប្តូរ GATT MTU ដូចបានបង្ហាញខាងក្រោម៖
- មានលក្ខណៈទិន្នន័យអ្នកប្រើប្រាស់ចំនួនបីដែលអាចអានបាន។ លក្ខណៈទាំងនេះត្រូវបានប្រើដើម្បីទំនាក់ទំនងវិញ្ញាបនបត្រឧបករណ៍ វិញ្ញាបនបត្របាច់ និងបញ្ហាប្រឈម។ មុខងារហៅត្រឡប់មកវិញត្រូវបានប្រើដើម្បីដោះស្រាយសំណើអានរបស់អ្នកប្រើប្រាស់ទាំងនេះ។ បន្ថែមកម្មវិធីគ្រប់គ្រងដើម្បីហៅមុខងារនេះដូចបង្ហាញខាងក្រោម៖
ការហៅត្រឡប់មកវិញប្រើ 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 ។
- អានឧបករណ៍ និងវិញ្ញាបនបត្រជាបាច់ ហើយផ្ទៀងផ្ទាត់ខ្សែសង្វាក់វិញ្ញាបនបត្រដោយប្រើរោងចក្រ និងវិញ្ញាបនបត្រ root ដែលវាបានរក្សាទុកក្នុងពន្លឺ។
- ផ្ញើបញ្ហាប្រឈមចៃដន្យទៅម៉ាស៊ីនមេ។
- ការព្យាយាមផ្ទៀងផ្ទាត់ការឆ្លើយតបទៅនឹងបញ្ហាប្រឈម។
- បិទការតភ្ជាប់ ប្រសិនបើការផ្ទៀងផ្ទាត់ណាមួយបរាជ័យ។
- បង្កើត និងបញ្ចេញគម្រោងម៉ាស៊ីនមេទៅកាន់ម៉ាស៊ីនមេ WSTK / radioboard របស់អ្នក។
- នាំចូលគម្រោងអតិថិជនពីថតម៉ាស៊ីនភ្ញៀវនៅក្នុងសម្ភារៈដែលបានផ្តល់។ បង្កើត និងបញ្ចេញគម្រោងអតិថិជនទៅកាន់អតិថិជន WSTK/radioboard របស់អ្នក។
- ចុចកំណត់ឡើងវិញនៅលើម៉ាស៊ីនភ្ញៀវ WSTK ហើយបើកកុងសូលសៀរៀល។ ម៉ាស៊ីនភ្ញៀវចាប់ផ្តើមស្កេនរកឧបករណ៍ផ្សាយពាណិជ្ជកម្មសេវាកម្មអត្តសញ្ញាណសុវត្ថិភាពរបស់យើង ហើយនឹងភ្ជាប់នៅពេលដែលវារកឃើញ។
- ម៉ាស៊ីនភ្ញៀវនឹងបង្ហាញសារមួយចំនួនដើម្បីបង្ហាញថាវាបានរកឃើញម៉ាស៊ីនមេជាមួយនឹងសេវាកម្មដែលចង់បាន និងសារស្ថានភាពអំពីការផ្ទៀងផ្ទាត់ខ្សែសង្វាក់វិញ្ញាបនបត្រ។
- ប្រសិនបើការផ្ទៀងផ្ទាត់ឆ្លងកាត់ នោះអតិថិជននឹងបង្កើតលេខចៃដន្យ ហៅថាបញ្ហាប្រឈម ហើយផ្ញើវាទៅម៉ាស៊ីនមេ។ ម៉ាស៊ីនមេនឹងចុះហត្ថលេខាលើបញ្ហាប្រឈមជាមួយនឹងសោឧបករណ៍ឯកជនដែលរក្សាទុកដោយសុវត្ថិភាព ហើយហត្ថលេខាត្រឡប់ទៅអតិថិជនវិញ នេះហៅថាការឆ្លើយតបបញ្ហាប្រឈម។ បន្ទាប់មកម៉ាស៊ីនភ្ញៀវប្រើសោសាធារណៈនៅក្នុងវិញ្ញាបនបត្រឧបករណ៍ដែលបានទទួលពីមុនដើម្បីផ្ទៀងផ្ទាត់ហត្ថលេខា។ នេះត្រូវបានធ្វើដើម្បីបញ្ជាក់ថាម៉ាស៊ីនមេពិតជាមានសោឯកជនដែលខ្លួនអះអាងថាមាន។ ប្រសិនបើបញ្ហាប្រឈមត្រូវបានផ្ទៀងផ្ទាត់ត្រឹមត្រូវ សារមួយត្រូវបានបង្ហាញចំពោះឥទ្ធិពលនោះ។ បើមិនដូច្នេះទេ ការតភ្ជាប់ត្រូវបានបិទ ហើយសារមួយត្រូវបានបង្ហាញដែលពន្យល់ពីមូលហេតុ។
- ឥឡូវនេះ សូមផ្ញើវិញ្ញាបនបត្រមិនត្រឹមត្រូវ ដើម្បីបញ្ជាក់ថាការផ្ទៀងផ្ទាត់ពិតជាដំណើរការ។ អ្នកអាចកែប្រែ user_read_request_cb() ដើម្បីខូចទិន្នន័យវិញ្ញាបនបត្រ ឬការឆ្លើយតបបញ្ហាប្រឈម។
ឧបសម្ព័ន្ធ A – សមត្ថភាព I/O និងវិធីសាស្ត្រផ្គូផ្គង 
ឧបសម្ព័ន្ធ ខ - របៀបសុវត្ថិភាព និងកម្រិត
របៀបសុវត្ថិភាព 1 គឺជារបៀបតែមួយគត់ដែលគាំទ្រសម្រាប់ Bluetooth Low Energy នៅក្នុងជង់របស់ Silicon Labs។ កម្រិតមានដូចខាងក្រោម៖
- កម្រិត 1 គ្មានសុវត្ថិភាព
- កម្រិតទី 2 ការផ្គូផ្គងដែលមិនបានផ្ទៀងផ្ទាត់ជាមួយនឹងការអ៊ិនគ្រីប
- ការផ្គូផ្គងផ្ទៀងផ្ទាត់កម្រិតទី 3 ជាមួយនឹងការអ៊ិនគ្រីប
- កម្រិតទី 4 ការតភ្ជាប់សុវត្ថិភាពដែលបានផ្ទៀងផ្ទាត់ជាមួយនឹងការអ៊ិនគ្រីបខ្លាំង (ការផ្លាស់ប្តូរសោ ECDH)
ឯកសារ/ធនធាន
![]() |
silabs 21Q2 សុវត្ថិភាពឧបករណ៍ BLE Security Lab [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់ 21Q2 សុវត្ថិភាពឧបករណ៍ BLE មន្ទីរពិសោធន៍សុវត្ថិភាព ឧបករណ៍ BLE សុវត្ថិភាព មន្ទីរពិសោធន៍សុវត្ថិភាព មន្ទីរពិសោធន៍សុវត្ថិភាព |