silabs 21Q2 უსაფრთხო BLE მოწყობილობა უსაფრთხოების ლაბორატორია
BLE უსაფრთხოების ლაბორატორიის სახელმძღვანელო
ამ ლაბორატორიაში ნახავთ, თუ როგორ უნდა შექმნათ უფრო უსაფრთხო BLE მოწყობილობა. ჩვენ დავიწყებთ აღდგენითview როგორ გამოვიყენოთ სტეკის ზოგიერთი მახასიათებელი და გადავიდეთ ზოგად რჩევებზე უფრო უსაფრთხო კავშირების ტექნიკის შესახებ და ბოლოს დავინახავთ, თუ როგორ გამოვიყენოთ მოწყობილობის სერთიფიკატები BLE-ზე პერიფერიული მოწყობილობის ავთენტურობის დასადგენად.
დაწყება
Bluetooth სampპროგრამა, რომელზეც თქვენ შექმნით, განკუთვნილია ჩამტვირთავთან გამოსაყენებლად. თუ თქვენ მუშაობთ ახალ EFR32MG21B-თან, მას არ ექნება ჩამტვირთავი. თქვენ შეგიძლიათ იპოვოთ წინასწარ აშენებული ჩამტვირთავი პლატფორმაში\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a თქვენი SDK საქაღალდეში.
- დაიწყეთ სოც-ცარიელი სampაპი. ეს სample app გამოიყენება როგორც შაბლონი და კარგ ამოსავალ წერტილს წარმოადგენს ნებისმიერი BLE აპლიკაციისთვის.
- გახსენით Silicon Labs Project Wizard Simplicity Studio-დან 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 კომპონენტი
- გახსენით დაფის კონტროლის კომპონენტი და ჩართეთ ვირტუალური COM UART-ის ჩართვა
- დააწკაპუნეთ მაუსის მარჯვენა ღილაკით ადაპტერზე "გამართვის ადაპტერების" პანელში და აირჩიეთ "გაშვების კონსოლი". აირჩიეთ ჩანართი „სერიული 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
-
- შექმენით და გააშუქეთ პროექტი. ამ ეტაპზე ჩვენ გავმართავთ სampაპი, რათა ნახოთ როგორ იქცევა იგი ყოველგვარი ცვლილების გარეშე, გარდა GATT მონაცემთა ბაზისა.
- დაუკავშირდით EFRConnect მობილური აპლიკაციას შემდეგნაირად:
-
- შეეხეთ "Bluetooth ბრაუზერის" ხატულას.
- შეეხეთ "დაკავშირების" ხატულას მოწყობილობაზე სახელად "ტრეინინგი".
-
- წაიკითხეთ დაუცველი მახასიათებელი შემდეგნაირად:
-
- შეეხეთ ბმულს „მეტი ინფორმაცია“ უცნობი სერვისის ქვეშ UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- წაიკითხეთ დაუცველი მახასიათებელი, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c „წაკითხვის“ ხატულაზე შეხებით. აქ სიურპრიზები არ არის. ვინაიდან მახასიათებელი არანაირად არ არის დაცული, ის გაიგზავნება ღია ტექსტში.
-
- ახლა წაიკითხეთ დაცული მახასიათებელი, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. მობილურმა ტელეფონმა უნდა მოგთხოვოთ დაწყვილება და დაკავშირება, შეტყობინება შეიძლება განსხვავდებოდეს თქვენი მობილური OS-ის მიხედვით. დაწყვილების მოთხოვნის მიღების შემდეგ, თქვენ უნდა გაგზავნოთ შეტყობინება კონსოლზე შემდეგნაირად:
შენიშვნა: დანართი A ამ სახელმძღვანელოს ბოლოს შეიცავს I/O შესაძლებლობების და დაწყვილების მეთოდების შეჯამებას მითითებისთვის. დანართი B აჯამებს Bluetooth უსაფრთხოების რეჟიმებს.
უსაფრთხოების მენეჯერის კონფიგურაცია
უსაფრთხოების მენეჯერი არის Bluetooth სტეკის ნაწილი, რომელიც განსაზღვრავს უსაფრთხოების რომელი ფუნქციების გამოყენებას. ეს ფუნქციები მოიცავს ადამიანის შუაგულში (MITM) დაცვას, LE Secure კავშირებს (aka ECDH), საჭიროებს დადასტურებას შეკავშირებისთვის და ა.შ. უსაფრთხოების მენეჯერი ასევე ამუშავებს I/O შესაძლებლობებს, რომლებიც გამოიყენება იმის დასადგენად, თუ რომელი მეთოდია გამოყენებული დაწყვილებისთვის. /bonding (შეჯამებისთვის იხილეთ დანართი A). ამ განყოფილებაში ნახავთ მარტივ დაყენებას.
- დააყენეთ SM სასურველი კონფიგურაციით. ამ ლაბორატორიის აპარატურა აადვილებს პაროლების ჩვენებას კონსოლზე. პაროლის შეყვანა არის მოთხოვნა MITM დაცვის გასააქტიურებლად. დაამატეთ შემდეგი კოდი თქვენს sl_bt_system_boot_id მოვლენის დამმუშავებელს. ეს საშუალებას აძლევს man-in-the-middle-ს და აცნობებს დისტანციურ მოწყობილობას, რომ ჩვენ გვაქვს პაროლის ჩვენების შესაძლებლობა, მაგრამ ეს ყველაფერია.
- კონსოლზე გასაღების საჩვენებლად საჭიროა მოვლენის დამმუშავებელი, როგორც ეს ნაჩვენებია ქვემოთ:
- დააყენეთ შებოჭვის რეჟიმი, შემაკავშირებელთა მაქსიმალური რაოდენობა და ა.შ. დასაწყებად გამოიყენეთ შემდეგი კოდი:
ეს პარამეტრები შეიძლება გამოყენებულ იქნას თავდამსხმელის მიერ თქვენს მოწყობილობასთან შეკავშირების შესაძლებლობის შესაზღუდად. თუ თქვენს პროდუქტს მხოლოდ ერთი მომხმარებელი სჭირდება, მაშინ შეგიძლიათ შეზღუდოთ მაქსიმალური ბონდები 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 sl_simple_button_instances.h app.c-ში
- დაამატეთ დამმუშავებელი sl_bt_evt_sm_bonding_confirm_id მოვლენისთვის. ამ მოვლენის დამმუშავებლის მთავარი ამოცანაა მომხმარებლის ინფორმირება, რომ დისტანციური მოწყობილობა ითხოვს ახალ ბონდს.
- დაამატეთ გამოძახების ფუნქცია მარტივი ღილაკების დამმუშავებლისთვის, რათა გაუგზავნოთ სიგნალი Bluetooth დასტაზე, რომელიც მიუთითებს, რომ ღილაკი დაჭერილია. ეს უგულებელყოფს ნაგულისხმევ გამოძახებას, რომელიც უბრალოდ ბრუნდება.
- დაამატეთ გარე სიგნალის მოვლენის დამმუშავებელი. ეს მოვლენა ჩნდება სიგნალის მიღების საპასუხოდ, როგორც წინა ეტაპზე. გარე სიგნალის მოვლენა გამოყენებული იქნება კავშირის დასადასტურებლად.
- შეცვალეთ ზარი sl_bt_sm_configure-ზე, რათა მოითხოვოთ კავშირის დადასტურება, როგორიცაა
- აღადგინეთ და გამორთეთ.
- დაუკავშირდით EFRConnect-ს და წაიკითხეთ დაცული მახასიათებელი, როგორც ადრე. ახლა თქვენ ნახავთ შეტყობინებას კონსოლზე შემდეგნაირად:
დააჭირეთ PB0, რომ დაადასტუროთ კავშირი. ახლა კონსოლში გამოჩნდება გასაღები, რომელიც უნდა შეიყვანოთ მობილურ ტელეფონში დასაკავშირებლად. შეიყვანეთ გასაღები, რომ დაასრულოთ შეკავშირების პროცესი.
რჩევა: გამოიყენეთ ნაგულისხმევი ქეისი მოვლენის დამმუშავებელში, რათა ამობეჭდოთ შეტყობინება, როდესაც დასტა აგზავნის მოვლენას, რომელიც არ არის დამუშავებული. შესაძლოა, დასტა ცდილობს გითხრათ რაიმე მნიშვნელოვანი.
საფუძვლების მიღმა
ამ ეტაპზე თქვენ აიღეთ წინსვლაtagუსაფრთხოების ფუნქციებიდან, რომელსაც ჩვენი დასტა გვთავაზობს. ახლა მოდით გავაუმჯობესოთ განხორციელება ჩვენს ხელთ არსებული ფუნქციების გონივრული გამოყენებით. შემდეგი ნაბიჯები არასავალდებულო და ერთმანეთისგან დამოუკიდებელია, შეგიძლიათ ააწყოთ და გაანათოთ თითოეული მათგანის შემდეგ, რომ ნახოთ ქცევა ან სცადოთ ისინი ყველა ერთად.
- გათიშეთ კავშირის წარუმატებელი მცდელობები. ეს კარგი ადგილია საფრთხეების გამოსავლენად. თუ დისტანციური მოწყობილობა არ უჭერს მხარს დაშიფვრას/ავთენტიფიკაციას ან უბრალოდ არ აქვს სწორი გასაღებები, ეს შეიძლება იყოს ჰაკერი. ასე რომ, მოდით გავწყვიტოთ კავშირი. სცადეთ ზარის დამატება sl_bt_connection_close()-ზე sl_bt_sm_bonding_failed_id ღონისძიებაში. API აქ არის დოკუმენტირებული.
თქვენ შეგიძლიათ შეამოწმოთ ეს ფუნქცია არასწორი გასაღების შეყვანით.
- ნებადართულია შეკვრა მხოლოდ გარკვეულ დროს. ეს ზღუდავს დროს, როდესაც თავდამსხმელმა უნდა შექმნას კავშირი და შესაძლებელს ხდის გამოიყენოს "მხოლოდ შეკრული კავშირების დაშვება" ფუნქცია. დიზაინერს შეუძლია აირჩიოს როგორ ჩართოს ან გამორთოს bondable რეჟიმი. სადემონსტრაციო მიზნებისთვის, ჩვენ ჩავრთავთ „დაყენების რეჟიმს“ PB1-ით და გამოვიყენებთ ტაიმერს მის გასათიშად 30 წამის შემდეგ.
- დააინსტალირეთ მარტივი ღილაკის ინტერფეისის მეორე ინსტანცია. ეს საშუალებას მისცემს გამოიყენოს PB1.
- შეცვალეთ გამოძახება დასტაზე სხვა სიგნალის გასაგზავნად, რათა ჩართოთ/გამორთოთ კავშირი. შედეგი დაახლოებით ასე უნდა გამოიყურებოდეს:
- შეცვალეთ გარე სიგნალის მოვლენის დამმუშავებელი ისე, რომ იგი ამუშავებს ამ ახალ სიგნალს. შედეგი ასეთი უნდა იყოს:
- დაამატეთ მოვლენის დამმუშავებელი sl_bt_evt_system_soft_timer_id მოვლენისთვის. ეს გამოყენებული იქნება დაყენების რეჟიმის გასათიშად.
- შემდეგი კოდი შეიძლება გამოყენებულ იქნას bondable რეჟიმის ჩასართავად და ყველა კავშირის დასაშვებად ან bondable რეჟიმის გამორთვის და მხოლოდ დაკავშირებულ მოწყობილობებთან კავშირების დასაშვებად:
- დაამატეთ შემდეგი ზარი sl_bt_system_boot_id მოვლენის დამმუშავებელში
- შექმენით პროექტი და დააფიქსირეთ იგი მოწყობილობაში.
- სცადეთ მოწყობილობასთან დაკავშირება EFRConnect-ით. კავშირი უნდა ჩავარდეს.
- ახლა სცადეთ დააჭირეთ PB1 EFRConnect-თან დაკავშირებამდე. ამჯერად კავშირი წარმატებული იქნება. 30 წამის შემდეგ თქვენ იხილავთ შეტყობინებას კონსოლზე, რომელიც მიუთითებს, რომ მოწყობილობა გადის დაყენების რეჟიმიდან. ეს ნიშნავს, რომ bondable რეჟიმი ახლა გამორთულია.
- კავშირის დამყარებისას უსაფრთხოების გაზრდა. ვინაიდან უსაფრთხოება არასავალდებულოა, ჩვენ უნდა მოვითხოვოთ დაშიფრული კავშირი რაც შეიძლება მალე, ვიდრე დავეყრდნოთ GATT მახასიათებლებს. API აქ არის დოკუმენტირებული. ამ API-ს გამოსაძახებლად კარგი ადგილია sl_bt_evt_connection_opened_id მოვლენა. კავშირის სახელური ხელმისაწვდომია კავშირის ცვლადში.
უსაფრთხო პირადობა
ახლა, როდესაც ჩვენ გვაქვს უფრო უსაფრთხო Bluetooth მოწყობილობა, მოდით გავაუმჯობესოთ ავტორიზაციის ეტაპი. თქვენ უკვე ნახეთ, როგორ გადაამოწმოთ სარდაფის მოწყობილობების უსაფრთხო იდენტურობა ბრძანების ხაზით წინა სასწავლო ლაბორატორიებში. ამ განყოფილებაში ჩვენ დავინახავთ, თუ როგორ შეუძლია ერთ BLE მოწყობილობას გადაამოწმოს სხვა BLE მოწყობილობის იდენტურობა მისი სერტიფიკატების ჯაჭვის მოთხოვნით და გამოწვევის გაგზავნით. ყველა უსაფრთხო სარდაფის ნაწილს აქვს საკუთარი მოწყობილობის სერტიფიკატი და სერიის სერტიფიკატი. ქარხნული და ძირეული სერთიფიკატები მყარი კოდირებულია კლიენტის აპლიკაციაში, რათა მოხდეს სერტიფიკატების მთელი ჯაჭვის გადამოწმება. იხილეთ AN1268 დამატებითი ინფორმაციისთვის უსაფრთხო პირადობის შესახებ.
- განსაზღვრეთ გლობალური ბუფერი მოწყობილობის ატესტაციის ხელმოწერის შესანახად, როგორც ქვემოთ:
- დააყენეთ უსაფრთხოების მენეჯერის კონფიგურაცია JustWorks-ის დაწყვილების გამოსაყენებლად. ეს კეთდება ისე, რომ კავშირი დაშიფრულია. პრაქტიკაში, MITM დაცვა უნდა იყოს გამოყენებული, მაგრამ ლაბორატორიის მარტივი შესანარჩუნებლად, ჩვენ გამოვიყენებთ JustWorks-ს. შეცვალეთ ზარი sl_bt_sm_configure-ზე შემდეგზე:
ასევე, კომენტარი გააკეთეთ ზარზე setup_mode(true) 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 / რადიობორტზე.
- კლიენტის პროექტის იმპორტი კლიენტის საქაღალდიდან მოწოდებულ მასალებში. შექმენით და გააშუქეთ კლიენტის პროექტი თქვენს კლიენტს WSTK/რადიო დაფაზე.
- დააჭირეთ გადატვირთვის WSTK კლიენტს და გახსენით სერიული კონსოლი. კლიენტი იწყებს სკანირებას მოწყობილობებისთვის, რომლებიც რეკლამირებენ ჩვენს უსაფრთხო საიდენტიფიკაციო სერვისს და დაუკავშირდება, როდესაც იპოვის მას.
- კლიენტი აჩვენებს რამდენიმე შეტყობინებას, რათა მიუთითოს, რომ იპოვა სერვერი სასურველი სერვისით და სტატუსის შეტყობინებები სერტიფიკატების ჯაჭვის გადამოწმების შესახებ.
- თუ ვერიფიკაცია გაივლის, კლიენტი გამოიმუშავებს შემთხვევით რიცხვს, რომელსაც ეწოდება გამოწვევა და გაუგზავნის მას სერვერზე. სერვერი ხელს მოაწერს გამოწვევას მისი უსაფრთხოდ დაცული მოწყობილობის პირადი გასაღებით და ხელმოწერით დაუბრუნებს კლიენტს, ამას ეწოდება გამოწვევის პასუხი. შემდეგ კლიენტი იყენებს საჯარო გასაღებს ადრე მიღებულ მოწყობილობის სერტიფიკატში ხელმოწერის დასადასტურებლად. ეს კეთდება იმის დასადასტურებლად, რომ სერვერს ნამდვილად აქვს პირადი გასაღები, რომელიც მას ჰქონდა. თუ გამოწვევა სწორად არის დამოწმებული, გამოჩნდება შეტყობინება ამის შესახებ; წინააღმდეგ შემთხვევაში, კავშირი დახურულია და გამოჩნდება შეტყობინება, რომელიც განმარტავს რატომ.
- ახლა გაგზავნეთ არასწორი სერტიფიკატი, რათა დაადასტუროთ, რომ დადასტურება ნამდვილად მუშაობს. თქვენ შეგიძლიათ შეცვალოთ user_read_request_cb() რათა დაზიანდეს სერთიფიკატის მონაცემები ან გამოწვევის პასუხი.
დანართი A – I/O შესაძლებლობები და დაწყვილების მეთოდები 
დანართი B – უსაფრთხოების რეჟიმები და დონეები
უსაფრთხოების რეჟიმი 1 არის ერთადერთი რეჟიმი, რომელსაც აქვს Bluetooth დაბალი ენერგიის მხარდაჭერა Silicon Labs-ის დასტაში. დონეები შემდეგია:
- დონე 1 უსაფრთხოების გარეშე
- მე-2 დონის არაავთენტიფიცირებული დაწყვილება დაშიფვრასთან
- მე-3 დონის ავთენტიფიცირებული დაწყვილება დაშიფვრასთან
- მე-4 დონის ავთენტიფიცირებული უსაფრთხო კავშირები ძლიერი დაშიფვრით (ECDH გასაღების გაცვლა)
დოკუმენტები / რესურსები
![]() |
silabs 21Q2 უსაფრთხო BLE მოწყობილობა უსაფრთხოების ლაბორატორია [pdf] მომხმარებლის სახელმძღვანელო 21Q2 უსაფრთხო BLE მოწყობილობის უსაფრთხოების ლაბორატორია, უსაფრთხო BLE მოწყობილობის უსაფრთხოების ლაბორატორია, უსაფრთხოების ლაბორატორია |