Bonding (σύζευξη) στο Bluetooth Low Energy είναι η διαδικασία δημιουργίας μιας μόνιμης ασφαλούς σύνδεσης μεταξύ δύο συσκευών με αποθήκευση κρυπτογραφικών κλειδιών σε μη πτητική μνήμη. Μετά το bonding, οι συσκευές μπορούν να αποκαθιστούν αυτόματα την κρυπτογραφημένη σύνδεση κατά την επανασύνδεση χωρίς εκ νέου εισαγωγή PIN ή επιβεβαίωση από τον χρήστη. Σύμφωνα με το Bluetooth SIG Core Specification v5.4 (2025), ο μηχανισμός bonding είναι υποχρεωτικός για συσκευές που απαιτούν αυτόματη επανασύνδεση — ακουστικά, ιχνηλάτες γυμναστικής, ιατρικούς αισθητήρες και IoT αξεσουάρ.
Βασικά σημεία
Bonding — είναι η επέκταση της διαδικασίας pairing στο Bluetooth Low Energy, κατά την οποία οι συσκευές αποθηκεύουν κλειδιά κρυπτογράφησης για επόμενες συνδέσεις. Το πρότυπο BLE ορίζει τρεις λειτουργίες ασφαλείας: Security Mode 1 (κρυπτογράφηση χωρίς αυθεντικοποίηση), Security Mode 2 (υπογραφή δεδομένων χωρίς κρυπτογράφηση) και Security Mode 3 (κρυπτογράφηση με αυθεντικοποίηση). Το Bonding είναι σχετικό για λειτουργίες με κρυπτογράφηση, όπου απαιτείται πολλαπλή σύνδεση χωρίς εκ νέου συμφωνία κλειδιών.
Ο κύριος σκοπός του bonding είναι η αυτόματη αποκατάσταση της κρυπτογραφημένης σύνδεσης κατά την επανασύνδεση συσκευών. Όταν ο χρήστης βγάζει τα ακουστικά από τη θήκη και τα φοράει, το bonding εξασφαλίζει άμεση σύνδεση με το smartphone χωρίς να χρειάζεται εκ νέου επιλογή της συσκευής στο μενού Bluetooth. Σύμφωνα με το Apple Bluetooth Design Guidelines (2025), οι συζευγμένες συσκευές πρέπει να συνδέονται σε λιγότερο από 2 δευτερόλεπτα από τη στιγμή ανίχνευσης.
Κατά το bonding, κάθε συσκευή αποθηκεύει ένα σύνολο κρυπτογραφικών υλικών: Long Term Key (LTK) για κρυπτογράφηση σύνδεσης, Identity Resolving Key (IRK) για ανάλυση τυχαίων διευθύνσεων, Connection Signature Resolving Key (CSRK) για έλεγχο υπογραφών δεδομένων. Το LTK είναι το κύριο κλειδί μήκους 128 bit, που δημιουργείται κατά τη διαδικασία pairing και χρησιμοποιείται για όλες τις επόμενες κρυπτογραφημένες συνεδρίες.
| Κλειδί | Μήκος | Σκοπός |
|---|---|---|
| LTK | 128 bit | Κρυπτογράφηση δεδομένων μετά από επανασύνδεση |
| IRK | 128 bit | Ανάλυση τυχαίων ιδιωτικών διευθύνσεων (RPA) |
| CSRK | 128 bit | Υπογραφή και έλεγχος αυθεντικότητας δεδομένων |
Pairing — είναι η προσωρινή συμφωνία κλειδιών για κρυπτογράφηση της τρέχουσας συνεδρίας επικοινωνίας. Όταν η σύνδεση τερματίζεται, τα κλειδιά κρυπτογράφησης διαγράφονται και κατά την επόμενη σύνδεση απαιτείται εκ νέου διαδικασία pairing. Bonding περιλαμβάνει όλα τα στάδια του pairing, αλλά επιπλέον αποθηκεύει τα κλειδιά για επόμενες συνεδρίες. Πρακτικά όλες οι καταναλωτικές συσκευές Bluetooth (ακουστικά, ηχεία, ρολόγια) χρησιμοποιούν bonding, καθώς χωρίς αυτό κάθε σύνδεση θα απαιτούσε εκ νέου εισαγωγή PIN.
Η διαδικασία pairing σύμφωνα με την προδιαγραφή BLE αποτελείται από τρεις φάσεις. Φάση 1 — ανταλλαγή δυνατοτήτων συσκευών (IO capabilities, υποστήριξη αυθεντικοποίησης). Φάση 2 — δημιουργία και ανταλλαγή Short Term Key (STK) ή LTK, ανάλογα με τη μέθοδο σύζευξης. Φάση 3 — μεταφορά κλειδιών: ανταλλαγή LTK, IRK, CSRK μεταξύ συσκευών. Εάν οι συσκευές αποθήκευσαν τα κλειδιά μετά τη Φάση 3 — πρόκειται για bonding. Εάν όχι — πρόκειται απλώς για pairing.
| Παράμετρος | Pairing | Bonding |
|---|---|---|
| Αποθήκευση κλειδιών | Δεν αποθηκεύονται | Αποθηκεύονται σε NVRAM |
| Αυτόματη σύνδεση | Όχι | Ναι |
| Εκ νέου εισαγωγή PIN | Απαιτείται | Δεν απαιτείται |
| Χρήση | Περιστασιακές συνδέσεις | Μόνιμες συσκευές |
Η διαδικασία bonding ξεκινά μετά την επιτυχή ολοκλήρωση του pairing, όταν μία από τις συσκευές στέλνει αίτημα αποθήκευσης κλειδιών. Στο BLE, το Central (συνήθως smartphone) και το Peripheral (φορητή συσκευή) ανταλλάσσουν κλειδιά μέσω ασφαλούς καναλιού που δημιουργήθηκε στη Φάση 2. Μετά την επιτυχή ανταλλαγή κλειδιών, κάθε συσκευή τα αποθηκεύει σε μη πτητική μνήμη μαζί με τη MAC διεύθυνση ή τη διεύθυνση ταυτότητας του συνεργάτη.
Στην πλευρά Central (iOS/Android), τα κλειδιά αποθηκεύονται στο σύστημα αποθήκευσης Bluetooth. Το iOS χρησιμοποιεί τη στοίβα Core Bluetooth με αυτόματη διαχείριση bonding: κατά την πρώτη σύζευξη, τα κλειδιά αποθηκεύονται στην NVRAM της συσκευής και οι επόμενες συνδέσεις στο ίδιο Peripheral γίνονται αυτόματα. Ο προγραμματιστής δεν διαχειρίζεται τα κλειδιά άμεσα — η στοίβα Core Bluetooth χειρίζεται το bonding αυτόματα κατά τη δημιουργία σύνδεσης με μια συσκευή που υποστηρίζει αποθήκευση κλειδιών.
Κατά την επανασύνδεση, το Peripheral στέλνει διαφημιστικά πακέτα που περιέχουν είτε τη δημόσια διεύθυνσή του είτε μια Resolvable Private Address (RPA). Το Central λαμβάνει το πακέτο, αντιστοιχίζει τη διεύθυνση με αποθηκευμένες συζευγμένες συσκευές και, αν βρει ταύτιση, ξεκινά αποκατάσταση συνεδρίας χρησιμοποιώντας το αποθηκευμένο LTK. Εάν το LTK ταιριάζει — η κρυπτογραφημένη σύνδεση δημιουργείται χωρίς εκ νέου pairing.
Η προδιαγραφή BLE ορίζει διάφορες μεθόδους αυθεντικοποίησης που επηρεάζουν το επίπεδο ασφάλειας του bonding. Η επιλογή μεθόδου εξαρτάται από τις IO capabilities των συσκευών — ύπαρξη οθόνης, πληκτρολογίου, δυνατότητα επιβεβαίωσης αριθμητικής σύγκρισης. Ασφαλές bonding απαιτεί τη χρήση μεθόδου τουλάχιστον Just Works για μη κρίσιμες εφαρμογές και Numeric Comparison ή Passkey Entry για εργασίες που απαιτούν προστασία από επιθέσεις Man-in-the-Middle.
Just Works — μέθοδος χωρίς αυθεντικοποίηση, που χρησιμοποιείται όταν μία από τις συσκευές δεν έχει οθόνη ή πληκτρολόγιο. Τα κλειδιά κρυπτογράφησης μεταφέρονται χωρίς έλεγχο ταυτότητας της δεύτερης συσκευής — θερμοκρασία, παλμογράφος). Το Just Works είναι ευάλωτο σε επιθέσεις MITM, επομένως εφαρμόζεται μόνο σε συσκευές όπου η παραβίαση δεδομένων δεν αποτελεί απειλή.
Numeric Comparison — μέθοδος αυθεντικοποίησης κατά την οποία και οι δύο συσκευές εμφανίζουν ένα εξαψήφιο αριθμό και ο χρήστης πρέπει να επιβεβαιώσει την ταύτιση. Αυτή η μέθοδος παρέχει προστασία από επιθέσεις MITM και συνιστάται για συσκευές με οθόνη — smart ρολόγια, ιχνηλάτες γυμναστικής, τηλεχειριστήρια. Μετά την επιβεβαίωση, το bonding αποθηκεύεται με το μέγιστο επίπεδο εμπιστοσύνης.
Passkey Entry απαιτεί εισαγωγή εξαψήφιου PIN σε μία από τις συσκευές. Συνήθως ο κωδικός δημιουργείται από μία συσκευή και εμφανίζεται σε αυτήν, ενώ ο χρήστης τον εισάγει στη δεύτερη. Η μέθοδος εφαρμόζεται για ιατρικές συσκευές και IoT κλειδαριές, όπου απαιτείται υψηλό επίπεδο ασφάλειας αλλά μία από τις συσκευές δεν έχει οθόνη για Numeric Comparison.
Διαχείριση bonding — είναι η διαδικασία προβολής, διαγραφής και συντήρησης αποθηκευμένων κλειδιών συζευγμένων συσκευών. Στην ανάπτυξη κινητών εφαρμογών είναι σημαντικό να χειρίζεστε σωστά τις καταστάσεις συζευγμένων συσκευών, ειδικά κατά την επαναφορά εργοστασιακών ρυθμίσεων της περιφερειακής συσκευής ή αντικατάσταση του firmware της. Κατά την αλλαγή κλειδιών bonding στο Peripheral, είναι απαραίτητο να διαγράψετε τα παλιά κλειδιά στο Central και να εκτελέσετε εκ νέου σύζευξη.
Το iOS διαχειρίζεται αυτόματα τις συζευγμένες συσκευές μέσω της στοίβας συστήματος Core Bluetooth. Ο προγραμματιστής δεν έχει άμεσο API για προβολή ή διαγραφή μεμονωμένων συζευγμένων συσκευών — η διαχείριση γίνεται μέσω των ρυθμίσεων συστήματος (Settings > Bluetooth > συσκευή > Forget). Εάν είναι απαραίτητος ο προγραμματιστικός καθαρισμός του bonding, η εφαρμογή μπορεί να στείλει τον χρήστη στις ρυθμίσεις Bluetooth συστήματος χρησιμοποιώντας το UIApplication.openSettingsURLString.
Το Android παρέχει άμεσο API για εργασία με συζευγμένες συσκευές μέσω της κλάσης BluetoothAdapter. Η μέθοδος getBondedDevices() επιστρέφει Set<BluetoothDevice> όλων των συζευγμένων συσκευών. Για διαγραφή bonding χρησιμοποιείται η μέθοδος removeBond() μέσω αντανάκλασης ή από Android 12+ το επίσημο API BluetoothDevice.removeBond().
val adapter = BluetoothAdapter.getDefaultAdapter()
val bondedDevices: Set<BluetoothDevice> = adapter.getBondedDevices()
bondedDevices.forEach { device ->
Log.d("Bonding", "Bonded device: ${device.name}, ${device.address}")
}
Υλοποίηση bonding στην πλευρά Android απαιτεί σωστό χειρισμό του BroadcastReceiver για συμβάντα BluetoothDevice.ACTION_BOND_STATE_CHANGED. Κατά την πρώτη σύνδεση με μια συσκευή, το σύστημα Android ξεκινά αυτόματα το bonding εάν η συσκευή υποστηρίζει αυτή τη δυνατότητα. Ο προγραμματιστής πρέπει να χειρίζεται τρεις καταστάσεις: BOND_NONE (μη συζευγμένο), BOND_BONDING (διαδικασία σύζευξης), BOND_BONDED (συζευγμένο).
val bondReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
val bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1)
when (bondState) {
BluetoothDevice.BOND_BONDED -> Log.d("Bonding", "Bonded: ${device.name}")
BluetoothDevice.BOND_NONE -> Log.d("Bonding", "Η σύνδεση αφαιρέθηκε")
}
}
}
Για την εκκίνηση του bonding σε Android, είναι απαραίτητη η κλήση της μεθόδου createBond() στο αντικείμενο BluetoothDevice. Η μέθοδος επιστρέφει boolean — true εάν η διαδικασία σύζευξης ξεκίνησε επιτυχώς. Από το Android 12, η createBond() απαιτεί άδεια BLUETOOTH_CONNECT και μπορεί να απορριφθεί από το σύστημα εάν η εφαρμογή δεν έχει πρόσβαση Bluetooth στο παρασκήνιο.
fun initiateBonding(device: BluetoothDevice) {
if (device.bondState == BluetoothDevice.BOND_NONE) {
val success = device.createBond()
if (success) {
Toast.makeText(context, "Εκκίνηση bonding", Toast.LENGTH_SHORT)
}
}
}
Οι προγραμματιστές κινητών εφαρμογών συχνά αντιμετωπίζουν συνηθισμένα λάθη κατά την εργασία με bonding συσκευών BLE. Ο εσφαλμένος χειρισμός καταστάσεων bonding μπορεί να οδηγήσει σε αποτυχίες σύνδεσης, αδυναμία εκ νέου σύζευξης ή απώλεια δεδομένων. Ας εξετάσουμε τα πιο συνηθισμένα προβλήματα και τις λύσεις τους.
Μετά την ενημέρωση firmware της BLE συσκευής, τα κλειδιά bonding μπορεί να επαναφερθούν, αλλά το smartphone συνεχίζει να αποθηκεύει παλιά κλειδιά (stale bonding). Κατά την προσπάθεια σύνδεσης, το Central επιχειρεί να αποκαταστήσει τη συνεδρία με το παλιό LTK, το Peripheral απορρίπτει το κλειδί και η σύνδεση δεν δημιουργείται. Λύση — διαγραφή bonding στο smartphone μέσω Settings > Bluetooth > Forget Device και εκ νέου σύζευξη.
Τα BLE τσιπ έχουν περιορισμό στον αριθμό αποθηκευμένων εγγραφών bonding. Για δημοφιλή τσιπ Nordic nRF5x, το όριο είναι 8-20 εγγραφές ανάλογα με τη διαμόρφωση. Κατά την υπέρβαση του ορίου, η συσκευή σταματά να δέχεται νέες συζεύξεις. Λύση — διαγραφή μη χρησιμοποιούμενων εγγραφών bonding ή χρήση συστήματος κλειδιών με προτεραιότητα εκκαθάρισης.
Κατά τη χρήση Privacy Feature (τυχαίες MAC διευθύνσεις), η συσκευή αλλάζει περιοδικά τη διεύθυνσή της. Εάν το Central δεν αποθήκευσε το IRK, δεν μπορεί να αντιστοιχίσει τη νέα τυχαία διεύθυνση με γνωστή συσκευή. Λύση — σωστή υλοποίηση αποθήκευσης IRK και χρήση του για ανάλυση RPA σε κάθε ανίχνευση συσκευής.
Συχνές ερωτήσεις
Bonding στο Bluetooth Low Energy — είναι η διαδικασία αποθήκευσης κλειδιών κρυπτογράφησης (LTK, IRK, CSRK) μετά την ολοκλήρωση της συνεδρίας pairing για αυτόματη αποκατάσταση της ασφαλούς σύνδεσης σε επόμενες συνδέσεις χωρίς εκ νέου εισαγωγή PIN ή επιβεβαίωση.
Pairing — είναι η προσωρινή συμφωνία κλειδιών για την τρέχουσα συνεδρία, τα οποία διαγράφονται κατά τη διακοπή της σύνδεσης. Bonding περιλαμβάνει την πλήρη διαδικασία pairing συν την αποθήκευση κλειδιών για μελλοντικές συνδέσεις. Το Bonding απαιτείται για συσκευές που επανασυνδέονται αυτόματα — ακουστικά, ρολόγια, ιχνηλάτες γυμναστικής.
Σε iPhone, η διαγραφή bonding γίνεται μέσω των ρυθμίσεων συστήματος: Settings > Bluetooth > πατήστε το εικονίδιο πληροφοριών (i) δίπλα στη συσκευή > επιλέξτε Forget This Device. Μετά από αυτό, τα κλειδιά κρυπτογράφησης διαγράφονται και κατά την επόμενη σύνδεση θα απαιτηθεί εκ νέου σύζευξη.
Ο αριθμός συζευγμένων συσκευών εξαρτάται από το μέγεθος της μη πτητικής μνήμης του BLE τσιπ. Τα smartphones μπορούν να αποθηκεύσουν εκατοντάδες εγγραφές, ενώ οι οικονομικές BLE περιφερειακές συσκευές περιορίζονται σε 8-20 εγγραφές. Κατά την υπέρβαση του ορίου, οι παλιές εγγραφές αντικαθίστανται ή η συσκευή σταματά να δέχεται νέες συζεύξεις.
Stale bonding — κατάσταση όταν τα κλειδιά κρυπτογράφησης σε μία συσκευή (συνήθως Peripheral) έχουν επαναφερθεί (π.χ. κατά την επαναφορά firmware), ενώ στο Central παραμένουν παλιά κλειδιά. Ως αποτέλεσμα, η σύνδεση δεν δημιουργείται μέχρι ο χρήστης να διαγράψει το stale bonding μέσω των ρυθμίσεων Bluetooth και να εκτελέσει εκ νέου σύζευξη.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης