silabs 21Q2 safe συσκευή BLE Security Lab
Εγχειρίδιο BLE Security Lab
Σε αυτό το εργαστήριο, θα δείτε πώς να σχεδιάσετε μια πιο ασφαλή συσκευή BLE. Θα ξεκινήσουμε με ένα overview για το πώς να χρησιμοποιήσετε ορισμένες από τις δυνατότητες στοίβας και θα προχωρήσουμε σε μερικές γενικές συμβουλές σχετικά με τεχνικές για πιο ασφαλείς συνδέσεις και, τέλος, θα δούμε πώς να χρησιμοποιήσουμε τα πιστοποιητικά συσκευών μέσω BLE για να αναγνωρίσουμε ένα περιφερειακό ως αυθεντικό.
Ξεκινώντας
Το Bluetooth sampΗ εφαρμογή στην οποία θα δημιουργήσετε προορίζεται να χρησιμοποιηθεί με ένα bootloader. Εάν εργάζεστε με ένα ολοκαίνουργιο EFR32MG21B, δεν θα έχει bootloader. Μπορείτε να βρείτε έναν προκατασκευασμένο bootloader στην πλατφόρμα\bootloader\sample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a του SDK σας.
- Ξεκινήστε με ένα soc-άδειο sample app. Αυτό το sampΗ εφαρμογή le χρησιμοποιείται ως πρότυπο και αποτελεί ένα καλό σημείο εκκίνησης για οποιαδήποτε εφαρμογή BLE.
- Ανοίξτε τον Οδηγό έργου Silicon Labs από το 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
- Εγκαταστήστε το στοιχείο Standard I/O
- Εγκαταστήστε το στοιχείο καταγραφής
- Ανοίξτε το στοιχείο ελέγχου πλακέτας και ενεργοποιήστε το "Ενεργοποίηση Virtual 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
-
- Δημιουργήστε και αναβοσβήστε το έργο. Σε αυτό το σημείο, θα τρέξουμε το sample app για να δείτε πώς συμπεριφέρεται χωρίς αλλαγές, εκτός από τη βάση δεδομένων GATT.
- Συνδεθείτε με την εφαρμογή EFRConnect για κινητά ως εξής:
-
- Πατήστε το εικονίδιο «Bluetooth Browser».
- Πατήστε το εικονίδιο «Σύνδεση» στη συσκευή που ονομάζεται «Εκπαίδευση».
-
- Διαβάστε το απροστάτευτο χαρακτηριστικό ως εξής:
-
- Πατήστε το σύνδεσμο "Περισσότερες πληροφορίες" κάτω από την άγνωστη υπηρεσία με UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0.
- Διαβάστε το μη προστατευμένο χαρακτηριστικό, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c πατώντας το εικονίδιο «Ανάγνωση». Δεν υπάρχουν εκπλήξεις εδώ. Εφόσον το χαρακτηριστικό δεν προστατεύεται με κανέναν τρόπο, θα σταλεί σε απλό κείμενο.
-
- Τώρα διαβάστε το προστατευμένο χαρακτηριστικό, UUID d4261dbb-dcd0-daab-ec95-deec088d532b. Το κινητό σας τηλέφωνο θα πρέπει να σας ζητήσει να κάνετε σύζευξη και σύνδεση, το μήνυμα μπορεί να διαφέρει ανάλογα με το λειτουργικό σύστημα του κινητού σας. Αφού αποδεχτείτε το αίτημα για σύζευξη, θα πρέπει να στείλετε ένα μήνυμα στην κονσόλα ως εξής:
Σημείωμα: Το Παράρτημα Α στο τέλος αυτού του εγχειριδίου περιέχει μια περίληψη των δυνατοτήτων εισόδου/εξόδου και των μεθόδων σύζευξης για αναφορά. Το Παράρτημα Β συνοψίζει τις λειτουργίες ασφαλείας Bluetooth.
Διαμόρφωση Διαχείρισης Ασφαλείας
Ο διαχειριστής ασφαλείας είναι μέρος της στοίβας Bluetooth που καθορίζει ποιες λειτουργίες ασφαλείας χρησιμοποιούνται. Αυτά τα χαρακτηριστικά περιλαμβάνουν προστασία από τον άνθρωπο στη μέση (MITM), συνδέσεις LE Secure (γνωστά και ως ECDH), που απαιτούν επιβεβαίωση για τη σύνδεση κ.λπ. /bonding (βλ. Παράρτημα Α για περίληψη). Σε αυτή την ενότητα θα δείτε μια απλή ρύθμιση.
- Ρυθμίστε το 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 τεκμηριώνεται εδώ.
Μπορείτε να δοκιμάσετε αυτήν τη δυνατότητα εισάγοντας λάθος κλειδί πρόσβασης.
- Επιτρέπεται η συγκόλληση μόνο σε συγκεκριμένους χρόνους. Αυτό περιορίζει το χρόνο που έχει ένας εισβολέας για να σχηματίσει δεσμό και καθιστά δυνατή τη χρήση της δυνατότητας «μόνο επιτρέπονται συνδεδεμένες συνδέσεις». Ο σχεδιαστής μπορεί να επιλέξει πώς να ενεργοποιήσει ή να απενεργοποιήσει τη λειτουργία σύνδεσης. Για λόγους επίδειξης εδώ, θα ενεργοποιήσουμε μια «λειτουργία εγκατάστασης» με το PB1 και θα χρησιμοποιήσουμε ένα χρονόμετρο για να το απενεργοποιήσουμε μετά από 30 δευτερόλεπτα.
- Εγκαταστήστε μια δεύτερη παρουσία της διεπαφής απλού κουμπιού. Αυτό θα επιτρέψει τη χρήση του PB1.
- Τροποποιήστε την επιστροφή κλήσης για να στείλετε ένα διαφορετικό σήμα στη στοίβα για να ενεργοποιήσετε/απενεργοποιήσετε τη σύνδεση. Το αποτέλεσμα θα πρέπει να μοιάζει κάπως έτσι:
- Τροποποιήστε τον χειριστή συμβάντων εξωτερικού σήματος έτσι ώστε να χειρίζεται αυτό το νέο σήμα. Το αποτέλεσμα θα πρέπει να είναι αυτό:
- Προσθέστε ένα πρόγραμμα χειρισμού συμβάντων για το συμβάν sl_bt_evt_system_soft_timer_id. Αυτό θα χρησιμοποιηθεί για την απενεργοποίηση της λειτουργίας ρύθμισης.
- Ο ακόλουθος κώδικας μπορεί να χρησιμοποιηθεί για να ενεργοποιήσετε τη λειτουργία σύνδεσης και να επιτρέψετε όλες τις συνδέσεις ή για να απενεργοποιήσετε τη λειτουργία σύνδεσης και να επιτρέψετε μόνο συνδέσεις από συνδεδεμένες συσκευές:
- Προσθέστε την ακόλουθη κλήση στο πρόγραμμα χειρισμού συμβάντων sl_bt_system_boot_id
- Δημιουργήστε το έργο και αναβοσβήστε το στη συσκευή.
- Δοκιμάστε να συνδεθείτε στη συσκευή με το EFRConnect. Η σύνδεση θα πρέπει να αποτύχει.
- Τώρα δοκιμάστε να πατήσετε το PB1 πριν συνδεθείτε με το EFRConnect. Αυτή τη φορά η σύνδεση θα είναι επιτυχής. Μετά από 30 δευτερόλεπτα, θα δείτε ένα μήνυμα στην κονσόλα που υποδεικνύει ότι η συσκευή βγαίνει από τη λειτουργία ρύθμισης. Αυτό σημαίνει ότι η λειτουργία bondable είναι πλέον απενεργοποιημένη.
- Αυξήστε την ασφάλεια κατά τη δημιουργία μιας σύνδεσης. Δεδομένου ότι η ασφάλεια είναι προαιρετική, θα πρέπει να ζητήσουμε μια κρυπτογραφημένη σύνδεση το συντομότερο δυνατό αντί να βασιζόμαστε στα χαρακτηριστικά της GATT. Το API τεκμηριώνεται εδώ. Ένα καλό μέρος για να καλέσετε αυτό το API είναι το συμβάν sl_bt_evt_connection_opened_id. Η λαβή σύνδεσης είναι διαθέσιμη στη μεταβλητή σύνδεσης.
Ασφαλής Ταυτότητα
Τώρα που έχουμε μια πιο ασφαλή συσκευή Bluetooth, ας βελτιώσουμε το βήμα ελέγχου ταυτότητας. Έχετε ήδη δει πώς να επαληθεύσετε την ασφαλή ταυτότητα των συσκευών θησαυροφυλακίου με τη γραμμή εντολών σε προηγούμενα εργαστήρια εκπαίδευσης. Σε αυτήν την ενότητα, θα δούμε πώς μια συσκευή BLE μπορεί να επαληθεύσει την ταυτότητα μιας άλλης συσκευής BLE ζητώντας την αλυσίδα πιστοποιητικών της και στέλνοντας μια πρόκληση. Όλα τα ασφαλή εξαρτήματα θησαυροφυλάκιου διαθέτουν το δικό τους πιστοποιητικό συσκευής και πιστοποιητικό παρτίδας. Τα εργοστασιακά και ριζικά πιστοποιητικά κωδικοποιούνται σκληρά στην εφαρμογή πελάτη για να ενεργοποιηθεί η επαλήθευση ολόκληρης της αλυσίδας πιστοποιητικών. Ανατρέξτε στο AN1268 για περισσότερες λεπτομέρειες σχετικά με την ασφαλή ταυτότητα.
- Ορίστε ένα καθολικό buffer για την αποθήκευση της υπογραφής βεβαίωσης συσκευής ως εξής:
- Ρυθμίστε τη διαμόρφωση του Security Manager ώστε να χρησιμοποιεί τη σύζευξη 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 που έχει αποθηκεύσει σε flash.
- Στέλνει μια τυχαία πρόκληση στον διακομιστή.
- Προσπάθειες επαλήθευσης της απάντησης στην πρόκληση.
- Κλείνει τη σύνδεση εάν αποτύχει κάποια επαλήθευση.
- Δημιουργήστε και αναβοσβήστε το έργο διακομιστή στον διακομιστή σας WSTK /radioboard.
- Εισαγάγετε το έργο πελάτη από το φάκελο πελάτη στο παρεχόμενο υλικό. Δημιουργήστε και αναβοσβήστε το έργο πελάτη στον πελάτη σας WSTK/radioboard.
- Πατήστε επαναφορά στο πρόγραμμα-πελάτη WSTK και ανοίξτε τη σειριακή κονσόλα. Ο πελάτης αρχίζει να σαρώνει για συσκευές που διαφημίζουν την υπηρεσία ασφαλούς ταυτότητάς μας και θα συνδεθεί όταν βρει.
- Ο πελάτης θα εμφανίσει ορισμένα μηνύματα για να υποδείξει ότι βρήκε τον διακομιστή με την επιθυμητή υπηρεσία και μηνύματα κατάστασης σχετικά με την επαλήθευση της αλυσίδας πιστοποιητικών.
- Εάν η επαλήθευση περάσει, ο πελάτης θα δημιουργήσει έναν τυχαίο αριθμό, που ονομάζεται πρόκληση, και θα τον στείλει στον διακομιστή. Ο διακομιστής θα υπογράψει την πρόκληση με το κλειδί της ιδιωτικής συσκευής που κρατιέται με ασφάλεια και την υπογραφή πίσω στον πελάτη, αυτό ονομάζεται απάντηση πρόκλησης. Στη συνέχεια, ο πελάτης χρησιμοποιεί το δημόσιο κλειδί στο πιστοποιητικό συσκευής που έλαβε προηγουμένως για να επαληθεύσει την υπογραφή. Αυτό γίνεται για να επιβεβαιωθεί ότι ο διακομιστής έχει πραγματικά το ιδιωτικό κλειδί που ισχυρίστηκε ότι είχε. Εάν η πρόκληση επαληθευτεί σωστά, εμφανίζεται ένα μήνυμα για το σκοπό αυτό. Διαφορετικά, η σύνδεση κλείνει και εμφανίζεται ένα μήνυμα που εξηγεί το γιατί.
- Τώρα στείλτε ένα μη έγκυρο πιστοποιητικό για να επιβεβαιώσετε ότι η επαλήθευση λειτουργεί πραγματικά. Μπορείτε να τροποποιήσετε το user_read_request_cb() για να καταστρέψετε είτε τα δεδομένα του πιστοποιητικού είτε την απόκριση πρόκλησης.
Παράρτημα Α – Δυνατότητες εισόδου/εξόδου και μέθοδοι ζεύξης 
Παράρτημα Β – Τρόποι και επίπεδα ασφαλείας
Η λειτουργία ασφαλείας 1 είναι η μόνη λειτουργία που υποστηρίζεται για Bluetooth Low Energy στη στοίβα της Silicon Labs. Τα επίπεδα είναι τα εξής:
- Επίπεδο 1 χωρίς ασφάλεια
- Επίπεδο 2 μη επαληθευμένη σύζευξη με κρυπτογράφηση
- Επίπεδο 3 πιστοποιημένη σύζευξη με κρυπτογράφηση
- Ασφαλείς συνδέσεις επιπέδου 4 με ισχυρή κρυπτογράφηση (ανταλλαγή κλειδιού ECDH)
Έγγραφα / Πόροι
![]() |
silabs 21Q2 safe συσκευή BLE Security Lab [pdf] Εγχειρίδιο χρήστη 21Q2 ασφαλής συσκευή BLE Εργαστήριο ασφαλείας, ασφαλής συσκευή BLE Εργαστήριο ασφαλείας, Εργαστήριο ασφάλειας |