силабс 21К2 сигуран БЛЕ уређај Сецурити Лаб

БЛЕ безбедносни лабораторијски приручник

У овој лабораторији видећете како да дизајнирате безбеднији БЛЕ уређај. Почећемо са вишеview о томе како да користите неке од функција стека и пређемо на неке опште савете о техникама за безбедније везе и коначно ћемо видети како да користимо сертификате уређаја преко БЛЕ-а да идентификујемо периферију као аутентичну.

Геттинг Стартед

Блуетоотх сampАпликација на којој ћете градити је намењена за коришћење са боотлоадер-ом. Ако радите са потпуно новим ЕФР32МГ21Б, он неће имати покретач. Можете пронаћи унапред направљени покретач у платформи\боотлоадер\сampле-аппс\боотлоадер-стораге-интерналсингле\ефр32мг21а010ф1024им32-брд4181а фолдер вашег СДК.

  1. Почните са соц-емпти сampле апп. Овај сampле апп се користи као шаблон и представља добру полазну тачку за било коју БЛЕ апликацију.
    1. Отворите чаробњак за пројекат Силицон Лабс из Симплицити Студио-а File мени -> ново.
    2. Изаберите БРД4181Ц и кликните на дугме 'следеће'.
    3. Кликните на поље за потврду „Блуетоотх (9)“ испод типа технологије.
    4. Означите „Блуетоотх – СоЦ Емпти“, а затим кликните на даље.
    5. Кликните на дугме „Заврши“.
  2. Сада можете додати неке карактеристике да видите како се заштићене и незаштићене карактеристике третирају различито.
    1. Отворите слцп пројекта file двоструким кликом на њу у прозору Пројецт Екплорер
    2. Означите картицу „СОФТВЕРСКЕ КОМПОНЕНТЕ“ и отворите алатку за конфигурацију ГАТТ-а као што је приказано испод: И користите алатку за увоз приказану испод да увезете гатт_цонфигуратион.бтцонф file из фасцикле сервера у приложеним материјалима.ГАТТ база података има прилагођену услугу, која се зове 'Обука', са неким подацима који су заштићени, а некима нису. Ово вам омогућава да упоредите шта се дешава када покушавате да приступите заштићеној карактеристици у односу на незаштићену карактеристику. Ово је брз начин прављења уређаја са врло основном безбедношћу.
  3. Користићемо серијски порт за штампање на конзоли у Симплицити Студио-у да бисмо пратили шта се дешава у апликацији. Најлакши начин да пронађете ове компоненте је да их потражите у дијалогу СОФТВЕРСКЕ КОМПОНЕНТЕ као што је приказано:
      1. Инсталирајте УСАРТ компоненту ИО Стреам
      2. Инсталирајте ИО Стреам Ретаргет СТДИО компоненту
      3. Инсталирајте стандардну И/О компоненту
      4. Инсталирајте компоненту дневника
      5. Отворите компоненту за контролу плоче и укључите 'Енабле Виртуал ЦОМ УАРТ'
      6. Кликните десним тастером миша на адаптер у панелу „Дебуг адаптерс“ и изаберите „Лаунцх Цонсоле“. Изаберите картицу 'Сериал 1' и поставите курсор у поље за унос текста прозора конзоле и притисните ентер да бисте пробудили конзолу.
  4. Креирајте локалну променљиву у сл_бт_он_евент(), која се налази у апп.ц, за чување ручке везе. Променљива мора бити статична јер се ова функција позива сваки пут када стек покрене догађај и желимо да вредност буде трајна. Ручица за повезивање ће се користити касниједео лабораторије.
  5. Убаците неке изјаве апп_лог() за догађаје да видите када смо повезани, безбедносне режиме итд
      1. Укључите заглавље апп_лог.х file
      2. сл_бт_евт_цоннецтион_опенед – одштампајте ручицу везе и сачувајте ручицу везе. Ако је ручка везе 0кФФ, не постоји веза између повезаних уређаја. Измените постојећи руковалац догађаја тако да изгледа отприлике овако:
      3. сл_бт_евт_цоннецтион_параметерс – сигурносни режим. Ово је урађено да бисте видели када се безбедносни режим промени. Постоји разлика у нумерисању безбедносних режима где је безбедносни режим 1 набројан вредношћу 0, итд. Додајте следећи обрађивач догађаја у своју апликацију:
      4. сл_бт_евт_цоннецтион_цлосед_ид. Овај обрађивач догађаја је модификован да ажурира ручку везе. Вредност 0кФФ се користи да означи да нема активне везе. Команда апп_лог() се користи за штампање разлога затварања везе, листа статусних кодова је овде. Измените постојећи руковалац догађаја тако да изгледа отприлике овако:
  6. Направите и флешујте пројекат. У овом тренутку ћемо покренути сampле апп да видите како се понаша без икаквих промена, поред ГАТТ базе података.
  7. Повежите се са мобилном апликацијом ЕФРЦоннецт на следећи начин:
      1. Додирните икону „Блуетоотх претраживач“.
      2. Додирните икону „Повежи“ на уређају под називом „Тренинг“.
  8. Прочитајте незаштићену карактеристику на следећи начин:
      1. Додирните везу „Више информација“ испод непознате услуге са УУИД-ом а815944е-да1е-9д2а- 02е2-а8д15е2430а0.
      2. Прочитајте незаштићену карактеристику, УУИД ф9е91а44-ца91-4аба-1ц33-фд43ца270б4ц додиром на икону „Прочитај“. Овде нема изненађења. Пошто карактеристика није ни на који начин заштићена, биће послата у отвореном тексту.
  9. Сада прочитајте заштићену карактеристику, УУИД д4261дбб-дцд0-дааб-ец95-деец088д532б. Ваш мобилни телефон би требало да затражи од вас да упарите и повежете се, порука се може разликовати у зависности од вашег мобилног оперативног система. Након што прихватите захтев за упаривање, требало би да се појави порука на конзоли на следећи начин: Напомена: Додатак А на крају овог приручника садржи резиме И/О могућности и метода упаривања за референцу. Додатак Б резимира Блуетоотх безбедносне режиме.

Конфигурација менаџера безбедности

Менаџер безбедности је део Блуетоотх стека који одређује које се безбедносне функције користе. Ове карактеристике укључују заштиту човек у средини (МИТМ), ЛЕ безбедне везе (ака ЕЦДХ), које захтевају потврду за повезивање, итд. Менаџер безбедности такође управља И/О могућностима које се користе да би се утврдило који метод се користи за упаривање /везивање (погледајте Додатак А за резиме). У овом одељку видећете једноставно подешавање.

  1. Подесите СМ са жељеном конфигурацијом. Хардвер за ову лабораторију олакшава приказивање лозинке на конзоли. Унос лозинке је услов за омогућавање МИТМ заштите. Додајте следећи код свом сл_бт_систем_боот_ид руковаоцу догађаја. Ово омогућава човека у средини и обавештава удаљени уређај да имамо могућност да прикажемо приступни кључ, али то је све.
  2. Да бисте приказали приступни кључ на конзоли, потребан је руковалац догађаја као што је приказано у наставку:
  3. Подесите режим повезивања, максималан број веза итд. Користите следећи код да бисте започели:Ова подешавања се могу користити за ограничавање могућности нападача да се повеже са вашим уређајем. Ако ваш производ треба да има само једног корисника, онда можете ограничити максималне везе на 1. Добро место за додавање ових позива је у руковаоцу догађаја сл_бт_систем_боот_ид. У овом тренутку нећемо омогућити повезивање да би остатак лабораторије прошао глатко, али постављамо политику везивања која дозвољава само једну везу. За референцу, документација за ове АПИ-је се налази овде и овде.
  4. Додајте руковаоце догађаја за сл_бт_евт_см_бондед_ид и сл_бт_евт_см_бондинг_фаилед_ид. Главна употреба ових догађаја је тренутно информативна, али касније у лабораторији ћете додати функционалност.
  5. Изградите и флешујте на циљну плочу. Повежите се са ЕФРЦоннецт-ом и прочитајте заштићену карактеристику као и раније. Овог пута, видећете приступни кључ приказан на конзоли. Унесите овај приступни кључ на свом мобилном телефону када се то од вас затражи.
  6. Испробајте потврду везивања. Ова функција даје кориснику могућност да захтева да се захтеви за везивање потврде. То даје апликацији контролу над којим се равноправним уређајима повезује. Једна од могућности је да се од корисника захтева да притисне дугме пре него што дозволи везу.
    1. Отворите Блуетоотх подешавања на свом мобилном телефону и уклоните везу са ЕФР32 уређајем. Имплементације мобилних телефона се разликују тако да овај корак можда неће бити неопходан. Ако не видите „уређај за обуку“ у вашим Блуетоотх подешавањима, само пређите на следећи корак.
    2. У софтверским компонентама, инсталирајте једну инстанцу једноставног руковаоца дугмадима.
    3. Укључите заглавље file сл_симпле_буттон_инстанцес.х у апп.ц
    4. Додајте обрађивач за догађај сл_бт_евт_см_бондинг_цонфирм_ид. Главни задатак овог руковаоца догађајима је да обавести корисника да удаљени уређај захтева нову везу.
    5. Додајте функцију повратног позива за једноставан руковалац дугмадима да пошаље сигнал Блуетоотх стеку који указује да је дугме притиснуто. Ово замењује подразумевани повратни позив који се једноставно враћа.
    6. Додајте екстерни руковалац сигналним догађајима. Овај догађај се покреће као одговор на пријем сигнала, као у претходном кораку. Догађај екстерног сигнала ће се користити за потврду повезивања.
    7. Промените позив у сл_бт_см_цонфигуре да бисте захтевали потврду повезивања као што је нпр
    8. Поново изградите и флешујте.
    9. Повежите се са ЕФРЦоннецт-ом и прочитајте заштићену карактеристику као и раније. Сада ћете видети поруку на конзоли на следећи начин:Притисните ПБ0 да потврдите везу. Сада ће конзола приказати приступни кључ који треба унети на мобилни телефон ради повезивања. Унесите приступни кључ да бисте довршили процес повезивања.

 

Савет: Користите подразумевани случај у обрађивачу догађаја да одштампате поруку када стек пошаље догађај који није обрађен. Стог можда покушава да вам каже нешто важно.

Беионд тхе Басицс

У овом тренутку сте узели предностtagе од безбедносних карактеристика које наш скуп има да понуди. Сада хајде да побољшамо имплементацију кроз мудро коришћење функција које су нам на располагању. Следећи кораци су опциони и независни један од другог, можете да направите и флешујете после сваког да бисте видели понашање или испробали све заједно.

  1. Прекините везу у случају неуспешних покушаја повезивања. Ово је добро место за откривање претњи. Ако удаљени уређај не подржава шифровање/аутентификацију или једноставно нема исправне кључеве, можда је то хакер. Дакле, хајде да прекинемо везу. Покушајте да додате позив сл_бт_цоннецтион_цлосе() у догађају сл_бт_см_бондинг_фаилед_ид. АПИ је документован овде.Ову функцију можете тестирати тако што ћете унети погрешан приступни кључ.
  2. Дозвољава везивање само у одређеним временима. Ово ограничава време које нападач мора да формира везу и омогућава коришћење функције „Дозволи само повезане везе“. Дизајнер може да изабере како да омогући или онемогући режим повезивања. За потребе демонстрације, омогућићемо 'режим подешавања' са ПБ1 и користити тајмер да га онемогућимо након 30 секунди.
    1. Инсталирајте другу инстанцу једноставног интерфејса дугмета. Ово ће омогућити коришћење ПБ1.
    2. Измените повратни позив да пошаље другачији сигнал стеку да омогући/онемогући повезивање. Резултат би требао изгледати отприлике овако:
    3. Измените обрађивач догађаја екстерног сигнала тако да он рукује овим новим сигналом. Резултат би требао овако:
    4. Додајте обрађивач догађаја за догађај сл_бт_евт_систем_софт_тимер_ид. Ово ће се користити за онемогућавање режима подешавања.
    5. Следећи код се може користити за омогућавање повезивог режима и омогућавање свих конекција или за онемогућавање повезивог режима и дозвољавање веза само са повезаних уређаја:
    6. Додајте следећи позив у обрађивач догађаја сл_бт_систем_боот_ид
    7. Направите пројекат и флешујте га на уређају.
    8. Покушајте да се повежете са уређајем помоћу ЕФРЦоннецт-а. Веза би требало да не успе.
    9. Сада покушајте да притиснете ПБ1 пре повезивања са ЕФРЦоннецт-ом. Овај пут ће веза бити успешна. Након 30 секунди видећете поруку на конзоли која указује да уређај излази из режима подешавања. То значи да је режим повезивања сада онемогућен.
  3. Повећајте сигурност приликом успостављања везе. Пошто је безбедност опциона, требало би да затражимо шифровану везу што је пре могуће уместо да се ослањамо на ГАТТ карактеристике. АПИ је документован овде. Добро место за позивање овог АПИ-ја је у догађају сл_бт_евт_цоннецтион_опенед_ид. Ручица везе је доступна у променљивој везе.

Сецуре Идентити

Сада када имамо безбеднији Блуетоотх уређај, хајде да побољшамо корак аутентификације. Већ сте видели како да проверите безбедан идентитет трезорских уређаја помоћу командне линије у претходним лабораторијама за обуку. У овом одељку ћемо видети како један БЛЕ уређај може да провери идентитет другог БЛЕ уређаја тако што ће затражити његов ланац сертификата и послати изазов. Сви безбедни делови трезора имају сопствени сертификат уређаја и сертификат серије. Фабрички и основни сертификати су чврсто кодирани у клијентској апликацији како би се омогућила верификација целог ланца сертификата. Погледајте АН1268 за више детаља о безбедном идентитету.

  1. Дефинишите глобални бафер за чување потписа атестирања уређаја на следећи начин:
  2. Подесите конфигурацију менаџера безбедности да користи ЈустВоркс упаривање. Ово се ради тако да је веза шифрована. У пракси би требало користити МИТМ заштиту, али да би лабораторија била једноставна, користићемо ЈустВоркс. Промените позив на сл_бт_см_цонфигуре назад на следеће:Такође, коментаришите позив сетуп_моде(труе) у руковаоцу догађаја систем_боот.
  3. Отворите хелперс.ц из понуђених материјала и копирајте садржај у апп.ц. Ове функције повратног позива обављају задатке као што је сегментирање сертификата тако да се могу послати преко БЛЕ-а, верификација ланца сертификата и генерисање/верификација изазова.
  4. Неопходно је одредити максималну величину јединице преноса (МТУ) како би се сертификати могли сегментирати и поново саставити. Дефинишите глобалну променљиву да бисте сачували МТУ као што је приказано овде:Затим додајте обрађивач догађаја за размењени догађај ГАТТ МТУ као што је приказано у наставку:
  5. Постоје три карактеристике корисничких података које се могу прочитати. Ове карактеристике се користе за преношење сертификата уређаја, сертификата серије и изазова. Функција повратног позива се користи за руковање овим корисничким захтевима за читање. Додајте руковалац за позивање ове функције као што је приказано у наставку:Повратни позив користи МТУ од корака #2 да сегментира и пошаље сертификате по потреби. Такође управља слањем потписаног изазова.
  6. Клијент шаље изазов, насумични број који сервер потписује, писањем једне од ГАТТ карактеристика. Из тог разлога, апликација треба да има руковалац за догађај захтева за писање корисника као што је доле:
  7. Додајте подршку за безбедни идентитет fileс на пројекат:
    1. апп_се_манагер_мацро.х, апп_се_манагер_сецуре_идентити.ц и апп_се_сецуре_идентити.х из достављених материјала за пројекат. Ове fileсадрже неке помоћне функције за задатке као што су добијање величине сертификата, добијање јавног кључа уређаја и потписивање изазова.
    2. Укључите апп_се_манагер_сецуре_идентити.х у апп.ц.
  8. Увезите обезбеђени гатт_цонфигуратион-аттест.бтцонф из обезбеђених материјала. Ова ГАТТ база података се зове сигурна атестација која укључује четири карактеристике које ће се користити за верификацију идентитета нашег уређаја. То укључује сертификат уређаја, сертификат серије, изазов и одговор.
  9. Клијент, који се користи за симулацију уређаја као што је гатеваи, је обезбеђен као комплетан пројекат пошто је сложенији за изградњу. Генерално, рад клијента је следећи:
    1. Скенира уређаје који рекламирају услугу безбедне атестације и повезује се са њима.
    2. Открива услуге и карактеристике ГАТТ базе података.
    3. Чита сертификате уређаја и серије и верификује ланац сертификата користећи фабрички и основни сертификат који је сачувао у флеш.
    4. Шаље случајни изазов серверу.
    5. Покушаји да се провери одговор на изазов.
    6. Затвара везу ако било која верификација не успе.
  10. Направите и флешујте пројекат сервера на вашем серверу ВСТК /радиобоард.
  11. Увезите клијентски пројекат из клијентске фасцикле у датим материјалима. Изградите и флешујте клијентски пројекат на свом клијенту ВСТК/радиобоард.
  12. Притисните ресет на ВСТК клијенту и отворите серијску конзолу. Клијент почиње да скенира уређаје који рекламирају нашу безбедну услугу идентитета и повезаће се када га пронађе.
  13. Клијент ће приказати неке поруке које показују да је пронашао сервер са жељеном услугом и статусне поруке о верификацији ланца сертификата.
  14. Ако верификација прође, клијент ће генерисати насумични број, који се зове изазов, и послати га серверу. Сервер ће потписати изазов са својим безбедно чуваним приватним кључем уређаја и потписом назад клијенту, то се зове изазовни одговор. Клијент затим користи јавни кључ у претходно примљеном сертификату уређаја да провери потпис. Ово се ради да би се потврдило да сервер заиста има приватни кључ за који је тврдио да га има. Ако је изазов исправно верификован, приказује се порука у том смислу; у супротном, веза се затвара и приказује се порука која објашњава зашто.
  15. Сада пошаљите неважећи сертификат да бисте потврдили да верификација заиста функционише. Можете да модификујете усер_реад_рекуест_цб() да оштетите или податке сертификата или одговор на изазов.

Додатак А – И/О могућности и методе упаривања
Додатак Б – Безбедносни режими и нивои

Безбедносни режим 1 је једини режим подржан за Блуетоотх са ниском потрошњом енергије у групи Силицон Лабс. Нивои су следећи:

  • Ниво 1 без безбедности
  • Неауторизовано упаривање нивоа 2 са шифровањем
  • Проверено упаривање нивоа 3 са шифровањем
  • Сигурне везе нивоа 4 са потврђеном аутентичношћу са јаком енкрипцијом (размена ЕЦДХ кључева)

 

Документи / Ресурси

силабс 21К2 сигуран БЛЕ уређај Сецурити Лаб [пдф] Упутство за употребу
21К2 безбедна БЛЕ лабораторија за безбедност уређаја, безбедна БЛЕ лабораторија за безбедност уређаја, безбедносна лабораторија

Референце

Оставите коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена *