Wednesday, October 18, 2023

Πως να διαβάσετε μια ηλεκτρονική ταυτότητα

Πάμε τώρα παιδιά μου να διαβάσουμε μια ταυτότητα; ΠΑΑΑΜΕΕΕΕΕ!




Επειδή όμως δεν έχουμε ταυτότητα, θα διαβάσουμε ενα διαβατήριο. Ο τίτλος ήταν λίγο clickbait.

Θα χρειαστείτε ενα διαβατήριο (duh!) και εναν NFC smart card reader συμβατό με ISO 14443 και PC/SC. Εγω χρησιμοποίησα το DL533R της Digital Logic, αλλά επειδή εσείς σιγά να μην έχετε smart card reader, μπορείτε να δοκιμάσετε να παίξετε με το PC/SC NFC bridge για Android κινητά που θα βρείτε αν γκουκλάρετε για "frankmorgner vsmartcard".

Θα χρειαστείτε επίσης τον κώδικα που εχω γράψει αποκλειστικά για σας, στο

Προς το παρόν διαβάζει μόνο Ελληνικά διαβατήρια (με λίγη τύχη και άλλων εθνικοτήτων), επειδή δεν εχω ταυτότητα για να δοκιμάσω.

Ο,τι γράφουμε παρακάτω για τα διαβατήρια όμως, ισχύουν και για τις ηλεκτρονικές ταυτότητες, δεδομένου οτι βασίζονται ακριβώς στα ίδια πρότυπα.

Εαν θέλετε να προσαρμόσετε τον κώδικα για να λειτουργεί με Ελληνικές ταυτότητες, πιθανότατα θα χρειαστεί να πειράξετε μερικα OIDs και να προσθέσετε CMAC και AES 
αλγόριθμους, ανάλογα με το τί υποστηρίζεται απο την ταυτότητα. Pull requests are welcome.

"Ευτυχώς" τα διαβατήρια δεν έχουν μηχανισμό ασφαλείας που να επιτρέπει μόνο ορισμένο αριθμό λάθος πιστοποιήσεων πρίν κλειδώσουν - υποθέτω επίτηδες, επειδή θα ήταν μάλλον άσχημη εμπειρία να βρεθείτε με κλειδωμένο διαβατήριο μπροστά σε γκαβλωμένο Ισραηλινό ιμμιγκράτσο (σύνθετη λέξη απο το immigration και τον μπάτσο). 

Κάποιες ηλεκτρονικές ταυτότητες όμως έχουν τέτοιο μηχανισμό (οι Γερμανικές παραδείγματος χάριν), και σε περίπτωση που τις κλειδώσετε προσπαθώντας να τις διαβάσετε, θα απαιτήσουν επιπλέον πιστοποίηση με τον ειδικό κωδικό ξεκλειδώματος (ακριβώς όπως οι SIM καρτες με το PUK).

O ICAOς συνιστά όταν ακυρώνεται ενα διαβατήριο με το πανάρχαιο κόλπο "το τρυπάμε με τον διακορευτή" (διακορευτής, που σημαίνει ξεπαρθενιστήρι, είναι το επίσημο όνομα για κείνο το μαντζαφλάρι που ανοίγει τρύπες σε έντυπα), να δίνεται προσοχή ωστε να "διακορεύουμε" και το σημείο που βρίσκεται το NFC chip, ωστε αυτό να καταστρέφεται.

Για κάποιο άγνωστο σε μένα λόγο, ο Έλλην μπάτσος που μου ξεπαρθ... ε, "διακόρευσε" το προηγούμενο διαβατήριο, ξέχασε μάλλον να διαβάσει τη συγκεκριμένη παράγραφο του ICAO 9303, με αποτέλεσμα να εχω στα χέρια μου ενα ληγμένο διαβατήριο με λειτουργικό NFC chip, με το οποίο μπορούσα να κάνω όσες δοκιμές ήθελα.

Για να διαβαστεί το έντυπο, απαιτείται πιστοποίηση δικαιωμάτων ανάγνωσης. Δηλαδή πρέπει να γνωρίζετε είτε τον "Αριθμό Πρόσβασης Κάρτας" είτε τα περιεχόμενα της γραμμής MRZ (Ζώνη Μηχανικής Ανάγνωσης). Το διαβατήριο μου δεν υποστηρίζει αριθμό πρόσβασης, οπότε έχω υλοποιήσει μόνο το μηχανισμό MRZ.

Για να διαβάσετε το διαβατήριο σας θα πρέπει να δώσετε το "password" που προκύπτει απο τα τρία πεδία του MRZ που περιέχουν τον αριθμό εντύπου, το check digit του αριθμού εντύπου, την ημερομηνία γέννησης (τη δικιά σας, όχι του εντύπου), το check digit της, την ημερομηνία λήξης (του εντύπου, οχι τη δικιά σας), και το check digit της.

Ολα τα παραπανω αναφέρονται στο MRZ. Για παράδειγμα, εαν το MRZ σας είναι

I<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<
L898902C<3UTO6908061F9406236<<<<<<<8

Tότε το MRZ password που αντιστοιχεί στο έντυπο είναι "L898902C<369080619406236"
Το πιο δύσκολο στην ολη ιστορία είναι η υλοποίηση των κρυπτογραφικών μηχανισμών ασφαλείας του ηλεκτρονικού έντυπου. Υπάρχουν δυο πρωτόκολλα που χρησιμοποιούνται στην πιστοποίηση δικαιωμάτων ανάγνωσης ICAO 9303 documents:

Το παλαιότερο πρωτόκολλο BAC, ονομασμένο προφανώς απο τον μπακαλιάρο, χρησιμοποιεί ενα απλό σχετικά μηχανισμό κρυπτογραφικής πιστοποίησης, με ανταλλαγή κλειδιώνε που προκύπτουν απο ενα hashing του password.

Εδω βρίσκεται και το πρώτο πρόβλημα: Όπως είπαμε παραπάνω, το password αποτελείται απο τον αριθμό εντύπου, την ημερομηνία γέννησης και την ημερομηνία λήξης του εντύπου. Το οποίο σημαίνει οτι η εντροπία των συγκεκριμένων πεδίων είναι τόσο μικρή που μπορεί να κάνει οποιονδήποτε ξέρει πέντε πράγματα απο κρυπτογραφία να αυτοκτονήσει κόβοντας τις φλέβες του με το διαβατήριο:

Οι ημερομηνίες έχουν φορμάτ YYMMDD, όπου το YY κυμαίνεται απο 00-99, δηλαδή συνολικά 100 πιθανές τιμές, το MM κυμαίνεται απο 01 μέχρι 12, και το DD απο 01 εως 30. Δηλαδή οι πιθανοί συνδυασμοί για κάθε ημερομηνία είναι 100 * 12 * 30 = 36000, προσφέροντας συνδιαστικά εντροπία 2 * log2(36000) = 30.271418572208 bits. Πάλι καλά που υπάρχει και ο αριθμός εντύπου μέσα, που στην περίπτωση του Ελληνικού διαβατηρίου (δυο γράμματα λατινικού αλφάβητου + 7 αριθμητικα ψηφία) μας δίνει ακόμα 32.654376100494 bits εντροπίας.

Η εντροπία αυτή μπορεί να μειωθεί ακόμα περισσότερο αν κάνουμε μερικές έξυπνες παρατηρήσεις για το πεδίο ορισμού και τις συσχετίσεις των δεδομένωνε: Στόν αριθμό εντύπου του διαβατηρίου για παράδειγμα - ολα μου τα διαβατήρια άρχιζαν απο AN η AT.

Επίσης, οι ημερομηνίες είναι πάρα πολύ κακή πηγή εντροπίας, καθώς και έχουν περιορισμούς και συνδέονται μεταξύ τους: Π.χ. ξέροντας οτι η ημερομηνία λήξης του εντύπου είναι ακριβώς 5 η 10 χρόνια μετά την ημερομηνία έκδοσης του, μπορούμε να αφαιρέσουμε τα Σαββατοκύριακα (στα οποία πολύ χλωμό να έχει εκδοθεί έντυπο). Η ημερομηνία λήξης του έντυπου είναι εξ'ορισμου τουλάχιστον πέντε (η δέκα) χρόνια μετά την ημερομηνίας γέννησης του κατόχου, ενω εαν δεν θέλουμε να διαβάσουμε ληγμένο διαβατήριο όπως στην περίπτωση μας, μπορούμε να υποθέσουμε οτι αυτό λήγει μέσα σε πέντε (κτλ) χρόνια μετά τη σημερινή ημερομηνία και έχει εκδοθεί τουλάχιστον την ημερομηνία που άρχισαν να εκδίδονται βιομετρικά διαβατήρια.

Σας αφήνω ως άσκηση να σκεφτείτε και άλλους τέτοιους περιορισμούς, και να υπολογίσετε το αποτέλεσμα που έχουν αυτοί οι περιορισμοί στην εντροπία του password του διαβατηρίου.

Αυτό το πρόσεξαν οι Γερμανοί όταν φτιάχνανε τις δικές τους ηλεκτρονικές ταυτότητες, και γι'αυτό το λόγο αναπτύξανε ενα καλύτερο πρωτόκολλο πιστοποίησης δικαιωμάτων απο το μπακαλιάρο, το οποίο λέγεται PACE, και είναι υποχρεωτική η χρήση του σε ολα τα βιομετρικά διαβατήρια που εκδόθηκαν μετά το 2018, ενώ νομίζω μετά το 2025 θα σταματήσουν να εκδίδονται έντυπα με BAC.

Το PACE λύνει το πρόβλημα της εντροπίας χρησιμοποιώντας τον γνωστό κρυπτογραφικό αλγόριθμο ανταλλαγής κλειδιώνε που έχει το όνομα εκείνης της μαγιονέζας. Το password εξακολουθεί να έχει μικρή εντροπία, αλλά δε χρησιμοποιείται άμεσα για την κρυπτογράφηση της επικοινωνίας - χρησιμοποιεί το password αναμεμιγμένο με τα προσωπικά κλειδιά του εντύπου και του μηχανισμού ανάγνωσης ωστε να αυξηθεί η εντροπία του κλειδιού με το οποίο κρυπτογραφείται η επικοινωνία.

Εδω βέβαια υπάρχουν μερικά κλασσικό κόλπα: Ακόμα και ΠΡΙΝ το ξεκλείδωμα του διαβατηρίου και την απόκτηση πρόσβασης ανάγνωσης, υπάρχουν κάποια δεδομένα τα οποία μπορούν να αναγνωστούν. Ενα απο αυτά είναι ο σειριακός αριθμός του NFC chip - για το λόγο αυτό ο ICAO προτείνει να τυχαιοποιείται ο σειριακός αριθμός σε κάθε ανάγνωση, ωστε να αποτρέπεται η σύνδεση σειριακού αριθμού με συγκεκριμένο έντυπο. Οντως, στο Ελληνικό διαβατήριο οι σειριακοί αριθμοί του NFC είναι τυχαιοποιημένοι. Ελπίζω να είναι και στις ταυτότητες.

Το δεύτερο κόλπο είναι πιο υποχθόνιο, αλλά εξίσου κλασσικό στην έρευνα συστημάτωνε ασφαλείας: Το πρωτόκολλο στο οποίο βασίζονται όλες οι έξυπνες κάρτες είναι το ISO 7816, το οποίο προτυποποιεί τις εντολές που δέχεται η έξυπνη κάρτα και τις απαντήσεις που δίνει. Ωστόσο, εαν δοκιμάσουμε να δώσουμε άκυρες εντολές η παραμέτρους για τις οποίες δεν λέει κάτι το πρότυπο, οι απαντήσεις που θα πάρουμε εξαρτώνται απο την υλοποίηση του ISO 7816 στο συγκεκριμένο NFC smartcard chip.

Υπάρχει ενα πολύ ενδιαφέρον paper κάτι Δανών που έκαναν ακριβώς αυτό με το Δανέζικο διαβατήριο καθώς και με μερικά Ευρωπαϊκα, ανακαλύπτοντας οτι σε πολλές περιπτώσεις είναι δυνατόν να αναγνωστούν παραμέτροι που εξαρτώνται απο τον κατασκευαστή του διαβατηρίου, επιτρέποντας σε οποιονδήποτε αναγνώστη να ξεχωρίσει χωρίς καμμία πιστοποίηση εαν έχει μπροστά του π.χ. ενα Γαλλικό η ενα Γερμανικό διαβατήριο, και έφτιαξαν και ενα υποθετικό σενάριο μιας έξυπνης γόμβας που σκάει μόλις περάσουν απο μπροστά της λόγου χάρη είκοσι διαβατήρια Ουρουγουάης. Για σκεφτείτε το!

Απαξ τώρα και ολοκληρωθεί η διαδικασία πιστοποίησης δικαιωμάτων ανάγνωσης, έχετε πρόσβαση για να διαβάσετε όλα τα δεδομένα που βρίσκονται στο έντυπο. Για τα διαβατήρια, τα δεδομένα αυτά βρίσκονται οργανωμένα σε μια ιεραρχία απο Applications.

Προς το παρόν στον κώδικα υποστηρίζω μόνο το application LDS1 που είναι και το μόνο υποχρεωτικό για τα διαβατήρια - υπάρχουν και άλλα Applications που επιτρέπουν την αποθήκευση προσωρινων δεδομένων στο έντυπο, όπως βίζες και άδειες παραμονής.

Στο application LDS1 βρίσκονται οραγανωμένα 16 αρχεία ομάδων δεδομένων (DG) τα οποία μπορούν να αναγνωστούν, και κάθε αρχείο περιέχει ενα είδος δεδομένωνε. Στο Ελληνικό διαβατήριο περιέχονται τα υποχρεωτικά αρχεία που ορίζει το πρότυπο - EF.COM, EF.CARDACCESS, EF.CARDSECURITY.

Το EF.DG1 περιέχει τα δεδομένα της Μηχανικής Ζώνης Ανάγνωσης σε ηλεκτρονική μορφή (μπορείτε να το διαβάσετε).

Το EF.DG2 που περιέχει τη βιομετρική φωτογραφία της μάπας σας. Αυτό έχει ενδιαφέρον, γιατί περιέχει και κάποια μεταδεδομένα - όπως τη γωνία λήψης της φωτογραφίας, το φύλο, την πόζα κτλ. Τα μεταδαδομένα αυτά μπορούν να χρησιμοποιηθούν για την παραμετροποίηση των συστημάτωνε αυτόματης αναγνώρισης μουτσούνας, και στην περίπτωση του ελληνικού διαβατηρίου είναι όλα κενά. Εχει ωστόσο ενδιαφέρον να διαβάσετε το σχετικά πρότυπα.

Το EF.DG3 περιέχει τα δαχτυλικά σας αποτυπώματα, δε μπορείτε να το διαβάσετε γιατί θεωρείται ευαίσθητο προσωπικό δεδομένο - σε αντίθεση με τη μούρη σας, και θα δούμε γιατί. Για να αναγνωστεί αυτό το αρχείο χρειάζονται επιπλέον δικαιώματα πρόσβασης, που απαιτούν ενα πιστοποιητικό που εκδίδεται απο την Αρχή Εκδόσεως Διαβατηρίωνε σε όλους τους χρήστες που έχουν τυπικά το δικαιώμα να αναγνώσουν τα δαχτυλικά αποτυπώματα του κατόχου ενός εντύπου (τους ιμμιγκράτσους, λογικά).

Το σχετικό πρωτόκολλο ονομάζεται Terminal Authentication, και δεν το εχω υλοποιήσει, γιατί υποθέτω οτι αν ζητήσω απο την Αρχή Εκδοσης Διαβατηρίωνε αρκετά ευγενικά ενα 
πιστοποιητικό για να το δοκιμάσω, ΔΕΝ θα μου δώσουν ενα.

Εδω βρίσκεται βέβαια και το δεύτερο σοβαρό πρόβλημα ασφαλείας, που είναι σχεδόν κοινό σε όλες τις υποδομές που χρησιμοποιούν πιστοποιητικά Χ.509 για ασφάλεια δεδομένωνε και ελέγχου πρόσβασης: Το πιστοποιητικό που χρειάζεται για να "ξεκλειδώσουν" τα δαχτυλικά αποτυπώματα, δε μπορεί να ανακληθεί.

Δηλαδή αν εγω καταφέρω να κλέψω ενα τέτοιο πιστοποιητικό (απο ενα αεροβρώμιο λόγου χάρη, λέμε τώρα), αυτό το πιστοποιητικό μπορεί να χρησιμοποιηθεί για να διαβάσει κάθε δαχτυλικό αποτύπωμα κάθε διαβατηρίου που εκδόθηκε μέχρι τότε, και αρκετά ακόμα που θα εκδοθούν εκ των υστέρωνε, μια και το καημένο το διαβατήριο δε διαθέτει Certificate Revocation List, ούτε έχει πρόσβαση στο Ιντερνετ (πάλι καλά!) για να ζητήσει ενα με OCSP (αυτοί είναι οι μεθόδοι ανάκλησης πιστοποιητικώνε που υποστηρίζονται απο το X.509). Εχουν προταθεί κάποια πρωτόκολλα για τη λύση αυτού του προβλήματος, κανένα ωστόσο δεν έχει προτυποποιηθεί μέχρι σήμερα.

Αμα βρείτε κανένα leaked πιστοποιητικό να κάνει γύρες στο Internet, πείτε μου.

Στο DG14 και DG15 θα βρείτε τα δεδομένα ασφαλείας και τα πιστοποιητικά που χρειάζονται για να επιβεβαιώσετε την αυθεντικότητα του διαβατηρίου. Αυτός είναι ο κύριος μηχανισμός που αποτρέπει κάποιον απο το να φτιάξει μια πλήρη ηλεκτρονική κόπια του διαβατηρίου σας που να "περνάει" ως αυθεντικιά (το λεγόμενο cloning), όπως και αποτρέπει κάποιον να "πειράξει" τα δεδομένα που βρίσκονται στο κλωνοποιημένο διαβατήριο - στο αυθεντικό δε μπορείς να πειράξεις τίποτα υποτίθεται, γιατί τα δεδομένα είναι read only. Υποθέτω μέχρι να βρούμε το embedded debugging που κάποιος θα ξέχασε να αφαιρέσει απο το production edition του NFC chip.

Για να πιστοποιήσετε την αυθεντικότητα του εντύπου απαιτείται υλοποίηση ακόμα δυο πρωκτοκόλλωυε που λέγονται Passive και Active Authentication, τα οποία δεν τα υλοποίησα, γιατί βαριέμαι.

Εαν θέλετε να τα υλοποιήσετε μόνοι σας, είναι εξαιρετικά απλό: Θα διαβάσετε το αρχείο EF.SOD που περιέχει το Security Object Document του διαβατηρίου, κωδικοποιημένο μέσα σε ενα Cryptographic Message Syntax αντικείμενο, το format του οποίου περιγράφεται στα πρότυπα RFC 8933, 5652, 3852, 3369, 2630, 6268, 5911, 5753, 3278, και 5084.

Μέσα απο το CMS αντικείμενο θα διαβάσετε το LDSSecurityObject με OID 2.23.136.1.1.1 όπως ορίζεται στο ICAO 9303-10 (προσοχή γιατί υπάρχουν δυο εκδόσεις και άρα πρέπει να ελέγξετε τον αριθμό έκδοσης), και θα εξάγετε τα hashes των Data Groups. Θα διαβάσετε το κάθε data group και θα υπολογίσετε το hash του με βάση τον αλγόριθμο που ορίζεται απο το πεδίο hashAlgorithm.

Αφού βεβαιωθείτε οτι όλα τα hashes των Data Groups είναι σωστα, θα εξάγετε απο το Security Object Document το Document Signer Certificate X.503 πιστοποιητικό, και θα βεβαιωθείτε οτι το Security Object Document είναι υπογεγραμμένο απο αυτό το πιστοποιητικό.

Υστερα θα βεβαιωθείτε οτι το Document Signer Certificate είναι υπογεγραμμένο με το πιστοποιητικό του Country Signing Certificate Authority της Ελλάδας, το οποίο θα ελέγξετε οτι βρίσκεται στο Master List του ICAO το οποίο θα προσέξετε να είναι υπογεγραμμένο απο το πιστοποιητικό του ICAO Master List Signer Certificate, το οποίο θα πρέπει να είναι υπογεγραμμένο απο το πιστοποιητικό του United Nations Country Signing Certificate Authority του ΟΗΕ, το οποίο υποθέτω λογικά είναι υπογεγραμμένο απο το ψηφιακό πιστοποιητικό του Αλλάχ (του ελεήμονος, του φιλεύσπλαφχνουφ).

Σε κάθε βήμα θα πρέπει να ελέγξετε το validity date των πιστοποιητικών και θα τσεκάρετε τις υπογραφές τους με το Certificate Revocation List που θα βρείτε επίσης στο Master List του ICAO.

Εαν όλες οι ψηφιακές υπογραφές είναι σωστές, θα διαβάσετε το αρχείο EF.DG15 και θα εξάγετε το ActiveAuthenticationPublicKeyInfo και θα ακολουθήσετε τον αλγόριθμο που περιγράφεται στην παράγραφο 6.1 του ICAO 9303-10 δημιουργώντας ενα τυχαίο αριθμό και στέλνοντας τον στο διαβατήριο με την εντολη INTERNAL AUTHENTICATE (για να σας διευκολύνω, αυτό το κομμάτι το εχω φτιάξει ήδη, είδατε τι καλός που είμαι).

Την απάντηση που θα λάβετε στο response πακέτο θα την αποκρυπτογραφήσετε με τον αλγόριθμο και το κλειδί που ορίζονται στο ActiveAuthenticationPublicKeyInfo, και θα συγκρίνετε το αποκρυπτογραφημένο μήνυμα με το hash του τυχαίου αριθμό που στείλατε στο προηγούμενο βήμα, όπως περιγράφεται στο Appendix F του ICAO 9303-11.

Με αυτή την παραπάνω απλή απλούστατη διαδικασία, μπορείτε να είστε σίγουροι οτι το διαβατήριο είναι αυθεντικό και δεν έχει κλωνοποιηθεί η παραχαρακτεί κατα οποιοδήποτε τρόπο.

Μάλιστα, η διαδικασία αυτή έχει μια ενδιαφέρουσα ιδιότητα, που αναφέρεται στο ICAO 9303: Η καταγραφή της "συνομιλίας" του διαβατηρίου με τον αναγνώστη σε log file, ισοδυναμεί με απόδειξη (με τη μαθηματική έννοια, που είναι πιο ισχυρή απο τη νομική), οτι το διαβατήριο και ο μηχανισμός ανάγνωσης έχουν βρεθεί στο ίδιο σημείο. Το αν ήσασταν κι εσείς εκεί μαζί με το διαβατήριο είναι άλλο καπέλο με το οποίο θα ασχοληθούμε αυγότερα.

Γενικά το ελληνικό διαβατήριο είναι λίγο φτωχό σε δεδομένα και μεταδεδομένα. Το ICAO 9303 περιλαμβάνει προτυποποιημένα Data Groups για την αναγραφή διαφόρων ειδών προαιρετικών δεδομένων, αλλά το ελληνικό διαβατήριο περιέχει μόνο τα απολύτως απαραίτητα - απο σβέρκο θα ψωνίσανε πάλι.

Για παράδιγμα, εγω θα ήθελα να περιλαμβάνεται το Data Group 16 που περιλαμβάνει στοιχεία επικοινωνίας άμεσης ανάγκης του κατόχου του εντύπου (δηλαδη με ποιόν θα επικοινωνήσουνε σε κείνη την περίπτωση του ανέκδοτου που βρίσκεστε στο αεροπλάνο με το διαβατήριο στα δόντια).

Επίσης, οι αλγόριθμοι κρυπτογραφίας που υποστηρίζει το ελληνικό διαβατήριο είναι οι εντελώς βασικοί και απαραίτητοι, δηλαδή DES3 και SHA1, που με τα 64 bit εντροπίας που προσφέρει ο μπακαλιάρος είναι λιγάκι πασσε για 2023, για να το θέσουμε ευγενικά.

Κάτι άλλο ενδιαφέρον που μπορείτε να κάνετε με το διαβατήριο, είναι να κάνετε brute-force τη δομή αρχείων του εντύπου, για να βρείτε τυχόν "κρυφά" αρχεία που μπορεί να περιέχει. Υπάρχουν δυο είδη αρχείων, Dedicated και Elementary. Τα Dedicated Files μπορούν να περιέχουν άλλα Dedicated Files η Elementary Files, ενω τα Elementary Files περιέχουν δεδομένα (σκεφτείτε τα σαν αρχεία και subdirectories σε μια δενδρική δομή). Τα αρχεία δεν έχουν ονόματα, αλλα αριθμητικούς descriptors, οι οποίοι είναι 16 bit, άρα είναι πολύ εύκολο να δοκιμάσουμε να διαβάσουμε όλους τους descriptors με τη σειρά.

Φυσικά αυτό δε σημαίνει οτι κάποιος δε μπορεί να "κρύψει" ενα αρχείο - μπορεί π.χ. κάποιος να προγραμματίσει το τσιπάκι να απαντάει σε μια "κρυφή" εντολή που δεν περιλαμβάνεται στο πρότυπο - κάτι τέτοιο όμως θα ήταν ηλίθιο (αφήνω ως άσκηση στον αναγνώστη να μας πεί ΓΙΑΤΙ θα ήταν ηλίθιο).

Προσωπικά το δοκίμασα στο διαβατήριο μου, και επιβεβαίωσα οτι δεν υπάρχουν αρχεία πέρα απο αυτά που περιγράφονται στο ICAO 9303-10. Αφού προσπάθησα να διαβάσω και τα 65536 πιθανά αρχεία του καταλόγου LDS1, απο απορία άγγιξα το διαβατήριο, και όπως το ψιλοπερίμενα, είχε θερμανθεί λιγάκι - το NFC chip προφανώς ξοδεύει ενέργεια σε κάθε εντολή που του δίνεις, μέρος της οποίας καταλήγει σε θερμότητα.

Φυσικά το διαβατήριο δε διαθέτει ανεμιστήρι, οπότε θεωρητικά μπορείτε να φτιάξετε ενα loop που διαβάζει το διαβατήριο μέχρι να αρπάξει φωτιά.

Μια κουβέντα τώρα για τα βιομετρικά. Το Ελληνικό διαβατήριο περιέχει τη μουτσούνα σας και τα δαχτυλικά σας αποτυπώματα, με τη μουτσούνα μόνο να είναι δημοσίως αναγνώσιμη. Το πρότυπο ICAO 9303 περιέχει αρκετές δυνατότητες αποθήκευσης βιομετρικών δεδομένων ΚΑΙ μεταδεδομένων.

Το δαχτυλικό αποτύπωμα έχει το πλεονέκτημα οτι δίνει καλύτερη βιομετρική πιστοποίηση απο τη φωτογραφία της μάπας σας, ειδικά δεδομένου οτι πιθανότητα τη μάπα σας την έβγαλε φωτογραφία κάποιος "επαγγελματίας φωτογράφος" συνηθισμένος να φωτογραφίζει βαφτίσια και γαμίσια, αντί για φωτογραφίες ποιότητας κατάλληλης για να χρησιμοποιηθούν σαν πηγή δεδομένων σε αλγόριθμους αυτόματης αναγνώρισης. Το πρόβλημα είναι διεθνές, και αν δείτε τις προδιαγραφές και τα μεταδεδομένα των φωτογραφιών και των βιομετρικώνε που προτείνονται για τις βίζες Σένγκεν στις επόμενες εκδόσεις της, μια αηδία θα σας ψιλοπιάσει σίγουρα.

Αλλα περισσότερα για τα βιομετρικά, θα γράψουμε σε επόμενο πόστι.