29 KiB
Κρατήστε το φυτό σας ασφαλές
Σκίτσο από τη Nitya Narasimhan. Κάντε κλικ στην εικόνα για μεγαλύτερη έκδοση.
Ερωτηματολόγιο πριν το μάθημα
Εισαγωγή
Στα τελευταία μαθήματα δημιουργήσατε μια συσκευή IoT για παρακολούθηση του εδάφους και τη συνδέσατε στο cloud. Αλλά τι θα γινόταν αν χάκερ που εργάζονται για έναν ανταγωνιστή αγρότη κατάφερναν να πάρουν τον έλεγχο των συσκευών σας IoT; Τι θα γινόταν αν έστελναν υψηλές μετρήσεις υγρασίας εδάφους ώστε τα φυτά σας να μην ποτίζονται ποτέ, ή αν ενεργοποιούσαν το σύστημα ποτίσματος συνεχώς, καταστρέφοντας τα φυτά σας από υπερβολικό πότισμα και σας κόστιζαν μια μικρή περιουσία σε νερό;
Σε αυτό το μάθημα θα μάθετε πώς να ασφαλίζετε τις συσκευές IoT. Επειδή αυτό είναι το τελευταίο μάθημα για αυτό το έργο, θα μάθετε επίσης πώς να καθαρίζετε τους πόρους του cloud, μειώνοντας τυχόν πιθανά κόστη.
Σε αυτό το μάθημα θα καλύψουμε:
- Γιατί χρειάζεται να ασφαλίσετε τις συσκευές IoT;
- Κρυπτογραφία
- Ασφαλίστε τις συσκευές IoT σας
- Δημιουργία και χρήση πιστοποιητικού X.509
🗑 Αυτό είναι το τελευταίο μάθημα αυτού του έργου, οπότε μετά την ολοκλήρωση του μαθήματος και της εργασίας, μην ξεχάσετε να καθαρίσετε τις υπηρεσίες cloud σας. Θα χρειαστείτε τις υπηρεσίες για να ολοκληρώσετε την εργασία, οπότε βεβαιωθείτε ότι την ολοκληρώσατε πρώτα.
Ανατρέξτε στον οδηγό καθαρισμού του έργου σας εάν χρειάζεστε οδηγίες για το πώς να το κάνετε.
Γιατί χρειάζεται να ασφαλίσετε τις συσκευές IoT;
Η ασφάλεια IoT περιλαμβάνει τη διασφάλιση ότι μόνο οι αναμενόμενες συσκευές μπορούν να συνδεθούν στην υπηρεσία IoT του cloud σας και να στείλουν τηλεμετρία, και ότι μόνο η υπηρεσία cloud σας μπορεί να στείλει εντολές στις συσκευές σας. Τα δεδομένα IoT μπορεί επίσης να είναι προσωπικά, όπως ιατρικά ή ευαίσθητα δεδομένα, οπότε ολόκληρη η εφαρμογή σας πρέπει να λαμβάνει υπόψη την ασφάλεια για να αποτρέψει τη διαρροή αυτών των δεδομένων.
Αν η εφαρμογή IoT σας δεν είναι ασφαλής, υπάρχουν αρκετοί κίνδυνοι:
- Μια ψεύτικη συσκευή θα μπορούσε να στείλει λανθασμένα δεδομένα, προκαλώντας την εφαρμογή σας να αντιδράσει λανθασμένα. Για παράδειγμα, θα μπορούσαν να στείλουν συνεχώς υψηλές μετρήσεις υγρασίας εδάφους, ώστε το σύστημα άρδευσης να μην ενεργοποιείται ποτέ και τα φυτά σας να πεθαίνουν από έλλειψη νερού.
- Μη εξουσιοδοτημένοι χρήστες θα μπορούσαν να διαβάσουν δεδομένα από συσκευές IoT, συμπεριλαμβανομένων προσωπικών ή κρίσιμων για την επιχείρηση δεδομένων.
- Χάκερ θα μπορούσαν να στείλουν εντολές για να ελέγξουν μια συσκευή με τρόπο που θα μπορούσε να προκαλέσει ζημιά στη συσκευή ή στο συνδεδεμένο υλικό.
- Συνδεόμενοι σε μια συσκευή IoT, οι χάκερ θα μπορούσαν να χρησιμοποιήσουν αυτή τη σύνδεση για να αποκτήσουν πρόσβαση σε επιπλέον δίκτυα και να εισέλθουν σε ιδιωτικά συστήματα.
- Κακόβουλοι χρήστες θα μπορούσαν να αποκτήσουν πρόσβαση σε προσωπικά δεδομένα και να τα χρησιμοποιήσουν για εκβιασμό.
Αυτά είναι σενάρια πραγματικού κόσμου και συμβαίνουν συνεχώς. Μερικά παραδείγματα δόθηκαν σε προηγούμενα μαθήματα, αλλά εδώ είναι μερικά ακόμα:
- Το 2018, χάκερ χρησιμοποίησαν ένα ανοιχτό σημείο πρόσβασης WiFi σε ένα θερμοστάτη ενυδρείου για να αποκτήσουν πρόσβαση στο δίκτυο ενός καζίνο και να κλέψουν δεδομένα. The Hacker News - Casino Gets Hacked Through Its Internet-Connected Fish Tank Thermometer
- Το 2016, το Mirai Botnet εξαπέλυσε μια επίθεση άρνησης υπηρεσίας (DDoS) εναντίον της Dyn, ενός παρόχου υπηρεσιών Internet, καταρρίπτοντας μεγάλα τμήματα του Internet. Αυτό το botnet χρησιμοποίησε κακόβουλο λογισμικό για να συνδεθεί σε συσκευές IoT όπως DVRs και κάμερες που χρησιμοποιούσαν προεπιλεγμένα ονόματα χρήστη και κωδικούς πρόσβασης, και από εκεί εξαπέλυσε την επίθεση. The Guardian - DDoS attack that disrupted internet was largest of its kind in history, experts say
- Η Spiral Toys είχε μια βάση δεδομένων χρηστών των συνδεδεμένων παιχνιδιών CloudPets διαθέσιμη δημόσια στο Internet. Troy Hunt - Data from connected CloudPets teddy bears leaked and ransomed, exposing kids' voice messages.
- Η Strava σημείωνε δρομείς που περνούσατε και έδειχνε τις διαδρομές τους, επιτρέποντας σε αγνώστους να δουν ουσιαστικά πού ζείτε. Kim Komndo - Fitness app could lead a stranger right to your home — change this setting.
✅ Κάντε μια έρευνα: Αναζητήστε περισσότερα παραδείγματα επιθέσεων και παραβιάσεων δεδομένων IoT, ειδικά με προσωπικά αντικείμενα όπως οδοντόβουρτσες ή ζυγαριές συνδεδεμένες στο Internet. Σκεφτείτε τον αντίκτυπο που θα μπορούσαν να έχουν αυτές οι επιθέσεις στα θύματα ή στους πελάτες.
💁 Η ασφάλεια είναι ένα τεράστιο θέμα, και αυτό το μάθημα θα αγγίξει μόνο μερικά από τα βασικά γύρω από τη σύνδεση της συσκευής σας στο cloud. Άλλα θέματα που δεν θα καλυφθούν περιλαμβάνουν την παρακολούθηση αλλαγών δεδομένων κατά τη μεταφορά, την άμεση παραβίαση συσκευών ή τις αλλαγές στις διαμορφώσεις συσκευών. Η παραβίαση συσκευών IoT είναι τόσο μεγάλη απειλή που έχουν αναπτυχθεί εργαλεία όπως το Azure Defender for IoT. Αυτά τα εργαλεία είναι παρόμοια με τα εργαλεία αντι-ιών και ασφάλειας που μπορεί να έχετε στον υπολογιστή σας, απλώς σχεδιασμένα για μικρές, χαμηλής ισχύος συσκευές IoT.
Κρυπτογραφία
Όταν μια συσκευή συνδέεται σε μια υπηρεσία IoT, χρησιμοποιεί ένα ID για να ταυτοποιηθεί. Το πρόβλημα είναι ότι αυτό το ID μπορεί να αντιγραφεί - ένας χάκερ θα μπορούσε να δημιουργήσει μια κακόβουλη συσκευή που χρησιμοποιεί το ίδιο ID με μια πραγματική συσκευή αλλά στέλνει ψευδή δεδομένα.
Η λύση σε αυτό είναι να μετατραπούν τα δεδομένα που αποστέλλονται σε μια κωδικοποιημένη μορφή, χρησιμοποιώντας μια τιμή γνωστή μόνο στη συσκευή και το cloud για την κωδικοποίηση των δεδομένων. Αυτή η διαδικασία ονομάζεται κρυπτογράφηση, και η τιμή που χρησιμοποιείται για την κρυπτογράφηση των δεδομένων ονομάζεται κλειδί κρυπτογράφησης.
Η υπηρεσία cloud μπορεί στη συνέχεια να μετατρέψει τα δεδομένα πίσω σε αναγνώσιμη μορφή, χρησιμοποιώντας μια διαδικασία που ονομάζεται αποκρυπτογράφηση, είτε με το ίδιο κλειδί κρυπτογράφησης είτε με ένα κλειδί αποκρυπτογράφησης. Αν το κρυπτογραφημένο μήνυμα δεν μπορεί να αποκρυπτογραφηθεί με το κλειδί, η συσκευή έχει παραβιαστεί και το μήνυμα απορρίπτεται.
Η τεχνική για την κρυπτογράφηση και την αποκρυπτογράφηση ονομάζεται κρυπτογραφία. 💁 Εξαιτίας του χρόνου λήξης, η συσκευή IoT σας πρέπει να γνωρίζει την ακριβή ώρα, η οποία συνήθως λαμβάνεται από έναν διακομιστή NTP. Εάν η ώρα δεν είναι ακριβής, η σύνδεση θα αποτύχει. Μετά τη σύνδεση, όλα τα δεδομένα που αποστέλλονται στο IoT Hub από τη συσκευή ή από το IoT Hub στη συσκευή θα κρυπτογραφούνται με το κοινόχρηστο κλειδί πρόσβασης.
✅ Τι πιστεύετε ότι θα συμβεί αν πολλές συσκευές μοιράζονται το ίδιο connection string;
💁 Είναι κακή πρακτική ασφαλείας να αποθηκεύετε αυτό το κλειδί στον κώδικα. Αν ένας χάκερ αποκτήσει τον πηγαίο κώδικά σας, μπορεί να αποκτήσει το κλειδί σας. Επίσης, είναι πιο δύσκολο κατά την κυκλοφορία του κώδικα, καθώς θα πρέπει να κάνετε επανασυμπίεση με ένα ενημερωμένο κλειδί για κάθε συσκευή. Είναι καλύτερο να φορτώνετε αυτό το κλειδί από ένα hardware security module - ένα τσιπ στη συσκευή IoT που αποθηκεύει κρυπτογραφημένες τιμές που μπορούν να διαβαστούν από τον κώδικά σας.
Όταν μαθαίνετε IoT, είναι συχνά πιο εύκολο να βάλετε το κλειδί στον κώδικα, όπως κάνατε σε προηγούμενο μάθημα, αλλά πρέπει να διασφαλίσετε ότι αυτό το κλειδί δεν θα ελεγχθεί σε δημόσιο έλεγχο πηγαίου κώδικα.
Οι συσκευές έχουν 2 κλειδιά και 2 αντίστοιχα connection strings. Αυτό σας επιτρέπει να περιστρέφετε τα κλειδιά - δηλαδή να αλλάζετε από το ένα κλειδί στο άλλο αν το πρώτο παραβιαστεί, και να αναδημιουργείτε το πρώτο κλειδί.
Πιστοποιητικά X.509
Όταν χρησιμοποιείτε ασύμμετρη κρυπτογράφηση με ένα ζεύγος δημόσιου/ιδιωτικού κλειδιού, πρέπει να παρέχετε το δημόσιο κλειδί σας σε οποιονδήποτε θέλει να σας στείλει δεδομένα. Το πρόβλημα είναι, πώς μπορεί ο παραλήπτης του κλειδιού σας να είναι σίγουρος ότι είναι πραγματικά το δημόσιο κλειδί σας και όχι κάποιου άλλου που προσποιείται ότι είστε εσείς; Αντί να παρέχετε ένα κλειδί, μπορείτε να παρέχετε το δημόσιο κλειδί σας μέσα σε ένα πιστοποιητικό που έχει επαληθευτεί από έναν αξιόπιστο τρίτο, που ονομάζεται πιστοποιητικό X.509.
Τα πιστοποιητικά X.509 είναι ψηφιακά έγγραφα που περιέχουν το δημόσιο κλειδί του ζεύγους δημόσιου/ιδιωτικού κλειδιού. Συνήθως εκδίδονται από έναν αριθμό αξιόπιστων οργανισμών που ονομάζονται Αρχές Πιστοποίησης (CAs) και υπογράφονται ψηφιακά από την CA για να υποδειχθεί ότι το κλειδί είναι έγκυρο και προέρχεται από εσάς. Εμπιστεύεστε το πιστοποιητικό και ότι το δημόσιο κλειδί είναι από αυτόν που λέει το πιστοποιητικό, επειδή εμπιστεύεστε την CA, όπως θα εμπιστευόσασταν ένα διαβατήριο ή δίπλωμα οδήγησης επειδή εμπιστεύεστε τη χώρα που το εκδίδει. Τα πιστοποιητικά κοστίζουν χρήματα, οπότε μπορείτε επίσης να "υπογράψετε μόνοι σας", δηλαδή να δημιουργήσετε ένα πιστοποιητικό μόνοι σας που υπογράφεται από εσάς, για δοκιμαστικούς σκοπούς.
💁 Δεν πρέπει ποτέ να χρησιμοποιείτε ένα αυτο-υπογεγραμμένο πιστοποιητικό για παραγωγική κυκλοφορία.
Αυτά τα πιστοποιητικά περιέχουν διάφορα πεδία, όπως από ποιον είναι το δημόσιο κλειδί, τα στοιχεία της CA που το εξέδωσε, για πόσο καιρό είναι έγκυρο και το ίδιο το δημόσιο κλειδί. Πριν χρησιμοποιήσετε ένα πιστοποιητικό, είναι καλή πρακτική να το επαληθεύσετε ελέγχοντας ότι υπογράφηκε από την αρχική CA.
✅ Μπορείτε να διαβάσετε μια πλήρη λίστα των πεδίων του πιστοποιητικού στο Microsoft Understanding X.509 Public Key Certificates tutorial
Όταν χρησιμοποιείτε πιστοποιητικά X.509, τόσο ο αποστολέας όσο και ο παραλήπτης θα έχουν τα δικά τους δημόσια και ιδιωτικά κλειδιά, καθώς και πιστοποιητικά X.509 που περιέχουν το δημόσιο κλειδί. Στη συνέχεια, ανταλλάσσουν πιστοποιητικά X.509 με κάποιον τρόπο, χρησιμοποιώντας τα δημόσια κλειδιά του άλλου για να κρυπτογραφήσουν τα δεδομένα που στέλνουν και το δικό τους ιδιωτικό κλειδί για να αποκρυπτογραφήσουν τα δεδομένα που λαμβάνουν.
Ένα μεγάλο πλεονέκτημα της χρήσης πιστοποιητικών X.509 είναι ότι μπορούν να μοιραστούν μεταξύ συσκευών. Μπορείτε να δημιουργήσετε ένα πιστοποιητικό, να το ανεβάσετε στο IoT Hub και να το χρησιμοποιήσετε για όλες τις συσκευές σας. Κάθε συσκευή χρειάζεται μόνο να γνωρίζει το ιδιωτικό κλειδί για να αποκρυπτογραφήσει τα μηνύματα που λαμβάνει από το IoT Hub.
Το πιστοποιητικό που χρησιμοποιείται από τη συσκευή σας για να κρυπτογραφήσει μηνύματα που στέλνει στο IoT Hub δημοσιεύεται από τη Microsoft. Είναι το ίδιο πιστοποιητικό που χρησιμοποιούν πολλές υπηρεσίες Azure και μερικές φορές είναι ενσωματωμένο στα SDKs.
💁 Θυμηθείτε, ένα δημόσιο κλειδί είναι ακριβώς αυτό - δημόσιο. Το δημόσιο κλειδί του Azure μπορεί να χρησιμοποιηθεί μόνο για να κρυπτογραφήσει δεδομένα που αποστέλλονται στο Azure, όχι για να τα αποκρυπτογραφήσει, οπότε μπορεί να κοινοποιηθεί παντού, συμπεριλαμβανομένου του πηγαίου κώδικα. Για παράδειγμα, μπορείτε να το δείτε στον πηγαίο κώδικα του Azure IoT C SDK.
✅ Υπάρχει πολύ ορολογία με τα πιστοποιητικά X.509. Μπορείτε να διαβάσετε τους ορισμούς ορισμένων από τους όρους που μπορεί να συναντήσετε στον Οδηγό για την ορολογία των πιστοποιητικών X.509
Δημιουργία και χρήση πιστοποιητικού X.509
Τα βήματα για τη δημιουργία ενός πιστοποιητικού X.509 είναι:
-
Δημιουργήστε ένα ζεύγος δημόσιου/ιδιωτικού κλειδιού. Ένας από τους πιο ευρέως χρησιμοποιούμενους αλγόριθμους για τη δημιουργία ενός ζεύγους δημόσιου/ιδιωτικού κλειδιού ονομάζεται Rivest–Shamir–Adleman(RSA).
-
Υποβάλετε το δημόσιο κλειδί με τα σχετικά δεδομένα για υπογραφή, είτε από μια CA είτε με αυτο-υπογραφή.
Το Azure CLI έχει εντολές για τη δημιουργία μιας νέας ταυτότητας συσκευής στο IoT Hub και τη δημιουργία αυτόματα του ζεύγους δημόσιου/ιδιωτικού κλειδιού και ενός αυτο-υπογεγραμμένου πιστοποιητικού.
💁 Αν θέλετε να δείτε τα βήματα με λεπτομέρεια, αντί να χρησιμοποιήσετε το Azure CLI, μπορείτε να τα βρείτε στο Using OpenSSL to create self-signed certificates tutorial in the Microsoft IoT Hub documentation
Εργασία - δημιουργία ταυτότητας συσκευής χρησιμοποιώντας πιστοποιητικό X.509
-
Εκτελέστε την παρακάτω εντολή για να καταχωρίσετε τη νέα ταυτότητα συσκευής, δημιουργώντας αυτόματα τα κλειδιά και τα πιστοποιητικά:
az iot hub device-identity create --device-id soil-moisture-sensor-x509 \ --am x509_thumbprint \ --output-dir . \ --hub-name <hub_name>
Αντικαταστήστε το
<hub_name>
με το όνομα που χρησιμοποιήσατε για το IoT Hub.Αυτό θα δημιουργήσει μια συσκευή με ID
soil-moisture-sensor-x509
για να διακρίνεται από την ταυτότητα συσκευής που δημιουργήσατε στο προηγούμενο μάθημα. Αυτή η εντολή θα δημιουργήσει επίσης 2 αρχεία στον τρέχοντα κατάλογο:soil-moisture-sensor-x509-key.pem
- αυτό το αρχείο περιέχει το ιδιωτικό κλειδί για τη συσκευή.soil-moisture-sensor-x509-cert.pem
- αυτό είναι το αρχείο πιστοποιητικού X.509 για τη συσκευή.
Κρατήστε αυτά τα αρχεία ασφαλή! Το αρχείο ιδιωτικού κλειδιού δεν πρέπει να ελεγχθεί σε δημόσιο έλεγχο πηγαίου κώδικα.
Εργασία - χρήση του πιστοποιητικού X.509 στον κώδικα της συσκευής σας
Ακολουθήστε τον σχετικό οδηγό για να συνδέσετε τη συσκευή IoT σας στο cloud χρησιμοποιώντας το πιστοποιητικό X.509:
🚀 Πρόκληση
Υπάρχουν πολλοί τρόποι για να δημιουργήσετε, να διαχειριστείτε και να διαγράψετε υπηρεσίες Azure, όπως Resource Groups και IoT Hubs. Ένας τρόπος είναι το Azure Portal - μια διεπαφή ιστού που σας παρέχει ένα GUI για τη διαχείριση των υπηρεσιών Azure.
Μεταβείτε στο portal.azure.com και εξερευνήστε το portal. Δείτε αν μπορείτε να δημιουργήσετε ένα IoT Hub χρησιμοποιώντας το portal και στη συνέχεια να το διαγράψετε.
Υπόδειξη - όταν δημιουργείτε υπηρεσίες μέσω του portal, δεν χρειάζεται να δημιουργήσετε ένα Resource Group εκ των προτέρων, μπορεί να δημιουργηθεί κατά τη δημιουργία της υπηρεσίας. Βεβαιωθείτε ότι το διαγράφετε όταν τελειώσετε!
Μπορείτε να βρείτε άφθονη τεκμηρίωση, tutorials και οδηγούς για το Azure Portal στη τεκμηρίωση του Azure Portal.
Κουίζ μετά το μάθημα
Ανασκόπηση & Αυτομελέτη
- Διαβάστε για την ιστορία της κρυπτογραφίας στη σελίδα Ιστορία της κρυπτογραφίας στη Wikipedia.
- Διαβάστε για τα πιστοποιητικά X.509 στη σελίδα X.509 στη Wikipedia.
Εργασία
Δημιουργήστε μια νέα συσκευή IoT
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.