silabs 21Q2 સુરક્ષિત BLE ઉપકરણ સુરક્ષા લેબ

BLE સુરક્ષા લેબ મેન્યુઅલ

આ લેબમાં, તમે વધુ સુરક્ષિત BLE ઉપકરણ કેવી રીતે ડિઝાઇન કરવું તે જોશો. અમે ઓવરથી શરૂઆત કરીશુંview કેટલીક સ્ટેક સુવિધાઓનો ઉપયોગ કેવી રીતે કરવો અને વધુ સુરક્ષિત કનેક્શન્સ માટેની તકનીકો વિશે કેટલીક સામાન્ય સલાહ તરફ આગળ વધવું અને અંતે અમે પેરિફેરલને અધિકૃત તરીકે ઓળખવા માટે BLE પર ઉપકરણ પ્રમાણપત્રોનો ઉપયોગ કેવી રીતે કરવો તે જોઈશું.

શરૂઆત કરવી

બ્લૂટૂથ એસample એપ્લીકેશન જેના પર તમે નિર્માણ કરશો તેનો હેતુ બુટલોડર સાથે ઉપયોગ કરવાનો છે. જો તમે એકદમ નવા EFR32MG21B સાથે કામ કરી રહ્યા છો, તો તેમાં બુટલોડર નહીં હોય. તમે પ્લેટફોર્મ\બૂટલોડર\s માં પૂર્વ-બિલ્ટ બુટલોડર શોધી શકો છોample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a તમારા SDKનું ફોલ્ડર.

  1. એક soc-ખાલી s સાથે પ્રારંભ કરોample એપ્લિકેશન. આ એસample એપ્લિકેશનનો ઉપયોગ ટેમ્પલેટ તરીકે થાય છે અને કોઈપણ BLE એપ્લિકેશન માટે સારો પ્રારંભિક બિંદુ બનાવે છે.
    1. સિમ્પલિસિટી સ્ટુડિયોમાંથી સિલિકોન લેબ્સ પ્રોજેક્ટ વિઝાર્ડ ખોલો File મેનુ -> નવું.
    2. BRD4181C પસંદ કરો અને 'આગલું' બટન ક્લિક કરો.
    3. ટેકનોલોજી પ્રકાર હેઠળ 'બ્લુટુથ (9)' ચેકબોક્સ પર ક્લિક કરો.
    4. 'Bluetooth – SoC Empty'ને હાઇલાઇટ કરો અને પછી આગળ ક્લિક કરો.
    5. 'Finish' બટન પર ક્લિક કરો.
  2. સંરક્ષિત અને અસુરક્ષિત લાક્ષણિકતાઓને અલગ રીતે કેવી રીતે ગણવામાં આવે છે તે જોવા માટે હવે તમે કેટલીક લાક્ષણિકતાઓ ઉમેરી શકો છો.
    1. પ્રોજેક્ટનું slcp ખોલો file પ્રોજેક્ટ એક્સપ્લોરર વિન્ડોમાં તેને ડબલ-ક્લિક કરીને
    2. 'સોફ્ટવેર કમ્પોનન્ટ્સ' ટેબને હાઇલાઇટ કરો અને નીચે બતાવ્યા પ્રમાણે GATT રૂપરેખાંકન સાધન ખોલો: અને gatt_configuration.btconf ને ઈમ્પોર્ટ કરવા માટે નીચે દર્શાવેલ ઈમ્પોર્ટ ટૂલનો ઉપયોગ કરો file પૂરી પાડવામાં આવેલ સામગ્રીમાં સર્વર ફોલ્ડરમાંથી.GATT ડેટાબેઝમાં કસ્ટમ સેવા છે, જેને 'તાલીમ' કહેવાય છે, જેમાં કેટલાક ડેટા સુરક્ષિત છે અને કેટલાક એવા નથી. આ તમને સંરક્ષિત લાક્ષણિકતા વિ અસુરક્ષિત એકને ઍક્સેસ કરવાનો પ્રયાસ કરતી વખતે શું થાય છે તેની તુલના કરવાની મંજૂરી આપે છે. ખૂબ જ મૂળભૂત સુરક્ષા સાથે ઉપકરણ બનાવવાની આ એક ઝડપી રીત છે.
  3. એપ્લિકેશનમાં શું ચાલી રહ્યું છે તે ટ્રૅક કરવા માટે અમે સિમ્પલિસિટી સ્ટુડિયોમાં કન્સોલ પર પ્રિન્ટ કરવા માટે સીરીયલ પોર્ટનો ઉપયોગ કરીશું. આ ઘટકોને શોધવાનો સૌથી સહેલો રસ્તો એ છે કે બતાવ્યા પ્રમાણે સોફ્ટવેર ઘટકો સંવાદમાં તેમને શોધવાનું છે:
      1. IO સ્ટ્રીમ USART ઘટક ઇન્સ્ટોલ કરો
      2. IO સ્ટ્રીમ રીટાર્ગેટ STDIO ઘટક ઇન્સ્ટોલ કરો
      3. સ્ટાન્ડર્ડ I/O ઘટક ઇન્સ્ટોલ કરો
      4. લોગ ઘટક ઇન્સ્ટોલ કરો
      5. બોર્ડ કંટ્રોલ ઘટક ખોલો અને 'વર્ચ્યુઅલ COM UART સક્ષમ કરો' ચાલુ કરો
      6. 'ડીબગ એડેપ્ટર્સ' પેનલમાં એડેપ્ટર પર રાઇટ-ક્લિક કરો અને 'લોન્ચ કન્સોલ' પસંદ કરો. 'સીરીયલ 1' ટેબ પસંદ કરો અને કન્સોલ વિન્ડોની ટેક્સ્ટ એન્ટ્રી ફીલ્ડમાં કર્સર મૂકો અને કન્સોલને જાગવા માટે એન્ટર દબાવો.
  4. કનેક્શન હેન્ડલ સાચવવા માટે sl_bt_on_event(), app.c માં મળેલ સ્થાનિક વેરીએબલ બનાવો. વેરીએબલ સ્ટેટિક હોવું આવશ્યક છે કારણ કે દરેક વખતે જ્યારે સ્ટેક દ્વારા ઇવેન્ટ ઉભી કરવામાં આવે છે ત્યારે આ ફંક્શન કહેવામાં આવે છે અને અમે ઇચ્છીએ છીએ કે મૂલ્ય સતત રહે. કનેક્શન હેન્ડલનો ઉપયોગ પછીથી કરવામાં આવશેપ્રયોગશાળાનો વિભાગ.
  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. પ્રોજેક્ટ બનાવો અને ફ્લેશ કરો. આ બિંદુએ, અમે એસ ચલાવીશુંampGATT ડેટાબેઝ ઉપરાંત, તે કોઈપણ ફેરફારો વિના કેવી રીતે વર્તે છે તે જોવા માટે le એપ્લિકેશન.
  7. EFRConnect મોબાઇલ એપ્લિકેશન સાથે નીચે પ્રમાણે કનેક્ટ થાઓ:
      1. 'બ્લુટુથ બ્રાઉઝર' આયકનને ટેપ કરો.
      2. 'ટ્રેનિંગ' નામના ઉપકરણ પર 'કનેક્ટ' આયકનને ટેપ કરો.
  8. નીચે પ્રમાણે અસુરક્ષિત લાક્ષણિકતા વાંચો:
      1. UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 સાથે અજાણી સેવા હેઠળ 'વધુ માહિતી' લિંકને ટેપ કરો.
      2. 'વાંચો' આયકનને ટેપ કરીને અસુરક્ષિત લાક્ષણિકતા, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c વાંચો. અહીં કોઈ આશ્ચર્ય નથી. લાક્ષણિકતા કોઈપણ રીતે સુરક્ષિત ન હોવાથી, તે સાદા લખાણમાં મોકલવામાં આવશે.
  9. હવે સંરક્ષિત લાક્ષણિકતા વાંચો, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. તમારા મોબાઇલ ફોને તમને જોડી અને કનેક્ટ કરવા માટે સંકેત આપવો જોઈએ, તમારા મોબાઇલ OS ના આધારે સંદેશ બદલાઈ શકે છે. તમે જોડી બનાવવાની વિનંતી સ્વીકારી લો તે પછી, તમારે કન્સોલ પર નીચે પ્રમાણે સંદેશ મોકલવો જોઈએ: નોંધ: આ માર્ગદર્શિકાના અંતે પરિશિષ્ટ Aમાં સંદર્ભ માટે I/O ક્ષમતાઓ અને જોડી બનાવવાની પદ્ધતિઓનો સારાંશ છે. પરિશિષ્ટ B બ્લૂટૂથ સુરક્ષા મોડ્સનો સારાંશ આપે છે.

સુરક્ષા વ્યવસ્થાપક રૂપરેખાંકન

સુરક્ષા વ્યવસ્થાપક એ બ્લૂટૂથ સ્ટેકનો એક ભાગ છે જે નક્કી કરે છે કે કઈ સુરક્ષા સુવિધાઓનો ઉપયોગ કરવામાં આવે છે. આ સુવિધાઓમાં મેન-ઇન-ધ-મિડલ (MITM) પ્રોટેક્શન, LE સિક્યોર કનેક્શન્સ (ઉર્ફ ECDH), બોન્ડિંગ માટે કન્ફર્મેશનની આવશ્યકતા વગેરેનો સમાવેશ થાય છે. સુરક્ષા વ્યવસ્થાપક I/O ક્ષમતાઓને પણ હેન્ડલ કરે છે જેનો ઉપયોગ જોડી બનાવવા માટે કઈ પદ્ધતિનો ઉપયોગ થાય છે તે નક્કી કરવા માટે થાય છે. /બંધન (સારાંશ માટે પરિશિષ્ટ A જુઓ). આ વિભાગમાં તમે એક સરળ સેટઅપ જોશો.

  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. તમારા મોબાઇલ ફોનમાં બ્લૂટૂથ સેટિંગ્સ ખોલો અને EFR32 ઉપકરણ પર બોન્ડ દૂર કરો. મોબાઇલ ફોન અમલીકરણો બદલાય છે તેથી આ પગલું જરૂરી ન હોઈ શકે. જો તમને તમારી બ્લૂટૂથ સેટિંગ્સમાં 'તાલીમ' ઉપકરણ દેખાતું નથી, તો ફક્ત આગલા પગલા પર આગળ વધો.
    2. સૉફ્ટવેર ઘટકોમાં, સરળ બટન હેન્ડલરનો એક દાખલો ઇન્સ્ટોલ કરો.
    3. હેડર શામેલ કરો file sl_simple_button_instances.h in app.c
    4. sl_bt_evt_sm_bonding_confirm_id ઇવેન્ટ માટે હેન્ડલર ઉમેરો. આ ઇવેન્ટ હેન્ડલરનું મુખ્ય કામ વપરાશકર્તાને જાણ કરવાનું છે કે રિમોટ ડિવાઇસ નવા બોન્ડની વિનંતી કરી રહ્યું છે.
    5. બ્લૂટૂથ સ્ટેક પર સિગ્નલ મોકલવા માટે સરળ બટન હેન્ડલર માટે કૉલબેક ફંક્શન ઉમેરો જે દર્શાવે છે કે બટન દબાવવામાં આવ્યું છે. આ ડિફૉલ્ટ કૉલબૅકને ઓવરરાઇડ કરે છે જે ખાલી પરત કરે છે.
    6. બાહ્ય સિગ્નલ ઇવેન્ટ હેન્ડલર ઉમેરો. આ ઇવેન્ટ સિગ્નલ પ્રાપ્ત કરવાના પ્રતિભાવમાં ઉભી કરવામાં આવી છે, જેમ કે પાછલા પગલામાં. બાહ્ય સિગ્નલ ઇવેન્ટનો ઉપયોગ બોન્ડિંગની પુષ્ટિ કરવા માટે કરવામાં આવશે.
    7. જેમ કે બોન્ડિંગ કન્ફર્મેશનની આવશ્યકતા માટે કૉલને sl_bt_sm_configure પર બદલો
    8. પુનઃબીલ્ડ અને ફ્લેશ.
    9. EFRConnect સાથે જોડાઓ અને પહેલાની જેમ સુરક્ષિત લાક્ષણિકતા વાંચો. હવે તમે કન્સોલ પર નીચે પ્રમાણે એક સંદેશ જોશો:બોન્ડિંગની પુષ્ટિ કરવા માટે PB0 દબાવો. હવે કન્સોલ બોન્ડિંગ માટે મોબાઇલ ફોન પર દાખલ કરવાની પાસકી પ્રદર્શિત કરશે. બોન્ડિંગ પ્રક્રિયા પૂર્ણ કરવા માટે પાસકી દાખલ કરો.

 

ટીપ: જ્યારે સ્ટેક હેન્ડલ ન હોય તેવી ઇવેન્ટ મોકલે ત્યારે સંદેશને છાપવા માટે ઇવેન્ટ હેન્ડલરમાં ડિફોલ્ટ કેસનો ઉપયોગ કરો. સ્ટેક તમને કંઈક મહત્વપૂર્ણ કહેવાનો પ્રયાસ કરી શકે છે.

બિયોન્ડ ધ બેઝિક્સ

આ સમયે, તમે એડવાન લીધું છેtagઅમારા સ્ટેક દ્વારા ઓફર કરવામાં આવતી સુરક્ષા સુવિધાઓમાંથી e. હવે ચાલો આપણા નિકાલ પરની સુવિધાઓના સમજદાર ઉપયોગ દ્વારા અમલીકરણમાં સુધારો કરીએ. નીચેના પગલાં વૈકલ્પિક છે અને એકબીજાથી સ્વતંત્ર છે, તમે વર્તન જોવા માટે અથવા તે બધાને એકસાથે અજમાવવા માટે દરેક પછી બનાવી અને ફ્લેશ કરી શકો છો.

  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 ઇવેન્ટમાં છે. કનેક્શન હેન્ડલ કનેક્શન વેરીએબલમાં ઉપલબ્ધ છે.

સુરક્ષિત ઓળખ

હવે અમારી પાસે વધુ સુરક્ષિત બ્લૂટૂથ ઉપકરણ છે, ચાલો પ્રમાણીકરણ પગલાંને બહેતર બનાવીએ. તમે અગાઉની તાલીમ લેબમાં કમાન્ડ લાઇન વડે વૉલ્ટ ઉપકરણોની સુરક્ષિત ઓળખ કેવી રીતે ચકાસવી તે પહેલાથી જ જોયું છે. આ વિભાગમાં, અમે જોઈશું કે કેવી રીતે એક BLE ઉપકરણ તેની પ્રમાણપત્ર સાંકળની વિનંતી કરીને અને પડકાર મોકલીને બીજા BLE ઉપકરણની ઓળખ ચકાસી શકે છે. બધા સુરક્ષિત વૉલ્ટ ભાગો તેમના પોતાના ઉપકરણ પ્રમાણપત્ર અને બેચ પ્રમાણપત્ર ધરાવે છે. સમગ્ર પ્રમાણપત્ર શૃંખલાની ચકાસણીને સક્ષમ કરવા માટે ફેક્ટરી અને રૂટ પ્રમાણપત્રો ક્લાયંટ એપ્લિકેશનમાં સખત કોડેડ છે. સુરક્ષિત ઓળખ પર વધુ વિગતો માટે AN1268 નો સંદર્ભ લો.

  1. નીચે પ્રમાણે ઉપકરણ પ્રમાણિત સહી સંગ્રહવા માટે વૈશ્વિક બફર વ્યાખ્યાયિત કરો:
  2. JustWorks પેરિંગનો ઉપયોગ કરવા માટે સુરક્ષા મેનેજર ગોઠવણી સેટ કરો. આ કરવામાં આવે છે જેથી કનેક્શન એનક્રિપ્ટ થયેલ હોય. વ્યવહારમાં, MITM સંરક્ષણનો ઉપયોગ થવો જોઈએ પરંતુ લેબને સરળ રાખવા માટે, અમે JustWorks નો ઉપયોગ કરીશું. કૉલને sl_bt_sm_configure પર પાછા નીચેના પર બદલો:ઉપરાંત, સિસ્ટમ_બૂટ ઇવેન્ટ હેન્ડલરમાં સેટઅપ_મોડ(ટ્રુ) માટેના કૉલની ટિપ્પણી કરો.
  3. પૂરી પાડવામાં આવેલ સામગ્રીમાંથી helpers.c ખોલો અને app.c માં સામગ્રીની નકલ કરો. આ કૉલબેક કાર્યો પ્રમાણપત્રોને વિભાજિત કરવા જેવા કાર્યો કરે છે જેથી કરીને તેઓને BLE પર મોકલી શકાય, પ્રમાણપત્ર સાંકળની ચકાસણી કરવી, અને પડકાર જનરેટ/ચકાસવામાં આવે છે.
  4. મહત્તમ ટ્રાન્સફર યુનિટ (MTU)નું કદ નક્કી કરવું જરૂરી છે જેથી પ્રમાણપત્રોને વિભાજિત અને ફરીથી એસેમ્બલ કરી શકાય. અહીં બતાવ્યા પ્રમાણે MTU ને સાચવવા માટે વૈશ્વિક ચલ વ્યાખ્યાયિત કરો:પછી નીચે બતાવ્યા પ્રમાણે GATT MTU એક્સચેન્જ કરેલ ઇવેન્ટ માટે ઇવેન્ટ હેન્ડલર ઉમેરો:
  5. ત્યાં ત્રણ વપરાશકર્તા ડેટા લાક્ષણિકતાઓ છે જે વાંચી શકાય છે. આ લાક્ષણિકતાઓનો ઉપયોગ ઉપકરણ પ્રમાણપત્ર, બેચ પ્રમાણપત્ર અને પડકારને સંચાર કરવા માટે થાય છે. આ યુઝર રીડ રિક્વેસ્ટને હેન્ડલ કરવા માટે કોલબેક ફંક્શનનો ઉપયોગ કરવામાં આવે છે. નીચે બતાવ્યા પ્રમાણે આ ફંક્શનને કૉલ કરવા માટે હેન્ડલર ઉમેરો:કૉલબેક પગલું #2 થી સેગમેન્ટ સુધી MTU નો ઉપયોગ કરે છે અને જરૂર મુજબ પ્રમાણપત્રો મોકલે છે. તે સહી કરેલ પડકાર મોકલવાનું પણ સંભાળે છે.
  6. ક્લાયંટ એક પડકાર મોકલે છે, સર્વર દ્વારા સહી કરવા માટેનો રેન્ડમ નંબર, GATT લાક્ષણિકતાઓમાંથી એક લખીને. આ કારણોસર, એપ્લિકેશનને નીચે મુજબ વપરાશકર્તા લખવાની વિનંતી ઇવેન્ટ માટે હેન્ડલરની જરૂર છે:
  7. સુરક્ષિત ઓળખ આધાર ઉમેરો fileપ્રોજેક્ટ માટે s:
    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/રેડિયોબોર્ડ પર બનાવો અને ફ્લેશ કરો.
  11. પ્રદાન કરેલ સામગ્રીમાં ક્લાયંટ ફોલ્ડરમાંથી ક્લાયંટ પ્રોજેક્ટને આયાત કરો. તમારા ક્લાયંટ WSTK/રેડિયોબોર્ડ પર ક્લાયંટ પ્રોજેક્ટ બનાવો અને ફ્લેશ કરો.
  12. ક્લાયંટ WSTK પર રીસેટ દબાવો અને સીરીયલ કન્સોલ ખોલો. ક્લાયંટ અમારી સુરક્ષિત ઓળખ સેવાની જાહેરાત કરતા ઉપકરણો માટે સ્કેન કરવાનું શરૂ કરે છે અને જ્યારે તે શોધે છે ત્યારે તે કનેક્ટ થશે.
  13. ક્લાયંટ કેટલાક સંદેશા પ્રદર્શિત કરશે તે દર્શાવવા માટે કે તેને ઇચ્છિત સેવા અને પ્રમાણપત્ર સાંકળની ચકાસણી વિશે સ્થિતિ સંદેશાઓ સાથે સર્વર મળ્યું છે.
  14. જો ચકાસણી પસાર થાય છે, તો ક્લાયંટ રેન્ડમ નંબર જનરેટ કરશે, જેને ચેલેન્જ કહેવાય છે અને તેને સર્વર પર મોકલશે. સર્વર તેની સુરક્ષિત રીતે રાખેલી ખાનગી ઉપકરણ કી વડે ચેલેન્જ પર હસ્તાક્ષર કરશે અને ક્લાયન્ટને પાછા હસ્તાક્ષર કરશે, આને પડકાર પ્રતિભાવ કહેવાય છે. પછી ક્લાયંટ હસ્તાક્ષર ચકાસવા માટે અગાઉ પ્રાપ્ત કરેલ ઉપકરણ પ્રમાણપત્રમાં જાહેર કીનો ઉપયોગ કરે છે. આ ખાતરી કરવા માટે કરવામાં આવે છે કે સર્વર પાસે ખરેખર ખાનગી કી છે જેનો તેણે દાવો કર્યો હતો. જો પડકાર યોગ્ય રીતે ચકાસાયેલ હોય, તો તે અસર માટે એક સંદેશ પ્રદર્શિત થાય છે; અન્યથા, કનેક્શન બંધ છે, અને શા માટે સમજાવતો સંદેશ પ્રદર્શિત થાય છે.
  15. હવે ચકાસણી ખરેખર કામ કરે છે તેની પુષ્ટિ કરવા માટે એક અમાન્ય પ્રમાણપત્ર મોકલો. પ્રમાણપત્ર ડેટા અથવા પડકાર પ્રતિસાદને દૂષિત કરવા માટે તમે user_read_request_cb() ને સંશોધિત કરી શકો છો.

પરિશિષ્ટ A – I/O ક્ષમતાઓ અને જોડી બનાવવાની પદ્ધતિઓ
પરિશિષ્ટ B - સુરક્ષા સ્થિતિઓ અને સ્તરો

સિલિકોન લેબ્સના સ્ટેકમાં બ્લૂટૂથ લો એનર્જી માટે સિક્યોરિટી મોડ 1 એ એકમાત્ર મોડ છે. સ્તરો નીચે મુજબ છે:

  • સ્તર 1 કોઈ સુરક્ષા નથી
  • એન્ક્રિપ્શન સાથે લેવલ 2 અનધિકૃત પેરિંગ
  • એન્ક્રિપ્શન સાથે લેવલ 3 પ્રમાણિત જોડી
  • મજબૂત એન્ક્રિપ્શન (ECDH કી એક્સચેન્જ) સાથે લેવલ 4 પ્રમાણિત સુરક્ષિત કનેક્શન

 

દસ્તાવેજો / સંસાધનો

silabs 21Q2 સુરક્ષિત BLE ઉપકરણ સુરક્ષા લેબ [પીડીએફ] વપરાશકર્તા માર્ગદર્શિકા
21Q2 સુરક્ષિત BLE ઉપકરણ સુરક્ષા લેબ, સુરક્ષિત BLE ઉપકરણ સુરક્ષા લેબ, સુરક્ષા લેબ

સંદર્ભો

એક ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો ચિહ્નિત થયેલ છે *