Επιθεωρητής κλειδιών OpenPGP & αναλυτής πακέτων

Επικόλληση ενός θωρακισμένου κλειδιού, υπογραφής ή μηνύματος OpenPGP — ή φόρτωση ενός δυαδικού αρχείου .gpg — και προβολή το αποτύπωμα, το αναγνωριστικό κλειδιού, τα αναγνωριστικά χρηστών, τα υποκλειδιά, τα πακέτα υπογραφής και το ακατέργαστο δέντρο πακέτων. Εξ ολοκλήρου στο πρόγραμμα περιήγησης· τίποτα δεν μεταφορτώνεται.
Μόνο ανάλυση. Αυτό το εργαλείο αποκωδικοποιεί και εμφανίζει δεδομένα OpenPGP — ποτέ δεν επαληθεύει κρυπτογραφικά υπογραφές, ποτέ δεν αποκρυπτογραφεί και ποτέ δεν ζητά φράσεις πρόσβασης. Για πραγματική επαλήθευση ή αποκρυπτογράφηση, χρήση του GnuPG (gpg --verify, gpg -d) με δακτύλιο κλειδιών προσωπικής χρήσης. Και όπως με κάθε εργαλείο: τα πραγματικά ιδιωτικά κλειδιά ανήκουν στον δακτύλιο κλειδιών, όχι σε καρτέλα προγράμματος περιήγησης.
Δέχεται κάθε τύπο θωράκισης: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
εξαγωγή δυαδικού δακτυλίου κλειδιών / .sig / .gpg — διαβάζεται τοπικά, δεν μεταφορτώνεται ποτέ
Τι ελέγχει αυτό το εργαλείο — και τι δεν ελέγχει σκόπιμα
Αποκωδικοποιεί τη θωράκιση (ετικέτα, κεφαλίδες, ωφέλιμο φορτίο base64, το άθροισμα ελέγχου μεταφοράς CRC-24), αναλύει κάθε πακέτο σε παλιά και νέα μορφή κεφαλίδας, διαβάζει πακέτα κλειδιών v4/v5/v6 (αλγόριθμος, μεγέθη MPI, ώρα δημιουργίας), υπολογίζει αποτυπώματα v4 (SHA-1) και αποτυπώματα v6 (SHA-256), παράγει αναγνωριστικά κλειδιών και απαριθμεί αναγνωριστικά χρηστών, υποκλειδιά και υποπακέτα υπογραφής. Δεν επαληθεύει υπογραφές (αυτό απαιτεί την πλήρη μηχανική κατακερματισμού και επαλήθευσης του RFC 9580 §5.2.4 και ένα αξιόπιστο δακτύλιο κλειδιών), δεν αποκρυπτογραφεί και δεν ανακτά κλειδιά από διακομιστές κλειδιών. Η διασταύρωση κάθε εξόδου με το GnuPG: η gpg --show-keys file.asc εκτυπώνει το αποτύπωμα και τα αναγνωριστικά χρηστών, και η gpg --list-packets file.asc εκτυπώνει τη δομή των πακέτων.
Δείγματα κλειδιών σε αυτή τη σελίδα — τα τέσσερα κουμπιά Δείγματος επικολλούν ένα πραγματικό κλειδί OpenPGP v4 RSA-2048, που δημιουργήθηκε αποκλειστικά για αυτή τη σελίδα (και δεν χρησιμοποιήθηκε πουθενά). Το δείγμα ιδιωτικού κλειδιού αποθηκεύεται χωρίς κρυπτογράφηση (χρήση S2K 0) σκόπιμα, ώστε ο αναλυτής να δείξει τη διάταξη των μυστικών MPI· ένα πραγματικό εξαγόμενο ιδιωτικό κλειδί θα έδειχνε αντί αυτού τον κρυπτογράφο και την παραγωγή S2K του.
Αυτοέλεγχος
Επανεκτέλεση του αναλυτή έναντι του ενσωματωμένου δείγματος κλειδιού, μιας αποσπασμένης υπογραφής και ενός υπογεγραμμένου μηνύματος: ετικέτες θωράκισης, έλεγχος CRC-24 και σκόπιμη αλλοίωση, ακολουθίες ετικετών πακέτων, αποτύπωμα v4 και αναγνωριστικό κλειδιού έναντι ανεξάρτητα υπολογισμένων τιμών, αναγνωριστικά χρηστών, αποτυπώματα υποκλειδιών, ανίχνευση μυστικού κλειδιού, καθώς και αρνητικά τεστ (τα σκουπίδια και τα περικομμένα πακέτα πρέπει να απορρίπτονται). Τίποτα δεν αποστέλλεται πουθενά.
Το OpenPGP εξηγείται από το μηδέν
Σε μία πρόταση: Το OpenPGP είναι ανοιχτό πρότυπο (RFC 4880, ενημερωμένο από το RFC 9580 το 2024) για κρυπτογράφηση από άκρο σε άκρο και ψηφιακές υπογραφές, περισσότερο γνωστό για την ασφάλιση του email — και όλα ταξιδεύουν σε μικρά δυαδικά πακέτα με ετικέτες, συνήθως τυλιγμένα σε ένα στρώμα «θωράκισης» φιλικό προς το κείμενο.
Τι είναι το OpenPGP;

Το PGP («Pretty Good Privacy») κυκλοφόρησε από τον Phil Zimmermann το 1991 ως πρόγραμμα που μπορούσε να χρησιμοποιήσει οποιοσδήποτε για κρυπτογράφηση και υπογραφή μηνυμάτων. Για να ξεφύγει από το πρόβλημα ενός μόνο προμηθευτή, η μορφή μηνύματος τυποποιήθηκε ως OpenPGP (RFC 2440 το 1998, RFC 4880 το 2007, RFC 9580 το 2024). Σήμερα το GnuPG είναι η πιο συνηθισμένη υλοποίηση, και η ίδια μορφή πακέτων εμφανίζεται επίσης σε υπογεγραμμένα commits του git, υπογραφή λογισμικού πακέτων, διακομιστές κλειδιών και στην εγγραφή DNS OPENPGPKEY.

Το μοντέλο είναι από άκρο σε άκρο: ο αποστολέας και ο παραλήπτης δημιουργούν καθένας ένα προσωπικό ζεύγος κλειδιών· ό,τι κρυπτογραφείται για έναν παραλήπτη μπορεί να αποκρυπτογραφηθεί μόνο από το ιδιωτικό κλειδί του, που δεν φεύγει ποτέ από τη συσκευή του. Αντί για κεντρική αρχή πιστοποίησης (όπως στο TLS), η εμπιστοσύνη στα κλειδιά άλλων προέρχεται από την υπογραφή των κλειδιών του ο ένας του άλλου — το «δίκτυο εμπιστοσύνης». Το αν θα χρησιμοποιηθεί αυτό το δίκτυο ή απλώς θα συγκριθούν αποτυπώματα εκτός ζώνης (τηλεφωνική κλήση, επαγγελματική κάρτα) εξαρτάται από την επιλογή του χρήστη· η ίδια η μορφή δεν επιβάλλει κανένα από τα δύο.

Τι είναι ένα κλειδί OpenPGP;

Ένα «κλειδί» OpenPGP είναι στην πραγματικότητα ένα μικρό δέμα πακέτων: ένα πακέτο πρωτεύοντος κλειδιού (η άγκυρα της ταυτότητας, συνήθως επιτρέπεται να υπογράφει), ένα ή περισσότερα πακέτα ταυτότητας χρήστη («Alice <alice@example.com>»), αυτοϋπογραφές που δένουν αυτές τις ταυτότητες με το πρωτεύον κλειδί, και προαιρετικά υποκλειδιά με τις δικές τους υπογραφές σύνδεσης — συνήθως ένα ξεχωριστό υποκλειδί κρυπτογράφησης ώστε το πολύτιμο πρωτεύον κλειδί να μπορεί να μένει εκτός σύνδεσης. Το πλήρες θωρακισμένο μπλοκ που επικολλάτε σε αυτή τη σελίδα είναι αυτό το δέμα.

Το αποτύπωμα είναι ο κατακερματισμός του πακέτου πρωτεύοντος κλειδιού — SHA-1 (20 byte) για κλειδιά v4, SHA-256 (32 byte) για κλειδιά v6 — υπολογισμένος μόνο στο δημόσιο μέρος. Το αναγνωριστικό κλειδιού είναι απλώς τα τελευταία 8 byte ενός αποτυπώματος v4 (τα πρώτα 8 για v5). Τα αποτυπώματα είναι αυτά που συγκρίνουμε εκτός ζώνης ώστε να βεβαιωθούμε ότι κανείς δεν άλλαξε το κλειδί στον δρόμο· τα αναγνωριστικά κλειδιών είναι μια σύντομη λαβή για διακομιστές κλειδιών και δεν είναι ασφαλή έναντι συγκρούσεων για αποφασισμένο επιτιθέμενο.

Αναγνωριστικό αλγορίθμουΌνομαΤυπική χρήση σε ένα κλειδί
1RSAΚλασικός εργάτης για όλες τις χρήσεις· 2048–4096 bit, υπογραφή ή/και κρυπτογράφηση
19ECDSAΚαμπύλες NIST (P-256 κ.ά.), υπογραφή
18ECDHΣυμφωνία κλειδιών Curve25519/P-256, υποκλειδιά κρυπτογράφησης
22EdDSAΥπογραφή Ed25519 (η σύγχρονη προεπιλογή στο GnuPG 2.4+)
25X25519Υποκλειδιά κρυπτογράφησης σε συνδυασμό με πρωτεύοντα Ed25519 (κλειδιά v6)

Ένα μπλοκ ιδιωτικού κλειδιού μεταφέρει τους μυστικούς αριθμούς μετά το δημόσιο μέρος: ένα οκτάδα χρήσης S2K που λέει πώς προστατεύονται (0 = χωρίς προστασία, 254/255 = κλειδί παραγόμενο από φράση πρόσβασης με κρυπτογράφο), έπειτα τα μυστικά MPI και ένα άθροισμα ελέγχου. Αυτή η σελίδα εμφανίζει τον τρόπο προστασίας αλλά ποτέ δεν ζητά φράση πρόσβασης και ποτέ δεν επιχειρεί αποκρυπτογράφηση του μυστικού υλικού.

Τι είναι ένα πακέτο OpenPGP;

Κάτω από τη θωράκιση, κάθε αντικείμενο OpenPGP είναι ακολουθία πακέτων. Κάθε πακέτο ξεκινά με ένα byte ετικέτας: η παλιά μορφή συμπιέζει σε αυτό έναν τύπο πακέτου 4 bit και έναν τύπο μήκους, η νέα μορφή (CTB, bit 6 ενεργό) χρησιμοποιεί τύπο 6 bit και byte μήκους που μπορούν ακόμη και να περιγράφουν δεδομένα σε μερικά τμήματα. Συνηθισμένες ετικέτες: 6 = δημόσιο κλειδί, 5 = μυστικό κλειδί, 14 = υποκλειδί, 13 = αναγνωριστικό χρήστη, 2 = υπογραφή, 4 = υπογραφή μίας διέλευσης, 11 = κυριολεκτικά δεδομένα, 8 = συμπιεσμένα δεδομένα, 18 = κρυπτογραφημένα δεδομένα με προστασία MDC. Αυτή η σελίδα τυπώνει την ετικέτα, τη μορφή κεφαλίδας, το μήκος και ένα δεκαεξαδικό dump για κάθε πακέτο που βρίσκει, και αναφέρει σφάλμα με τη θέση byte όταν μια κεφαλίδα πακέτου είναι λανθασμένη.

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

Η θωράκιση ASCII είναι το περιτύλιγμα κειμένου: -----BEGIN PGP PUBLIC KEY BLOCK-----, προαιρετικές κεφαλίδες όπως Version: ή Comment:, base64 της ροής πακέτων, και μια τελική γραμμή =xxxx που κρατά ένα CRC 24 bit. Αυτό το CRC πιάνει μόνο τη αλλοίωση κατά τη μεταφορά — αν αλλάξει ένας χαρακτήρας base64, η σελίδα το σημαίνει· αλλά δεν είναι υπογραφή και δεν αποδεικνύει τίποτα για την πατρότητα.

Συνηθισμένα λάθη
  • Εμπιστοσύνη σε κλειδί χωρίς σύγκριση αποτυπωμάτων. Οποιοσδήποτε μπορεί να δημιουργήσει κλειδί με οποιοδήποτε όνομα. Η σύγκριση αποτυπωμάτων μέσω καναλιού που ήδη εμπιστευόμαστε (αυτοπροσώπως, τηλεφωνικά) είναι όλο το βήμα ταυτοποίησης.
  • Σύγχυση του CRC θωράκισης με υπογραφή. Η ένδειξη «CRC OK» σημαίνει μόνο ότι το base64 επέζησε του ταξιδιού, τίποτα περισσότερο. Η επαλήθευση είναι κρυπτογραφική πράξη που αυτή η σελίδα σκόπιμα δεν εκτελεί.
  • Χρήση αναγνωριστικών κλειδιών ως ταυτότητα. Τα αναγνωριστικά κλειδιών 64 bit μπορούν να πλαστογραφηθούν από επιτιθέμενο με μέτρια υπολογιστική ισχύ («σύγκρουση αναγνωριστικού κλειδιού»)· πάντα να αναφέρονται πλήρη αποτυπώματα.
  • Επικόλληση πραγματικών ιδιωτικών κλειδιών σε ιστοσελίδες. Ακόμη και μια τοπική σελίδα χωρίς μεταφόρτωση όπως αυτή είναι συνήθεια που δεν θέλουμε να αποκτήσουμε. Τα δείγματα εδώ είναι κλειδιά μίας χρήσης που δημιουργήθηκαν για την επίδειξη.
  • Η υπόθεση ότι το «PGP MESSAGE» σημαίνει κρυπτογραφημένο. Η ετικέτα θωράκισης δεν λέει τίποτα για το περιεχόμενο — το δείγμα μηνύματος αυτής της σελίδας είναι υπογεγραμμένο αλλά σε απλό κείμενο, και το ετικέτα πακέτου 18 έναντι 11 είναι αυτό που πραγματικά ξεχωρίζει τα κρυπτογραφημένα από τα κυριολεκτικά δεδομένα.
  • Εισαγωγή κλειδιών v3. Τα κλειδιά έκδοσης 3 (σχεδιασμός πριν από το 1996, αδύναμα αναγνωριστικά 16 bit) έχουν αποσυρθεί από το 2014· αυτός ο επιθεωρητής τα απορρίπτει σκόπιμα.
Συχνές ερωτήσεις

Επαληθεύει υπογραφές; Όχι. Αναλύει και εμφανίζει. Η επαλήθευση υπογραφής απαιτεί την πλήρη κατασκευή trailer κατακερματισμού του RFC 9580, το δημόσιο κλειδί του υπογράφοντος, και μια απόφαση για το αν εμπιστευόμαστε αυτό το κλειδί — η δουλειά του GnuPG ή μιας βιβλιοθήκης OpenPGP.

Πώς διαφέρει από το openpgp.js; Το openpgp.js είναι πλήρης υλοποίηση (κρυπτογράφηση, αποκρυπτογράφηση, υπογραφή, επαλήθευση) που ενσωματώνεται στην εφαρμογή· αυτή η σελίδα είναι επιθεωρητής χωρίς εξαρτήσεις για ανάγνωση και έλεγχο δομών OpenPGP στο πρόγραμμα περιήγησης.

Μπορεί να διαβάσει την εξαγωγή από το GnuPG; Ναι — κλειδιά v4, v5 και v6, αποσπασμένες υπογραφές και μηνύματα. Τα κλειδιά έκδοσης 3 απορρίπτονται με σημείωση (αποσύρθηκαν από το 2014).

Γιατί υπάρχει λειτουργία εισόδου δεκαεξαδικού; Τα ακατέργαστα δεδομένα OpenPGP είναι δυαδικά· αν υπάρχει δεκαεξαδικό dump ενός δακτυλίου κλειδιών ή ενός αρχείου .gpg, επικολλάται το δεκαεξαδικό και ο αναλυτής το αντιμετωπίζει ακριβώς όπως τα αποκωδικοποιημένα byte.

Μεταφορτώνεται κάτι; Όχι. Η ανάλυση, ο υπολογισμός αποτυπωμάτων και η δημιουργία αναφοράς γίνονται όλα σε αυτή την καρτέλα· η σελίδα εκτελείται εξ ολοκλήρου στο πρόγραμμα περιήγησης.