silabs 21Q2 қауіпсіз BLE құрылғысы Қауіпсіздік зертханасы

BLE қауіпсіздік зертханасының нұсқаулығы

Бұл зертханада сіз қауіпсіз BLE құрылғысын қалай жасау керектігін көресіз. Біз басынан бастаймызview стек мүмкіндіктерінің кейбірін қалай пайдалану керектігі туралы және қауіпсіз қосылымдарға арналған әдістер туралы кейбір жалпы кеңестерге көшу және соңында біз перифериялық құрылғыны түпнұсқа деп анықтау үшін BLE арқылы құрылғы сертификаттарын қалай пайдалану керектігін көреміз.

Бастау

Bluetooth сampСіз құрастыратын қолданба жүктеушімен бірге пайдалануға арналған. Егер сіз жаңа EFR32MG21B құрылғысымен жұмыс істеп жатсаңыз, оның жүктеушісі болмайды. Алдын ала құрастырылған жүктегішті платформаның жүктегішінен таба аласызample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a SDK қалтасын.

  1. Soc-бос s әрпінен бастаңызampқолданба. Бұл сample қолданбасы үлгі ретінде пайдаланылады және кез келген BLE қолданбасы үшін жақсы бастау нүктесі болады.
    1. Simplicity Studio бағдарламасынан Silicon Labs жобасы шеберін ашыңыз 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. Бағдарламада не болып жатқанын бақылау үшін Simplicity Studio бағдарламасындағы консольге басып шығару үшін сериялық портты қолданамыз. Бұл құрамдастарды табудың ең оңай жолы - оларды көрсетілгендей БАҒДАРЛАМАЛЫҚ ҚҰРАМДЫҚТАР диалогтық терезесінде іздеу:
      1. IO Stream USART компонентін орнатыңыз
      2. IO Stream Retarget STDIO компонентін орнатыңыз
      3. Стандартты енгізу/шығару компонентін орнатыңыз
      4. Log компонентін орнатыңыз
      5. Тақтаны басқару компонентін ашыңыз және «Виртуалды COM UART қосу» қосыңыз
      6. «Адаптерлерді жөндеу» тақтасында адаптерді тінтуірдің оң жақ түймешігімен басып, «Консолді іске қосу» тармағын таңдаңыз. «1-серия» қойындысын таңдап, курсорды консоль терезесінің мәтін енгізу жолына қойып, консольді ояту үшін enter пернесін басыңыз.
  4. Қосылым дескрипторын сақтау үшін app.c ішінде табылған sl_bt_on_event() ішінде жергілікті айнымалы мәнді жасаңыз. Айнымалы статикалық болуы керек, себебі бұл функция оқиға стек арқылы көтерілген сайын шақырылады және біз мәннің тұрақты болуын қалаймыз. Қосылым тұтқасы кейінірек пайдаланыладызертхананың бөлімі.
  5. Қосылғанымызды, қауіпсіздік режимдерін, т.б. көру үшін оқиғаларға кейбір app_log() мәлімдемелерін енгізіңіз
      1. app_log.h тақырыбын қосыңыз file
      2. sl_bt_evt_connection_opened – байланыс дескрипторын басып шығару және қосылым тұтқасын сақтау. Байланыс тұтқасы 0xFF болса, қосылған құрылғылар арасында байланыс болмайды. Бар оқиға өңдегішті келесідей етіп өзгертіңіз:
      3. sl_bt_evt_connection_parameters – қауіпсіздік режимі. Бұл қауіпсіздік режимі өзгерген кезде көру үшін жасалады. Қауіпсіздік режимдерінің нөмірленуінде айырмашылық бар, мұнда қауіпсіздік режимі 1, 0 мәнімен нөмірленеді және т.б. . Қолданбаңызға келесі оқиға өңдеушісін қосыңыз:
      4. sl_bt_evt_connection_closed_id. Бұл оқиға өңдегіші қосылым дескрипторын жаңарту үшін өзгертілген. 0xFF мәні белсенді қосылым жоқ екенін көрсету үшін пайдаланылады. app_log() пәрмені қосылымның жабылу себебін басып шығару үшін пайдаланылады, күй кодтарының тізімі осында. Бар оқиға өңдегішті келесідей етіп өзгертіңіз:
  6. Жобаны құрастырыңыз және жарқыратыңыз. Осы кезде біз s іске қосамызampGATT дерекқорынан басқа, оның ешбір өзгеріссіз қалай әрекет ететінін көру үшін қолданба.
  7. EFRConnect мобильді қолданбасымен келесідей қосылыңыз:
      1. «Bluetooth браузері» белгішесін түртіңіз.
      2. «Тренинг» деп аталатын құрылғыдағы «Қосылу» белгішесін түртіңіз.
  8. Қорғалмаған сипаттаманы келесідей оқыңыз:
      1. UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 бар белгісіз қызмет астындағы "Қосымша ақпарат" сілтемесін түртіңіз.
      2. «Оқу» белгішесін түрту арқылы қорғалмаған сипаттаманы оқыңыз, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c. Бұл жерде тосынсыйлар жоқ. Сипаттама ешқандай жолмен қорғалмағандықтан, ол ашық мәтінде жіберіледі.
  9. Енді қорғалған сипаттаманы оқыңыз, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Ұялы телефоныңыз жұптастыруды және қосылуды сұрауы керек, хабар ұялы ОЖ-ға байланысты әр түрлі болуы мүмкін. Жұптау сұрауын қабылдағаннан кейін консольде келесідей хабар болуы керек: Ескерту: Осы нұсқаулықтың соңындағы А қосымшасында анықтама үшін енгізу/шығару мүмкіндіктері мен жұптастыру әдістерінің қысқаша мазмұны бар. В қосымшасында Bluetooth қауіпсіздік режимдері жинақталған.

Қауіпсіздік менеджерінің конфигурациясы

Қауіпсіздік менеджері қандай қауіпсіздік мүмкіндіктерінің пайдаланылатынын анықтайтын Bluetooth стекінің бөлігі болып табылады. Бұл мүмкіндіктерге ортадағы адам (MITM) қорғанысы, байланыстыру үшін растауды талап ететін LE Secure қосылымдары (aka ECDH) және т.б. кіреді. Қауіпсіздік менеджері жұптастыру үшін қандай әдіс қолданылатынын анықтау үшін пайдаланылатын енгізу/шығару мүмкіндіктерін де өңдейді. /байланыс (қорытынды үшін А қосымшасын қараңыз). Бұл бөлімде сіз қарапайым орнатуды көресіз.

  1. Қажетті конфигурациямен SM орнатыңыз. Бұл зертханаға арналған жабдық консольде рұқсат кілтін көрсетуді жеңілдетеді. Құпия сөзді енгізу MITM қорғауын қосу талабы болып табылады. Келесі кодты sl_bt_system_boot_id оқиға өңдегішіне қосыңыз. Бұл ортадағы адам функциясын қосады және қашықтағы құрылғыға рұқсат кілтін көрсету мүмкіндігіміз бар екенін хабарлайды, бірақ бұл бәрі.
  2. Консольде рұқсат кілтін көрсету үшін төменде көрсетілгендей оқиға өңдегіші қажет:
  3. Байланыс режимін, байланыстырулардың максималды санын, т.б. орнатыңыз. Жұмысты бастау үшін келесі кодты пайдаланыңыз:Бұл параметрлерді шабуылдаушының құрылғыңызбен байланысу мүмкіндігін шектеу үшін пайдалануға болады. Өнімде тек бір пайдаланушы болуы керек болса, ең көп байланыстарды 1-ге дейін шектей аласыз. Бұл қоңырауларды қосу үшін жақсы орын sl_bt_system_boot_id оқиға өңдегішінде болады. Зертхананың қалған бөлігі біркелкі өтуі үшін біз қазір байланыстыруды қоспаймыз, бірақ біз тек бір байланысқа рұқсат беретін байланыс саясатын орнатамыз. Анықтама үшін осы API үшін құжаттаманы осы жерден және осы жерден табуға болады.
  4. sl_bt_evt_sm_bonded_id және sl_bt_evt_sm_bonding_failed_id үшін оқиға өңдегіштерін қосыңыз. Бұл оқиғалар үшін негізгі пайдалану қазіргі уақытта ақпараттық болып табылады, бірақ кейінірек зертханада функционалдылықты қосасыз.
  5. Құрастыру және мақсатты тақтаға жыпылықтау. EFRConnect арқылы қосылып, бұрынғыдай қорғалған сипаттаманы оқыңыз. Бұл жолы консольде көрсетілетін рұқсат кілтін көресіз. Сұралған кезде ұялы телефоныңызға осы рұқсат кілтін енгізіңіз.
  6. Байланысты растауды қолданып көріңіз. Бұл мүмкіндік пайдаланушыға байланыстыру сұрауларының расталуын талап ету мүмкіндігін береді. Бұл қолданбаға қай теңдес құрылғылармен байланысатынын басқаруға мүмкіндік береді. Мүмкіндіктердің бірі - байланысқа рұқсат бермес бұрын пайдаланушыдан түймені басуды талап ету.
    1. Ұялы телефоныңыздағы Bluetooth параметрлерін ашыңыз және EFR32 құрылғысының байланысын алыңыз. Ұялы телефонды іске асыру әртүрлі, сондықтан бұл қадам қажет болмауы мүмкін. Bluetooth параметрлерінде «Тренинг» құрылғысын көрмесеңіз, келесі қадамға өтіңіз.
    2. Бағдарламалық құрал құрамдастарында қарапайым түйме өңдегішінің бір данасын орнатыңыз.
    3. Тақырыпты қосыңыз file app.c ішіндегі sl_simple_button_instances.h
    4. sl_bt_evt_sm_bonding_confirm_id оқиғасы үшін өңдегішті қосыңыз. Бұл оқиға өңдеушісінің негізгі жұмысы пайдаланушыға қашықтағы құрылғы жаңа байланыс сұрайтыны туралы хабарлау болып табылады.
    5. Bluetooth стекіне түйменің басылғанын көрсететін сигнал жіберу үшін қарапайым түйме өңдеушісі үшін кері шақыру функциясын қосыңыз. Бұл жай ғана қайтарылатын әдепкі кері шақыруды жоққа шығарады.
    6. Сыртқы сигнал оқиғасының өңдеушісін қосыңыз. Бұл оқиға алдыңғы қадамдағы сияқты сигналды қабылдауға жауап ретінде көтеріледі. Сыртқы сигнал оқиғасы байланыстыруды растау үшін пайдаланылады.
    7. сияқты байланыстыруды растауды талап ету үшін қоңырауды sl_bt_sm_configure деп өзгертіңіз
    8. Қайта құру және жыпылықтау.
    9. EFRConnect арқылы қосылып, бұрынғыдай қорғалған сипаттаманы оқыңыз. Енді сіз консольде келесі хабарламаны көресіз:Байланыстыруды растау үшін PB0 түймесін басыңыз. Енді консоль қосылу үшін ұялы телефонға енгізілетін рұқсат кілтін көрсетеді. Байланыстыру процесін аяқтау үшін рұқсат кілтін енгізіңіз.

 

Кеңес: Стек өңделмеген оқиғаны жіберген кезде хабарды басып шығару үшін оқиға өңдегішіндегі әдепкі регистрді пайдаланыңыз. Стек сізге маңызды нәрсені айтқысы келуі мүмкін.

Негіздерден тыс

Осы кезде сіз алдын ала алдыңызtagбіздің стек ұсынатын қауіпсіздік мүмкіндіктерінің бірі. Енді қолымыздағы мүмкіндіктерді дұрыс пайдалану арқылы іске асыруды жақсартайық. Келесі қадамдар міндетті емес және бір-бірінен тәуелсіз, әрекетті көру немесе барлығын бірге көру үшін әрқайсысынан кейін құрастырып, жыпылықтай аласыз.

  1. Сәтсіз байланыс әрекеттері кезінде ажыратыңыз. Бұл қауіптерді анықтау үшін жақсы орын. Қашықтағы құрылғы шифрлауды/аутентификацияны қолдамаса немесе жай ғана дұрыс кілттер болмаса, бұл хакер болуы мүмкін. Ендеше, байланысты үзейік. sl_bt_sm_bonding_failed_id оқиғасында sl_bt_connection_close() қызметіне қоңырау қосып көріңіз. API осы жерде құжатталған.Қате кілтті енгізу арқылы бұл мүмкіндікті тексеруге болады.
  2. Белгілі бір уақытта ғана байланыстыруға мүмкіндік береді. Бұл шабуылдаушының байланыс құру уақытын шектейді және «тек байланыстырылған қосылымдарға рұқсат беру» мүмкіндігін пайдалануға мүмкіндік береді. Дизайнер байланыстыру режимін қосу немесе өшіру жолын таңдай алады. Мұнда көрсету мақсатында біз PB1 арқылы «орнату режимін» қосамыз және оны 30 секундтан кейін өшіру үшін таймерді пайдаланамыз.
    1. Қарапайым түйме интерфейсінің екінші данасын орнатыңыз. Бұл PB1 пайдалануға мүмкіндік береді.
    2. Байланыстыруды қосу/өшіру үшін стекке басқа сигнал жіберу үшін кері қоңырауды өзгертіңіз. Нәтиже келесідей болуы керек:
    3. Сыртқы сигнал оқиғасының өңдеушісін осы жаңа сигналды өңдейтіндей өзгертіңіз. Нәтиже келесідей болуы керек:
    4. sl_bt_evt_system_soft_timer_id оқиғасы үшін оқиға өңдеушісін қосыңыз. Бұл орнату режимін өшіру үшін пайдаланылады.
    5. Келесі кодты байланыстыру режимін қосу және барлық қосылымдарға рұқсат беру немесе қосылу режимін өшіру және тек қосылған құрылғылардан қосылуға рұқсат беру үшін пайдалануға болады:
    6. Келесі қоңырауды sl_bt_system_boot_id оқиға өңдегішіне қосыңыз
    7. Жобаны құрастырыңыз және оны құрылғыға жіберіңіз.
    8. Құрылғыға EFRConnect арқылы қосылып көріңіз. Қосылым сәтсіз болуы керек.
    9. Енді EFRConnect желісіне қосылу алдында PB1 түймесін басып көріңіз. Бұл жолы байланыс сәтті болады. 30 секундтан кейін консольде құрылғының орнату режимінен шығып жатқанын көрсететін хабарды көресіз. Бұл байланыстыру режимі енді өшірілгенін білдіреді.
  3. Байланысты құру кезінде қауіпсіздікті арттырыңыз. Қауіпсіздік міндетті емес болғандықтан, GATT сипаттамаларына сенбей, шифрланған қосылымды мүмкіндігінше тезірек сұрауымыз керек. API осы жерде құжатталған. Бұл API шақыру үшін жақсы орын sl_bt_evt_connection_opened_id оқиғасында. Қосылым дескрипторы қосылым айнымалысында қол жетімді.

Қауіпсіз идентификация

Енді бізде қауіпсіз Bluetooth құрылғысы бар, аутентификация қадамын жақсартуға мүмкіндік береді. Сіз алдыңғы оқу зертханаларында пәрмен жолы арқылы қойма құрылғыларының қауіпсіз идентификациясын қалай тексеру керектігін көрдіңіз. Бұл бөлімде біз бір BLE құрылғысы оның сертификаттар тізбегін сұрау және сынақ жіберу арқылы басқа BLE құрылғысының сәйкестігін қалай тексере алатынын көреміз. Барлық қауіпсіз қойма бөліктерінде өздерінің құрылғы сертификаты мен пакеттік сертификаты бар. Барлық сертификаттар тізбегін тексеруді қосу үшін зауыттық және түбірлік сертификаттар клиенттік қолданбаға қатты кодталған. Қауіпсіз идентификация туралы қосымша мәліметтер алу үшін AN1268 бөлімін қараңыз.

  1. Төмендегідей құрылғы аттестаттау қолтаңбасын сақтауға арналған жаһандық буферді анықтаңыз:
  2. JustWorks жұптауын пайдалану үшін қауіпсіздік менеджерінің конфигурациясын орнатыңыз. Бұл қосылым шифрланған болуы үшін жасалады. Іс жүзінде MITM қорғанысын пайдалану керек, бірақ зертхананы қарапайым ету үшін біз JustWorks қолданамыз. Қоңырауды sl_bt_sm_configure келесіге қайта өзгертіңіз:Сондай-ақ, system_boot оқиға өңдегішіндегі setup_mode(true) қоңырауына түсініктеме беріңіз.
  3. Берілген материалдардан helpers.c ашыңыз және мазмұнды app.c ішіне көшіріңіз. Бұл кері шақыру функциялары сертификаттарды BLE арқылы жіберуге болатындай сегменттеу, сертификаттар тізбегін тексеру және мәселені жасау/тексеру сияқты тапсырмаларды орындайды.
  4. Сертификаттарды сегменттеуге және қайта жинауға болатындай етіп максималды тасымалдау бірлігінің (MTU) өлшемін анықтау қажет. Мұнда көрсетілгендей MTU сақтау үшін жаһандық айнымалыны анықтаңыз:Содан кейін төменде көрсетілгендей GATT MTU алмасу оқиғасы үшін оқиға өңдеушісін қосыңыз:
  5. Оқуға болатын үш пайдаланушы деректерінің сипаттамасы бар. Бұл сипаттамалар құрылғы сертификатын, пакеттік сертификатты және сынақты хабарлау үшін пайдаланылады. Бұл пайдаланушы оқу сұрауларын өңдеу үшін кері шақыру функциясы пайдаланылады. Төменде көрсетілгендей осы функцияны шақыру үшін өңдегішті қосыңыз:Кері қоңырау №2 қадамнан сегментке дейін MTU пайдаланады және қажет болған жағдайда сертификаттарды жібереді. Ол қол қойылған шақыруды жіберуді де өңдейді.
  6. Клиент GATT сипаттамаларының бірін жазу арқылы сервер қол қоятын кездейсоқ санды шақыруды жібереді. Осы себепті қолданбада төмендегідей пайдаланушы жазу сұрау оқиғасы үшін өңдеушісі болуы керек:
  7. Қауіпсіз идентификациялық қолдауды қосыңыз fileжобаға:
    1. Жобаға берілген материалдардан app_se_manager_macro.h, app_se_manager_secure_identity.c және app_se_secure_identity.h. Мыналар files сертификат өлшемін алу, құрылғының ашық кілтін алу және тапсырмаға қол қою сияқты тапсырмалар үшін кейбір көмекші функцияларды қамтиды.
    2. app.c ішіне app_se_manager_secure_identity.h қосыңыз.
  8. Берілген материалдардан берілген gatt_configuration-attest.btconf файлын импорттаңыз. Бұл GATT дерекқоры қауіпсіз аттестация деп аталады, ол біздің құрылғының сәйкестігін растау үшін пайдаланылатын төрт сипаттаманы қамтиды. Оларға құрылғы сертификаты, пакеттік сертификат, шақыру және жауап кіреді.
  9. Шлюз сияқты құрылғыны имитациялау үшін пайдаланылатын клиент толық жоба ретінде ұсынылады, себебі оны құру күрделірек. Тұтастай алғанда, клиенттің жұмысы келесідей:
    1. Қауіпсіз аттестаттау қызметін жарнамалайтын құрылғыларды сканерлейді және оларға қосылады.
    2. GATT деректер базасының қызметтері мен сипаттамаларын ашады.
    3. Құрылғыны және пакеттік сертификаттарды оқиды және флэште сақталған зауыттық және түбірлік сертификатты пайдаланып сертификаттар тізбегін тексереді.
    4. Серверге кездейсоқ шақыру жібереді.
    5. Шағымға жауапты тексеру әрекеттері.
    6. Тексеру сәтсіз болған жағдайда қосылымды жабады.
  10. WSTK /radioboard серверіңізге сервер жобасын құрастырыңыз және жарқыратыңыз.
  11. Берілген материалдардағы клиенттік қалтадан клиент жобасын импорттаңыз. Клиенттік жобаны WSTK/radioboard клиентіне құрастырыңыз және жарқыратыңыз.
  12. WSTK клиентіндегі қалпына келтіру түймесін басып, сериялық консольді ашыңыз. Клиент қауіпсіз идентификациялық қызметімізді жарнамалайтын құрылғыларды сканерлей бастайды және біреуін тапқан кезде қосылады.
  13. Клиент қалаған қызметі бар серверді тапқанын және сертификат тізбегін тексеру туралы күй хабарларын көрсету үшін кейбір хабарламаларды көрсетеді.
  14. Егер тексеруден өтсе, клиент сынақ деп аталатын кездейсоқ санды жасайды және оны серверге жібереді. Сервер шақыруға өзінің қауіпсіз ұсталған жеке құрылғы кілтімен және клиентке қайтарылған қолтаңбамен қол қояды, бұл шақыруға жауап деп аталады. Содан кейін клиент қолтаңбаны тексеру үшін бұрын алынған құрылғы сертификатындағы ашық кілтті пайдаланады. Бұл серверде шынымен бар деп мәлімдеген жеке кілт бар екенін растау үшін жасалады. Сынақ дұрыс тексерілсе, бұл туралы хабарлама көрсетіледі; әйтпесе, байланыс жабылады және себебін түсіндіретін хабарлама көрсетіледі.
  15. Енді тексеру шынымен жұмыс істейтінін растау үшін жарамсыз сертификатты жіберіңіз. Сертификат деректерін немесе шақыру жауабын бұзу үшін user_read_request_cb() параметрін өзгертуге болады.

А қосымшасы – енгізу/шығару мүмкіндіктері және жұптастыру әдістері
В қосымшасы – Қауіпсіздік режимдері мен деңгейлері

Қауіпсіздік режимі 1 - Silicon Labs стекіндегі Bluetooth Low Energy үшін қолдау көрсетілетін жалғыз режим. Деңгейлері келесідей:

  • 1-деңгейде қауіпсіздік жоқ
  • 2-деңгей шифрлаумен расталмаған жұптастыру
  • Шифрлаумен 3-деңгей аутентификацияланған жұптау
  • Күшті шифрлауы бар 4-деңгей аутентификацияланған қауіпсіз қосылымдар (ECDH кілт алмасуы)

 

Құжаттар / Ресурстар

silabs 21Q2 қауіпсіз BLE құрылғысы Қауіпсіздік зертханасы [pdf] Пайдаланушы нұсқаулығы
21Q2 қауіпсіз BLE құрылғысының қауіпсіздік зертханасы, қауіпсіз BLE құрылғысының қауіпсіздік зертханасы, қауіпсіздік зертханасы

Анықтамалар

Пікір қалдырыңыз

Электрондық пошта мекенжайыңыз жарияланбайды. Міндетті өрістер белгіленген *