silabs 21Q2 коопсуз BLE түзмөк Коопсуздук лабораториясы
BLE коопсуздук лабораториясынын колдонмосу
Бул лабораторияда сиз коопсуз BLE аппаратын кантип иштеп чыгууну көрөсүз. Биз бүтүрүү менен баштайбызview стектин кээ бир функцияларын кантип колдонуу керектиги жана коопсуз туташуу ыкмалары жөнүндө жалпы кеңештерге өтүү жана акырында биз перифериялык түзмөктү анык деп аныктоо үчүн BLE аркылуу түзмөк сертификаттарын кантип колдонууну көрөбүз.
Баштоо
Bluetooth сampСиз кура турган тиркеме жүктөгүч менен колдонууга арналган. Эгер сиз жаңы EFR32MG21B менен иштеп жатсаңыз, анда жүктөгүч болбойт. Алдын ала курулган жүктөгүчтү платформа \ жүктөгүч \ лардан таба аласызample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a сиздин SDK папкаңыз.
- Соц-бос s менен башталample app. Булample колдонмосу шаблон катары колдонулат жана ар кандай BLE тиркемеси үчүн жакшы баштапкы чекит кылат.
- Simplicity студиясынан Silicon Labs Долбоор чеберин ачыңыз File меню -> жаңы.
- BRD4181C тандаңыз жана "кийинки" баскычын басыңыз.
- Технология түрүнүн астындагы "Bluetooth (9)" кутучасын басыңыз.
- "Bluetooth – SoC Empty" дегенди белгилеп, андан соң кийинкисин басыңыз.
- "Бүтүрүү" баскычын чыкылдатыңыз.
- Эми сиз корголгон жана корголбогон мүнөздөмөлөргө кандайча башкача мамиле кылынарын көрүү үчүн кээ бир мүнөздөмөлөрдү кошо аласыз.
- Долбоордун slcp ачыңыз file Project Explorer терезесинде аны эки жолу чыкылдатуу менен
- "ПРОГРАММА КОМПОНЕНТТЕРИ" кошумча барагын белгилеп, төмөндө көрсөтүлгөндөй GATT конфигурациялоо куралын ачыңыз:
Жана gatt_configuration.btconf импорттоо үчүн төмөндө көрсөтүлгөн импорт куралын колдонуңуз file берилген материалдардагы сервер папкасынан.
GATT маалымат базасында айрым маалыматтар корголгон, кээ бирлери корголбогон "Тренинг" деп аталган атайын кызматка ээ. Бул корголгон мүнөздөмө менен корголбогон өзгөчөлүккө кирүүгө аракет кылганда эмне болорун салыштырууга мүмкүндүк берет. Бул өтө жөнөкөй коопсуздук менен аппаратты жасоонун тез жолу.
- Колдонмодо эмне болуп жатканын көзөмөлдөө үчүн Simplicity Studio консолуна басып чыгаруу үчүн сериялык портту колдонобуз. Бул компоненттерди табуунун эң оңой жолу аларды ПРОГРАММА КОМПОНЕНТТЕРИ диалогунда көрсөтүлгөндөй издөө болуп саналат:
-
- IO Stream USART компонентин орнотуңуз
- IO Stream Retarget STDIO компонентин орнотуңуз
- Стандарттык I/O компонентин орнотуу
- Log компонентин орнотуңуз
- Board Control компонентин ачып, "Virtual COM UARTти иштетүү" күйгүзүңүз
- "Адаптерлерди оңдоо" панелинен адаптерди оң баскыч менен чыкылдатып, "Консолду ишке киргизүүнү" тандаңыз. "Сериялык 1" өтмөгүн тандап, курсорду консол терезесинин текст киргизүү талаасына коюп, консолду ойготуу үчүн enter баскычын басыңыз.
-
- Туташуу туткасын сактоо үчүн app.c ичинде табылган sl_bt_on_event() ичинде жергиликтүү өзгөрмө түзүңүз. Өзгөрмө статикалык болушу керек, анткени бул функция стек тарабынан окуя көтөрүлгөн сайын чакырылат жана биз маанинин туруктуу болушун каалайбыз. Туташуу туткасы кийинчерээк колдонулат
лабораториянын бөлүмү.
- Иш-чаралар үчүн кээ бир 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
-
- Долбоорду куруп, жарк этиңиз. Бул учурда, биз s иштетебизampGATT маалымат базасынан тышкары, ал эч кандай өзгөрүүсүз өзүн кандай алып жүрөрүн көрүү үчүн колдонмо.
- EFRConnect мобилдик колдонмосу менен төмөнкүдөй туташуу:
-
- "Bluetooth браузери" сөлөкөтүн таптаңыз.
- "Тренинг" деп аталган түзмөктөгү "Байланыш" сөлөкөтүн таптаңыз.
-
- Төмөнкүдөй корголбогон мүнөздөмөлөрдү окуңуз:
-
- UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 менен белгисиз кызматтын астындагы "Көбүрөөк маалымат" шилтемесин таптаңыз.
- "Оку" сөлөкөтүн таптап, корголбогон мүнөздөмөсү, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c окуңуз. Бул жерде эч кандай сюрприз жок. Мүнөздөмө эч кандай түрдө корголбогондуктан, ачык текстте жөнөтүлөт.
-
- Эми корголгон мүнөздөмөнү окуңуз, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Сиздин мобилдик телефонуңуз жупташтырууга жана туташууга түрткү бериши керек, билдирүү мобилдик OS жараша өзгөрүшү мүмкүн. Жупташтыруу өтүнүчүн кабыл алгандан кийин, консолдо төмөнкүдөй билдирүү керек:
Эскертүү: Бул колдонмонун аягындагы А тиркемесинде маалымдама үчүн киргизүү/чыгаруу мүмкүнчүлүктөрүнүн жана жупташтыруу ыкмаларынын корутундусу бар. Тиркеме B Bluetooth коопсуздук режимдерин жалпылайт.
Коопсуздук менеджеринин конфигурациясы
Коопсуздук менеджери кайсы коопсуздук функциялары колдонуларын аныктаган Bluetooth стекинин бир бөлүгү. Бул өзгөчөлүктөргө ортодогу адам (MITM) коргоо, LE Secure туташуулары (ака ECDH), байланыш үчүн ырастоону талап кылуу ж.б. кирет. Коопсуздук менеджери жупташтыруу үчүн кандай ыкма колдонуларын аныктоо үчүн колдонулган киргизүү/чыгаруу мүмкүнчүлүктөрүн да иштетет. /байланыш (жыйынтыктоо үчүн А тиркемесин караңыз). Бул бөлүмдө сиз жөнөкөй орнотууну көрөсүз.
- Каалаган конфигурация менен SM орнотуу. Бул лабораториянын жабдыктары консолдо өтүүчү ачкычты көрсөтүүнү жеңилдетет. Passkey киргизүү MITM коргоону иштетүү үчүн талап болуп саналат. sl_bt_system_boot_id окуя иштеткичиңизге төмөнкү кодду кошуңуз. Бул ортодогу кишини иштетип, алыскы түзмөккө бизде өтүүчү ачкычты көрсөтүү мүмкүнчүлүгү бар экенин кабарлайт, бирок ушуну менен бүттү.
- Консолго өткөрүүчү ачкычты көрсөтүү үчүн төмөндө көрсөтүлгөндөй окуяны иштеткич талап кылынат:
- Байланыш режимин, байланыштардын максималдуу санын ж.б. коюңуз. Баштоо үчүн төмөнкү кодду колдонуңуз:
Бул жөндөөлөр чабуулчунун түзмөгүңүз менен байланышуу мүмкүнчүлүгүн чектөө үчүн колдонулушу мүмкүн. Эгер өнүмүңүздө бир гана колдонуучу болушу керек болсо, анда сиз максималдуу байланыштарды 1ге чейин чектей аласыз. Бул чалууларды кошуу үчүн жакшы жер sl_bt_system_boot_id окуя иштеткичинде. Лабораториянын калган бөлүгү бир калыпта иштеши үчүн биз азыр байланышты иштетпейбиз, бирок бир гана байланышка уруксат берүү үчүн байланыш саясатын орнотобуз. Маалымат үчүн, бул API'лер үчүн документтер бул жерде жана бул жерде.
- sl_bt_evt_sm_bonded_id жана sl_bt_evt_sm_bonding_failed_id үчүн окуя иштеткичтерин кошуңуз. Бул окуялар үчүн негизги колдонуу учурда маалыматтык болуп саналат, бирок кийинчерээк лабораторияда сиз функцияларды кошосуз.
- Куруу жана максаттуу тактага жарк этиңиз. EFRConnect менен туташыңыз жана мурункудай корголгон мүнөздөмөлөрдү окуңуз. Бул жолу сиз консолдо көрсөтүлгөн ачкычты көрөсүз. Суралганда уюлдук телефонуңузга бул ачкычты киргизиңиз.
- Байланыштырууну ырастап көрүңүз. Бул өзгөчөлүк колдонуучуга байланыш сурамдарынын ырасталышын талап кылуу мүмкүнчүлүгүн берет. Бул колдонмого кайсы теңдүү түзмөктөр менен байланышып турганын көзөмөлдөөгө мүмкүнчүлүк берет. Мүмкүнчүлүктөрдүн бири - колдонуучудан байланышка уруксат берүүдөн мурун баскычты басууну талап кылуу.
- Мобилдик телефонуңуздагы Bluetooth жөндөөлөрүн ачып, EFR32 түзмөгүнө байланышты алып салыңыз. Мобилдик телефонду ишке ашыруу ар кандай болгондуктан, бул кадамдын кереги жок болушу мүмкүн. Эгер Bluetooth жөндөөлөрүңүздө "Тренинг" түзмөгүн көрбөсөңүз, кийинки кадамга өтүңүз.
- Программалык камсыздоонун компоненттеринде жөнөкөй баскычты иштеткичтин бир нускасын орнотуңуз.
- Башты кошуңуз file app.c ичиндеги sl_simple_button_instances.h
- sl_bt_evt_sm_bonding_confirm_id окуясы үчүн иштеткичти кошуңуз. Бул окуяны иштетүүчү негизги милдети алыскы түзмөк жаңы байланышты сурап жаткандыгы жөнүндө колдонуучуга маалымат берүү.
- Bluetooth стекине баскыч басылганын көрсөтүүчү сигналды жөнөтүү үчүн жөнөкөй баскычты иштетүүчү үчүн кайра чалуу функциясын кошуңуз. Бул жөн гана кайтып келген демейки кайра чалууну жокко чыгарат.
- Тышкы сигнал окуя иштеткичти кошуңуз. Бул окуя мурунку кадамдагыдай сигналды кабыл алууга жооп катары көтөрүлөт. Тышкы сигнал окуясы байланышты ырастоо үчүн колдонулат.
- сыяктуу байланыш ырастоосун талап кылуу үчүн чалууну sl_bt_sm_configure деп өзгөртүңүз
- Кайра куруу жана жаркыруу.
- EFRConnect менен туташып, мурункудай эле корголгон мүнөздөмөлөрдү окуп чыгыңыз. Эми сиз консолдо төмөнкүдөй билдирүүнү көрөсүз:
Байланыштыруу үчүн PB0 баскычын басыңыз. Эми консол байланыш үчүн уюлдук телефонго киргизиле турган ачкычты көрсөтөт. Байланыштыруу процессин аяктоо үчүн ачкычты киргизиңиз.
Кеңеш: Стек иштетилбеген окуяны жөнөткөндө билдирүүнү басып чыгаруу үчүн окуяны иштеткичтеги демейки регистрди колдонуңуз. Стек сизге маанилүү бир нерсени айтууга аракет кылып жаткандыр.
Негиздерден тышкары
Бул учурда, сиз алдын ала алдыtagбиздин стек сунуш кылган коопсуздук өзгөчөлүктөрүнүн e. Эми биздин карамагыбыздагы функцияларды акылдуулук менен колдонуу аркылуу ишке ашырууну жакшырталы. Төмөнкү кадамдар милдеттүү эмес жана бири-биринен көз каранды эмес, сиз жүрүм-турумду көрүү үчүн ар биринин артынан куруп, жаркылдай аласыз же бардыгын чогуу сынап көрүңүз.
- Ийгиликсиз байланыш аракеттеринде ажыратыңыз. Бул коркунучтарды аныктоо үчүн жакшы жер. Эгер алыскы түзмөк шифрлөө/аныктыгын текшерүүнү колдоого албаса же жөн эле туура ачкычтарга ээ болбосо, ал хакер болушу мүмкүн. Ошентип, байланышты үзөлү. sl_bt_sm_bonding_failed_id окуясында sl_bt_connection_close() дарегине чалуу кошуп көрүңүз. API бул жерде документтештирилген.
Туура эмес ачкычты киргизүү менен бул функцияны текшере аласыз.
- Белгилүү бир убакыттарда гана байланышка жол берет. Бул чабуулчу байланыш түзө турган убакытты чектейт жана "байланыштуу байланыштарга гана уруксат берүү" функциясын колдонууга мүмкүндүк берет. Дизайнер байланыш режимин кантип иштетүүнү же өчүрүүнү тандай алат. Бул жерде көрсөтүү максатында, биз PB1 менен "орнотуу режимин" иштетебиз жана 30 секунддан кийин аны өчүрүү үчүн таймерди колдонобуз.
- Жөнөкөй баскыч интерфейсинин экинчи нускасын орнотуңуз. Бул PB1 колдонууга мүмкүндүк берет.
- Байланыштыруу/өчүрүү үчүн стекке башка сигнал жөнөтүү үчүн кайра чалууну өзгөртүңүз. Натыйжа мындай көрүнүшү керек:
- Бул жаңы сигналды иштете тургандай тышкы сигнал окуясын иштеткичти өзгөртүңүз. Натыйжа мындай болушу керек:
- sl_bt_evt_system_soft_timer_id окуясы үчүн окуя иштеткичти кошуңуз. Бул орнотуу режимин өчүрүү үчүн колдонулат.
- Төмөнкү код байланыш режимин иштетүү жана бардык туташууларга уруксат берүү же байланыш режимин өчүрүү жана туташтырылган түзмөктөрдөн гана туташууга уруксат берүү үчүн колдонулушу мүмкүн:
- sl_bt_system_boot_id окуя иштеткичине төмөнкү чалууну кошуңуз
- Долбоорду түзүп, аны аппаратка жарк эттириңиз.
- Түзмөккө EFRConnect менен туташып көрүңүз. Туташуу иштебей калышы керек.
- Эми EFRConnect менен туташуудан мурун PB1 баскычын басып көрүңүз. Бул жолу байланыш ийгиликтүү болот. 30 секунддан кийин консолдо аппарат орнотуу режиминен чыгып жатканын көрсөткөн билдирүүнү көрөсүз. Бул байланыш режими азыр өчүрүлгөн дегенди билдирет.
- Байланыш түзүү боюнча коопсуздукту жогорулатуу. Коопсуздук милдеттүү эмес болгондуктан, биз GATT мүнөздөмөлөрүнө таянбастан, мүмкүн болушунча тезирээк шифрленген байланышты талап кылышыбыз керек. API бул жерде документтештирилген. Бул API чалуу үчүн жакшы жер sl_bt_evt_connection_opened_id окуясында. Туташуу туткасы туташуу өзгөрмөсүндө жеткиликтүү.
Secure Identity
Эми бизде коопсуз Bluetooth түзмөгү бар, аныктыгын текшерүү кадамын жакшыртууга мүмкүнчүлүк берет. Мурунку окуу лабораторияларында буйрук сабы менен сактагыч түзмөктөрдүн коопсуз иденттүүлүгүн кантип текшерүү керектигин көрдүңүз. Бул бөлүмдө биз бир BLE аппараты анын сертификат чынжырын сурап жана чакырык жөнөтүү аркылуу башка BLE түзмөгүнүн инсандыгын кантип текшере аларын көрөбүз. Бардык коопсуз сактагычтын бөлүктөрү өздөрүнүн түзмөк сертификатына жана партия сертификатына ээ. Заводдук жана түпкү сертификаттар бүт сертификат чынжырын текшерүүнү иштетүү үчүн кардар тиркемесинде катуу коддолгон. Коопсуз иденттүүлүк боюнча көбүрөөк маалымат алуу үчүн AN1268 караңыз.
- Түзмөктүн аттестация кол тамгасын сактоо үчүн глобалдык буферди төмөндөгүдөй аныктаңыз:
- JustWorks жупташтыгын колдонуу үчүн коопсуздук менеджеринин конфигурациясын коюңуз. Бул байланыш шифрленген үчүн жасалат. Иш жүзүндө, MITM коргоо колдонулушу керек, бирок лабораторияны жөнөкөй сактоо үчүн, биз JustWorks колдонобуз. Чакырууну sl_bt_sm_configure үчүн кайра төмөнкүгө өзгөртүңүз:
Ошондой эле, system_boot окуя иштеткичинде setup_mode(true) чакырыгына комментарий бериңиз.
- Берилген материалдардан 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.c ичинде app_se_manager_secure_identity.h кошуңуз.
- Берилген материалдардан берилген gatt_configuration-attest.btconf импорттоо. Бул GATT маалымат базасы коопсуз аттестация деп аталат, ал биздин аппараттын инсандыгын текшерүү үчүн колдонула турган төрт мүнөздөмөлөрдү камтыйт. Аларга түзмөктүн сертификаты, сериялык сертификат, чакырык жана жооп кирет.
- Шлюз сыяктуу аспапты имитациялоо үчүн колдонулган кардар толук долбоор катары берилет, анткени аны куруу татаалыраак. Жалпысынан алганда, кардардын иши төмөнкүдөй:
- Коопсуз аттестация кызматын жарнамалаган түзмөктөрдү сканерлейт жана аларга туташат.
- GATT маалыматтар базасынын кызматтарын жана мүнөздөмөлөрүн ачат.
- Түзмөктү жана сериялык сертификаттарды окуйт жана флеште сакталган заводдук жана түпкү сертификатты колдонуу менен тастыктама чынжырын текшерет.
- Серверге туш келди чакырык жөнөтөт.
- Чакырууга жоопту текшерүү аракети.
- Текшерүү ишке ашпай калса, туташууну жабат.
- WSTK /radioboard сервериңизге сервер долбоорун куруңуз жана жарк этиңиз.
- Берилген материалдардагы кардар папкасынан кардар долбоорун импорттоо. WSTK/radioboard кардарыңызга кардар долбоорун куруп, жарк этиңиз.
- WSTK кардарындагы баштапкы абалга келтирүүнү басыңыз жана сериялык консолду ачыңыз. Кардар коопсуз идентификация кызматыбызды жарнамалаган түзмөктөрдү сканерлей баштайт жана аны тапканда туташат.
- Кардар каалаган кызмат менен серверди тапканын көрсөтүү үчүн кээ бир билдирүүлөрдү жана сертификат чынжырын текшерүү жөнүндө статус билдирүүлөрүн көрсөтөт.
- Эгерде текшерүүдөн өтүп кетсе, кардар кокустук деп аталган санды жаратып, серверге жөнөтөт. Сервер чакырыкка өзүнүн коопсуз сакталган жеке түзмөк ачкычы жана кардарга кол коюу менен кол коёт, бул чакырык жообу деп аталат. Андан кийин кардар кол тамганы текшерүү үчүн мурда алынган түзмөк сертификатындагы ачык ачкычты колдонот. Бул серверде чындап эле бар деп ырастаган купуя ачкыч бар экенин тастыктоо үчүн жасалат. Эгерде чакырык туура текшерилсе, бул тууралуу билдирүү көрсөтүлөт; антпесе, байланыш жабылып, себебин түшүндүргөн билдирүү көрсөтүлөт.
- Эми текшерүү чындап эле иштеп жатканын ырастоо үчүн жараксыз сертификат жөнөтүңүз. Сиз user_read_request_cb() функциясын тастыктама дайындарын же чакырык жообун бузуш үчүн өзгөртсөңүз болот.
А тиркеме – киргизүү/чыгаруу мүмкүнчүлүктөрү жана жупташтыруу ыкмалары 
В тиркемеси – Коопсуздук режимдери жана деңгээли
Коопсуздук режими 1 Silicon Labs стекиндеги Bluetooth Low Energy үчүн колдоого алынган жалгыз режим. Деңгээлдери төмөнкүдөй:
- 1-деңгээлде коопсуздук жок
- 2-деңгээл шифрлөө менен аутентификацияланбаган жупташтыруу
- Шифрлөө менен 3-деңгээл аутентификацияланган жупташтыруу
- Күчтүү шифрлөө менен 4-деңгээл аутентификацияланган коопсуз туташуулар (ECDH ачкыч алмашуу)
Документтер / Ресурстар
![]() |
silabs 21Q2 коопсуз BLE түзмөк Коопсуздук лабораториясы [pdf] Колдонуучунун колдонмосу 21Q2 коопсуз BLE түзмөк коопсуздук лабораториясы, коопсуз BLE түзмөк коопсуздук лабораториясы, коопсуздук лабораториясы |