silabs 21Q2 təhlükəsiz BLE cihazı Təhlükəsizlik Laboratoriyası
BLE Təhlükəsizlik Laboratoriyası Təlimatı
Bu laboratoriyada siz daha təhlükəsiz BLE cihazını necə dizayn edəcəyinizi görəcəksiniz. Biz bir bit ilə başlayacağıqview stack xüsusiyyətlərindən bəzilərini necə istifadə edəcəyinizi və daha təhlükəsiz bağlantılar üçün üsullar haqqında bəzi ümumi məsləhətlərə keçin və nəhayət, periferik bir cihazın orijinal olduğunu müəyyən etmək üçün BLE üzərindən cihaz sertifikatlarından necə istifadə edəcəyimizi görəcəyik.
Başlanır
Bluetooth sampüzərində quracağınız proqram yükləyici ilə istifadə üçün nəzərdə tutulub. Yeni EFR32MG21B ilə işləyirsinizsə, onun yükləyicisi olmayacaq. Əvvəlcədən qurulmuş yükləyicini platformanın yükləyicisində tapa bilərsinizample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a SDK qovluğunuz.
- Soc-boş s ilə başlayınampproqram. Bu sample app şablon kimi istifadə olunur və istənilən BLE tətbiqi üçün yaxşı başlanğıc nöqtəsi edir.
- Simplicity Studio-dan Silicon Labs Layihə Sihirbazını açın File menyu -> yeni.
- BRD4181C seçin və "növbəti" düyməsini basın.
- Texnologiya növü altında 'Bluetooth (9)' onay qutusuna klikləyin.
- 'Bluetooth – SoC Empty' seçin və növbəti klikləyin.
- "Bitir" düyməsini basın.
- İndi siz qorunan və qorunmayan xüsusiyyətlərin necə fərqli davranıldığını görmək üçün bəzi xüsusiyyətlər əlavə edə bilərsiniz.
- Layihənin slcp-ni açın file Layihə Explorer pəncərəsində iki dəfə klikləməklə
- 'Proqram Təminatı Komponentləri' sekmesini vurğulayın və aşağıda göstərildiyi kimi GATT konfiqurasiya alətini açın:
Və gatt_configuration.btconf faylını idxal etmək üçün aşağıda göstərilən idxal alətindən istifadə edin file təqdim olunan materiallardakı server qovluğundan.
GATT verilənlər bazasında bəzi məlumatlar qorunan, bəziləri isə qorunmayan “Təlim” adlı xüsusi xidmətə malikdir. Bu, qorunan xüsusiyyətlə qorunmayan xüsusiyyətə daxil olmaq istəyərkən baş verənləri müqayisə etməyə imkan verir. Bu, çox sadə təhlükəsizliyə malik bir cihaz hazırlamağın sürətli yoludur.
- Tətbiqdə baş verənləri izləmək üçün Simplicity Studio-da konsola çap etmək üçün seriya portundan istifadə edəcəyik. Bu komponentləri tapmağın ən asan yolu, göstərildiyi kimi PROGRAM KOMPONENTLƏRİ dialoq qutusunda onları axtarmaqdır:
-
- IO Stream USART komponentini quraşdırın
- IO Stream Retarget STDIO komponentini quraşdırın
- Standart I/O komponentini quraşdırın
- Log komponentini quraşdırın
- Board Control komponentini açın və 'Virtual COM UART'ı aktivləşdirin'
- 'Debug adapters' panelində adapter üzərinə sağ klikləyin və 'Launch Console' seçin. 'Serial 1' sekmesini seçin və kursoru konsol pəncərəsinin mətn daxiletmə sahəsinə qoyun və konsolu oyatmaq üçün enter düyməsini basın.
-
- Bağlantı sapını saxlamaq üçün app.c-də tapılan sl_bt_on_event()-də yerli dəyişən yaradın. Dəyişən statik olmalıdır, çünki bu funksiya hər dəfə yığın tərəfindən hadisə qaldırıldıqda çağırılır və biz dəyərin davamlı olmasını istəyirik. Bağlantı sapı daha sonra istifadə olunacaq
laboratoriya bölməsi.
- Əlaqədar olduğumuz zaman, təhlükəsizlik rejimləri və s. görmək üçün hadisələr üçün bəzi app_log() ifadələri daxil edin
-
- app_log.h başlığını daxil edin file
- sl_bt_evt_connection_opened – əlaqə tutacaqını çap edin və əlaqə sapını yadda saxlayın. Bağlama sapı 0xFF olarsa, qoşulmuş cihazlar arasında heç bir əlaqə mövcud deyil. Mövcud hadisə idarəedicisini dəyişdirin ki, o, belə görünsün:
- sl_bt_evt_connection_parameters – təhlükəsizlik rejimi. Bu, təhlükəsizlik rejiminin nə vaxt dəyişdiyini görə bilməniz üçün edilir. Təhlükəsizlik rejimi 1-in 0 dəyəri ilə nömrələndiyi təhlükəsizlik rejimlərinin nömrələnməsində fərq var və s. . Tətbiqinizə aşağıdakı hadisə işləyicisini əlavə edin:
- sl_bt_evt_connection_closed_id. Bu hadisə idarəedicisi əlaqə dəstəyini yeniləmək üçün dəyişdirilib. 0xFF dəyəri aktiv əlaqənin olmadığını göstərmək üçün istifadə olunur. app_log() əmri əlaqənin bağlanmasının səbəbini çap etmək üçün istifadə olunur, status kodlarının siyahısı buradadır. Mövcud hadisə idarəedicisini dəyişdirin ki, o, belə görünsün:
- app_log.h başlığını daxil edin file
-
- Layihəni qurun və flaş edin. Bu nöqtədə s-ni işlədəcəyikampGATT verilənlər bazası ilə yanaşı heç bir dəyişiklik olmadan necə davrandığını görmək üçün proqram.
- EFRConnect mobil proqramına aşağıdakı kimi qoşulun:
-
- "Bluetooth Brauzer" işarəsinə toxunun.
- "Təlim" adlı cihazda "Qoşul" işarəsinə klikləyin.
-
- Qorunmayan xüsusiyyəti aşağıdakı kimi oxuyun:
-
- UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 ilə naməlum xidmətin altındakı "Ətraflı məlumat" linkinə klikləyin.
- "Oxu" işarəsinə toxunmaqla qorunmayan xüsusiyyəti, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c oxuyun. Burada sürpriz yoxdur. Xarakteristika heç bir şəkildə qorunmadığı üçün açıq mətnlə göndəriləcək.
-
- İndi qorunan xarakteristikanı oxuyun, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Mobil telefonunuz sizi cütləşdirməyə və qoşulmağa dəvət etməlidir, mesaj mobil ƏS-dən asılı olaraq dəyişə bilər. Cütləşmə sorğusunu qəbul etdikdən sonra konsolda aşağıdakı mesajı almalısınız:
Qeyd: Bu təlimatın sonundakı Əlavə A-da giriş/çıxış imkanları və istinad üçün cütləşdirmə üsullarının xülasəsi var. Əlavə B Bluetooth təhlükəsizlik rejimlərini ümumiləşdirir.
Təhlükəsizlik Meneceri Konfiqurasiyası
Təhlükəsizlik meneceri hansı təhlükəsizlik xüsusiyyətlərinin istifadə olunduğunu müəyyən edən Bluetooth yığınının bir hissəsidir. Bu xüsusiyyətlərə ortada adam (MITM) mühafizəsi, bağlanma üçün təsdiq tələb edən LE Secure əlaqələri (aka ECDH) daxildir və s. /bağlama (xülasə üçün Əlavə A-ya baxın). Bu bölmədə sadə bir quraşdırma görəcəksiniz.
- İstədiyiniz konfiqurasiya ilə SM-i qurun. Bu laboratoriya üçün avadanlıq konsolda keçid açarını göstərməyi asanlaşdırır. Parolun daxil edilməsi MITM qorunmasını aktivləşdirmək üçün tələbdir. Aşağıdakı kodu sl_bt_system_boot_id hadisə idarəçisinə əlavə edin. Bu, adam-in-the-midle imkan verir və uzaq cihaza keçid açarını göstərmək imkanımız olduğunu bildirir, lakin hamısı budur.
- Konsolda keçid açarını göstərmək üçün aşağıda göstərildiyi kimi hadisə idarəedicisi tələb olunur:
- Bağlama rejimini, maksimum bağlanma sayını və s. təyin edin. Başlamaq üçün aşağıdakı kodu istifadə edin:
Bu parametrlər təcavüzkarın cihazınızla əlaqə qurma qabiliyyətini məhdudlaşdırmaq üçün istifadə edilə bilər. Əgər məhsulunuzun yalnız bir istifadəçisi olmalıdırsa, o zaman maksimum istiqrazları 1 ilə məhdudlaşdıra bilərsiniz. Bu zəngləri əlavə etmək üçün yaxşı yer sl_bt_system_boot_id hadisə idarəedicisindədir. Laboratoriyanın qalan hissəsinin daha rəvan getməsi üçün hazırda əlaqəni aktiv etməyəcəyik, lakin yalnız bir əlaqəyə icazə vermək üçün bağlama siyasəti təyin edirik. İstinad üçün, bu API-lər üçün sənədlər burada və burada tapılır.
- sl_bt_evt_sm_bonded_id və sl_bt_evt_sm_bonding_failed_id üçün hadisə işləyiciləri əlavə edin. Bu hadisələr üçün əsas istifadə hal-hazırda informativdir, lakin sonra laboratoriyada siz funksionallıq əlavə edəcəksiniz.
- Quraşdırın və hədəf lövhəsinə keçin. EFRConnect ilə əlaqə saxlayın və qorunan xüsusiyyəti əvvəlki kimi oxuyun. Bu dəfə konsolda keçid açarını görəcəksiniz. Tələb olunduqda bu açarı mobil telefonunuza daxil edin.
- Bağlanma təsdiqini sınayın. Bu xüsusiyyət istifadəçiyə bağlama sorğularının təsdiqlənməsini tələb etmək imkanı verir. Bunu etmək, tətbiqin hansı həmyaşıd cihazları ilə əlaqə saxlamasına nəzarət edir. Ehtimallardan biri istifadəçidən əlaqəyə icazə verməzdən əvvəl düyməni basmasını tələb etməkdir.
- Mobil telefonunuzda Bluetooth parametrlərini açın və EFR32 cihazı ilə əlaqəni çıxarın. Mobil telefon tətbiqləri müxtəlifdir, ona görə də bu addım lazım olmaya bilər. Bluetooth ayarlarınızda "Təlim" cihazını görmürsünüzsə, növbəti addıma keçin.
- Proqram komponentlərində sadə düymə işləyicisinin bir nümunəsini quraşdırın.
- Başlığı daxil edin file app.c-də sl_simple_button_instances.h
- sl_bt_evt_sm_bonding_confirm_id hadisəsi üçün işləyici əlavə edin. Bu hadisə idarəçisinin əsas işi istifadəçiyə uzaq cihazın yeni bir əlaqə tələb etməsi barədə məlumat verməkdir.
- Bluetooth yığınına düymənin basıldığını göstərən siqnal göndərmək üçün sadə düymə idarəedicisi üçün geri zəng funksiyası əlavə edin. Bu, sadəcə olaraq qaytarılan standart geri çağırışı ləğv edir.
- Xarici siqnal hadisə idarəçisi əlavə edin. Bu hadisə əvvəlki addımda olduğu kimi siqnalın qəbuluna cavab olaraq qaldırılır. Xarici siqnal hadisəsi əlaqəni təsdiqləmək üçün istifadə olunacaq.
- kimi bağlanma təsdiqini tələb etmək üçün zəngi sl_bt_sm_configure ilə dəyişin
- Yenidən qurun və yandırın.
- EFRConnect ilə əlaqə saxlayın və qorunan xüsusiyyəti əvvəlki kimi oxuyun. İndi konsolda aşağıdakı kimi bir mesaj görəcəksiniz:
Bağlantını təsdiqləmək üçün PB0 düyməsini basın. İndi konsol qoşulma üçün cib telefonuna daxil ediləcək açarı göstərəcək. Bağlama prosesini başa çatdırmaq üçün keçid açarını daxil edin.
İpucu: Yığın idarə olunmayan hadisəni göndərdikdə mesajı çap etmək üçün hadisə idarəedicisində standart halda istifadə edin. Yığın sizə vacib bir şey söyləməyə çalışa bilər.
Əsaslardan kənar
Bu nöqtədə siz qabaqcadan istifadə etdiniztagyığınımızın təklif etdiyi təhlükəsizlik xüsusiyyətlərindən biri. İndi ixtiyarımızda olan funksiyalardan müdrik istifadə etməklə tətbiqi təkmilləşdirək. Aşağıdakı addımlar isteğe bağlıdır və bir-birindən müstəqildir, siz davranışı görmək və ya hamısını birlikdə sınamaq üçün hər birindən sonra qura və yanıb-sönə bilərsiniz.
- Uğursuz bağlama cəhdlərində əlaqəni kəsin. Bu təhdidləri aşkar etmək üçün yaxşı yerdir. Uzaqdan olan cihaz şifrələməni/identifikasiyanı dəstəkləmirsə və ya sadəcə düzgün düymələrə malik deyilsə, bu, haker ola bilər. Beləliklə, əlaqəni kəsək. sl_bt_sm_bonding_failed_id hadisəsində sl_bt_connection_close() funksiyasına zəng əlavə etməyə cəhd edin. API burada sənədləşdirilir.
Yanlış keçid açarını daxil etməklə bu funksiyanı yoxlaya bilərsiniz.
- Yalnız müəyyən vaxtlarda bağlanmağa imkan verir. Bu, təcavüzkarın əlaqə yaratmalı olduğu vaxtı məhdudlaşdırır və "yalnız bağlanmış əlaqələrə icazə verir" funksiyasından istifadə etməyə imkan verir. Dizayner bağlanma rejimini necə aktivləşdirəcəyini və ya söndürəcəyini seçə bilər. Burada nümayiş məqsədləri üçün biz PB1 ilə "quraşdırma rejimini" aktiv edəcəyik və 30 saniyədən sonra onu söndürmək üçün taymerdən istifadə edəcəyik.
- Sadə düymə interfeysinin ikinci nümunəsini quraşdırın. Bu, PB1-dən istifadə etməyə imkan verəcək.
- Bağlanmağı aktivləşdirmək/deaktiv etmək üçün yığına fərqli siqnal göndərmək üçün geri çağırışı dəyişdirin. Nəticə belə görünməlidir:
- Xarici siqnal hadisəsi idarəedicisini elə dəyişdirin ki, o, bu yeni siqnalı idarə etsin. Nəticə belə olmalıdır:
- sl_bt_evt_system_soft_timer_id hadisəsi üçün hadisə idarəedicisi əlavə edin. Bu quraşdırma rejimini söndürmək üçün istifadə olunacaq.
- Aşağıdakı kod bağlana bilən rejimi aktivləşdirmək və bütün bağlantılara icazə vermək və ya bağlana bilən rejimi söndürmək və yalnız birləşdirilmiş cihazlardan qoşulmağa icazə vermək üçün istifadə edilə bilər:
- Aşağıdakı zəngi sl_bt_system_boot_id hadisə idarəedicisinə əlavə edin
- Layihəni qurun və onu cihaza yükləyin.
- EFRConnect ilə cihaza qoşulmağa cəhd edin. Bağlantı uğursuz olmalıdır.
- İndi EFRConnect ilə əlaqə qurmazdan əvvəl PB1 düyməsini sıxmağa çalışın. Bu dəfə əlaqə uğurlu olacaq. 30 saniyədən sonra siz konsolda cihazın quraşdırma rejimindən çıxdığını göstərən bir mesaj görəcəksiniz. Bu o deməkdir ki, bağlana bilən rejim artıq söndürülüb.
- Əlaqə yaratmaqda təhlükəsizliyi artırın. Təhlükəsizlik isteğe bağlı olduğundan, biz GATT xüsusiyyətlərinə etibar etməkdənsə, mümkün qədər tez şifrələnmiş əlaqə tələb etməliyik. API burada sənədləşdirilir. Bu API-yə zəng etmək üçün yaxşı yer sl_bt_evt_connection_opened_id hadisəsidir. Qoşulma sapı əlaqə dəyişənində mövcuddur.
Təhlükəsiz Şəxsiyyət
İndi daha təhlükəsiz Bluetooth cihazına sahib olduğumuz üçün autentifikasiya addımını təkmilləşdirək. Əvvəlki təlim laboratoriyalarında əmr xətti ilə kassa cihazlarının təhlükəsiz kimliyini necə yoxlamaq lazım olduğunu artıq görmüsünüz. Bu bölmədə bir BLE cihazının sertifikat zəncirini tələb edərək və çağırış göndərməklə digər BLE cihazının şəxsiyyətini necə yoxlaya biləcəyini görəcəyik. Bütün təhlükəsiz anbar hissələri öz cihaz sertifikatına və toplu sertifikatına malikdir. Bütün sertifikat zəncirinin yoxlanmasını təmin etmək üçün zavod və kök sertifikatları müştəri tətbiqinə sərt şəkildə kodlaşdırılıb. Təhlükəsiz şəxsiyyət haqqında ətraflı məlumat üçün AN1268-ə baxın.
- Aşağıdakı kimi cihazın sertifikat imzasını saxlamaq üçün qlobal bufer təyin edin:
- JustWorks cütləşməsindən istifadə etmək üçün təhlükəsizlik meneceri konfiqurasiyasını təyin edin. Bu, əlaqənin şifrələnməsi üçün edilir. Praktikada MITM qorunmasından istifadə edilməlidir, lakin laboratoriyanı sadə saxlamaq üçün JustWorks-dən istifadə edəcəyik. Zəngi sl_bt_sm_configure-ə yenidən aşağıdakı kimi dəyişdirin:
Həmçinin, system_boot hadisə idarəedicisində setup_mode(true) çağırışı şərh edin.
- Təqdim olunan materiallardan helpers.c-ni açın və məzmunu app.c-ə köçürün. Bu geri çağırış funksiyaları sertifikatların BLE üzərindən göndərilməsi, sertifikat zəncirinin yoxlanılması və problemin yaradılması/yoxlanması kimi tapşırıqları yerinə yetirir.
- Sertifikatların seqmentlərə bölünməsi və yenidən yığılması üçün maksimum köçürmə vahidinin (MTU) ölçüsünü müəyyən etmək lazımdır. Burada göstərildiyi kimi MTU-nu saxlamaq üçün qlobal dəyişən təyin edin:
Sonra aşağıda göstərildiyi kimi GATT MTU mübadiləsi hadisəsi üçün hadisə idarəçisi əlavə edin:
- Oxuya bilən üç istifadəçi məlumatı xüsusiyyəti var. Bu xüsusiyyətlər cihaz sertifikatı, toplu sertifikatı və problemi bildirmək üçün istifadə olunur. Bu istifadəçi oxu sorğularını idarə etmək üçün geri çağırış funksiyası istifadə olunur. Aşağıda göstərildiyi kimi bu funksiyaya zəng etmək üçün işləyici əlavə edin:
Geri çağırış MTU-dan 2-ci addımdan seqmentə qədər istifadə edir və lazım olduqda sertifikatları göndərir. O, həmçinin imzalanmış çağırışın göndərilməsi ilə məşğul olur.
- Müştəri GATT xüsusiyyətlərindən birini yazaraq server tərəfindən imzalanacaq təsadüfi bir nömrə göndərir. Bu səbəbdən, tətbiqin aşağıdakı kimi istifadəçi yazma sorğusu hadisəsi üçün işləyicisi olmalıdır:
- Təhlükəsiz şəxsiyyət dəstəyi əlavə edin files layihəyə:
- Layihəyə təqdim olunan materiallardan app_se_manager_macro.h, app_se_manager_secure_identity.c və app_se_secure_identity.h. Bunlar files sertifikatın ölçüsünü əldə etmək, cihazın açıq açarını əldə etmək və çağırış imzalamaq kimi tapşırıqlar üçün bəzi köməkçi funksiyaları ehtiva edir.
- app.c-ə app_se_manager_secure_identity.h daxil edin.
- Təqdim olunan materiallardan gatt_configuration-attest.btconf faylını idxal edin. Bu GATT verilənlər bazası cihazımızın şəxsiyyətini yoxlamaq üçün istifadə olunacaq dörd xüsusiyyəti özündə birləşdirən təhlükəsiz attestasiya adlanır. Bunlara cihaz sertifikatı, toplu sertifikat, problem və cavab daxildir.
- Şlüz kimi bir cihazı simulyasiya etmək üçün istifadə edilən müştəri, qurulması daha mürəkkəb olduğundan tam bir layihə kimi təqdim olunur. Ümumiyyətlə, müştərinin fəaliyyəti aşağıdakı kimidir:
- Təhlükəsiz attestasiya xidmətini reklam edən cihazları skan edir və onlara qoşulur.
- GATT verilənlər bazası xidmətlərini və xüsusiyyətlərini kəşf edir.
- Cihazı və toplu sertifikatları oxuyur və flaşda saxladığı zavod və kök sertifikatından istifadə edərək sertifikat zəncirini yoxlayır.
- Serverə təsadüfi çağırış göndərir.
- Çağırışa cavabı yoxlamaq cəhdləri.
- Doğrulama uğursuz olarsa, əlaqəni bağlayır.
- Server layihəsini WSTK / radioboard serverinizə yaradın və yandırın.
- Təqdim olunan materiallardakı müştəri qovluğundan müştəri layihəsini idxal edin. Müştəri layihəsini yaradın və müştəri WSTK/radioboardunuza göndərin.
- Müştəri WSTK-da sıfırlama düyməsini basın və serial konsolunu açın. Müştəri təhlükəsiz şəxsiyyət xidmətimizi reklam edən cihazları skan etməyə başlayır və birini tapdıqda qoşulacaq.
- Müştəri sertifikat zəncirinin yoxlanılması ilə bağlı istənilən xidmət və status mesajları ilə serveri tapdığını göstərmək üçün bəzi mesajlar göstərəcək.
- Doğrulama keçərsə, müştəri çağırış adlanan təsadüfi bir nömrə yaradacaq və onu serverə göndərəcək. Server təhlükəsiz saxlanılan şəxsi cihaz açarı və müştəriyə geri imzası ilə çağırışı imzalayacaq, buna çağırış cavabı deyilir. Müştəri daha sonra imzanı yoxlamaq üçün əvvəllər alınmış cihaz sertifikatında açıq açardan istifadə edir. Bu, serverin həqiqətən malik olduğunu iddia etdiyi şəxsi açara sahib olduğunu təsdiqləmək üçün edilir. Əgər çağırış düzgün şəkildə yoxlanılıbsa, bu barədə mesaj göstərilir; əks halda əlaqə bağlanır və bunun səbəbini izah edən mesaj göstərilir.
- İndi doğrulamanın həqiqətən işlədiyini təsdiqləmək üçün etibarsız sertifikat göndərin. Sertifikat məlumatlarını və ya çağırış cavabını korlamaq üçün user_read_request_cb() funksiyasını dəyişdirə bilərsiniz.
Əlavə A – Giriş/Çıxış İmkanları və Qoşulma Metodları 
Əlavə B – Təhlükəsizlik Rejimləri və Səviyyələri
Təhlükəsizlik rejimi 1 Silicon Labs yığınında Bluetooth Low Energy üçün dəstəklənən yeganə rejimdir. Səviyyələr aşağıdakılardır:
- Səviyyə 1 təhlükəsizlik yoxdur
- Səviyyə 2 şifrələmə ilə təsdiqlənməmiş cütləşmə
- Səviyyə 3 şifrələmə ilə təsdiqlənmiş cütləşmə
- Güclü şifrələmə ilə Səviyyə 4 təsdiqlənmiş təhlükəsiz bağlantılar (ECDH açar mübadiləsi)
Sənədlər / Resurslar
![]() |
silabs 21Q2 təhlükəsiz BLE cihazı Təhlükəsizlik Laboratoriyası [pdf] İstifadəçi Təlimatı 21Q2 təhlükəsiz BLE cihazı Təhlükəsizlik Laboratoriyası, təhlükəsiz BLE cihazı Təhlükəsizlik Laboratoriyası, Təhlükəsizlik Laboratoriyası |