Έξυπνη κάρτα PIV.
Δείτε το παρακάτω βίντεο για λεπτομέρειες σχετικά με το πώς χρησιμοποιήσετε το YubiKey για έλεγχο ταυτότητας στο Safari και σε πολλές άλλες εφαρμογές στο iOS με έλεγχο ταυτότητας που βασίζεται σε πιστοποιητικό που υποστηρίζεται από την εφαρμογή Έξυπνης κάρτας PIV σε ένα YubiKey.
Ένα βασικό χαρακτηριστικό που δεν έχουμε καλύψει ακόμα είναι ο τρόπος με τον οποίο εφαρμόσαμε την επέκταση CryptoTokenKit που απαιτείται για αυτήν τη λειτουργικότητα. Η αναζήτηση στο Διαδίκτυο δίνει πολύ λίγες ενδείξεις και η τεκμηρίωση που καλύπτει το Apples CTK είναι αρκετά λιτή. Η ίδια η επέκταση CTK έχει ορισμένους περιορισμούς που καθιστούν δύσκολη την παροχή μιας καλής εμπειρίας χρήστη, όπως:
1. Το παράθυρο διαλόγου εισαγωγής PIN. Δεν θα εμφανίσει κανένα μήνυμα σφάλματος εάν ο χρήστης πληκτρολογήσει λάθος κωδικό PIN – απλώς θα εμφανίσει ξανά το παράθυρο διαλόγου εισαγωγής PIN.
2. Έλλειψη υποστήριξης NFC στην ίδια την επέκταση CTK. Αυτό είναι κρίσιμο, καθώς θέλουμε να υποστηρίξουμε τόσο τα YubiKeys με υποδοχή Lightning, όσο και τα κλειδιά με δυνατότητα NFC.
Τι είναι μια επέκταση iOS;.
Οι επεκτάσεις είναι ενσωματωμένες στην κύρια εφαρμογή και στο Xcode διαμορφώνονται ως ξεχωριστοί στόχοι. Η επέκταση και η κύρια εφαρμογή εκτελούνται ως ξεχωριστές διεργασίες και δεν μοιράζονται καμία μνήμη. Μπορούν, ωστόσο, να έχουν πρόσβαση σε κοινόχρηστους πόρους, όπως αρχεία και Ομάδες πρόσβασης Keychain.
Πώς λειτουργεί η επέκταση CryptoTokenKit;
Στην δική μας περίπτωση, η επέκταση CTK θα λάβει ένα αίτημα για υπογραφή ενός τμήματος δεδομένων. Η μέθοδος εκπροσώπησης στην επέκταση παρέχει το δημόσιο τμήμα του πιστοποιητικού πελάτη που θα χρησιμοποιηθεί. Στη συνέχεια, εναπόκειται στην επέκταση να καταλάβει ποιο ιδιωτικό κλειδί θα χρησιμοποιήσει, να υπογράψει τα δεδομένα και να δώσει πίσω την υπογραφή. Το iOS παρακολουθεί τη σύνδεση των πιστοποιητικών πελατών με εφαρμογές και τις ενσωματωμένες επεκτάσεις CTK τους.
Δεδομένου ότι το NFC δεν είναι διαθέσιμο στην επέκταση CTK, ο μόνος τρόπος επικοινωνίας με ένα NFC YubiKey είναι μέσω της κύριας εφαρμογής που μας δίνει τον πλήρη έλεγχο της διεπαφής χρήστη για να εμφανίζουμε τα μηνύματα σφάλματος με τον σωστό τρόπο. Αυτό δείχνει μια λύση όπου η επικοινωνία NFC και Lightning με το YubiKey διαχειρίζεται η κύρια εφαρμογή.
- Άνοιγμα της κύριας εφαρμογής από την επέκταση. Η επέκταση CTK είναι μέρος της εφαρμογής μας, αλλά στην πραγματικότητα ξεκίνησε από προγράμματα περιήγησης όπως το Safari. Η πρώτη επιλογή θα ήταν να δημιουργήσουμε ένα προσαρμοσμένο σχήμα URL για την εφαρμογή μας και να αφήσουμε την επέκταση να το ανοίξει. Δυστυχώς, δεν υπάρχει κοινόχρηστη παρουσία εφαρμογής UIA σε μια επέκταση CTK. Αυτό μας αφήνει να εμφανίσουμε μια τοπική ειδοποίηση από την επέκταση και να ενημερώσουμε τον χρήστη ότι πρέπει να την πατήσει για να συνεχίσει. Η χρήση μιας ειδοποίησης διευκολύνει επίσης τη μετάδοση των δεδομένων που πρόκειται να υπογραφούν, ποιον αλγόριθμο να χρησιμοποιήσετε και ορισμένες άλλες πληροφορίες στην κύρια εφαρμογή.
- Όταν η εφαρμογή ανοίγει μέσω της ειδοποίησης, εμφανίζει έναν προσαρμοσμένο ελεγκτή προβολής που χειρίζεται την εισαγωγή PIN και την επικοινωνία με το YubiKey. Αυτό είναι το εύκολο μέρος όπου απλά ζητάμε από τον χρήστη τον κωδικό PIN και υπογράφουμε τα δεδομένα χρησιμοποιώντας το σωστό ιδιωτικό κλειδί στο YubiKey.
- Αποστολή της υπογραφής πίσω στην επέκταση CTK. Το πρόβλημα με τη μη ύπαρξη κοινής μνήμης μεταξύ της επέκτασης CTK και της κύριας εφαρμογής εξακολουθεί να αποτελεί πρόβλημα, αλλά η αποθήκευση τιμών κλειδιού UserDefault είναι ένας κοινόχρηστος πόρος στον οποίο έχουν πρόσβαση και οι δύο στόχοι. Η κύρια εφαρμογή γράφει την υπογραφή στο UserDefault και ενθαρρύνει τον χρήστη να πατήσει το κουμπί πίσω στην επάνω αριστερή γωνία για να επιστρέψει στην αρχική εφαρμογή.
- Ενώ όλα αυτά συμβαίνουν στην κύρια εφαρμογή, η επέκταση CTK εισέρχεται σε έναν βρόχο όπου κάνει συνεχή λούπα ψάχνοντας για την υπογραφή στο UserDefaults κάθε δευτερόλεπτο. Μόλις η κύρια εφαρμογή εγγράψει τα δεδομένα στο UserDefaults, η επέκταση τα διαβάζει και διαγράφει την καταχώρηση. Η επέκταση παραδίδει τελικά την υπογραφή στη μέθοδο TKTokenSessionDelegate και ο χρήστης ελέγχεται πλέον σε ένα πρόγραμμα περιήγησης όπως το Safari.
Αν θέλετε απλώς να προσθέσετε υποστήριξη για έλεγχο ταυτότητας στο iOS χρησιμοποιώντας πιστοποιητικά πελάτη σε ένα YubiKey, δεν χρειάζεται να τα εφαρμόσετε όλα αυτά. Εάν ο ιστότοπός σας χρησιμοποιεί ήδη πιστοποιητικά πελάτη και YubiKeys για έλεγχο ταυτότητας, το μόνο πράγμα που πρέπει να κάνετε για να το ενεργοποιήσετε στο iOS είναι να εγκαταστήσετε το Yubico Authenticator
Πηγή: Yubico / Jens Utbult