Inspector de chei OpenPGP și analizor de pachete

Se lipește o cheie, o semnătură sau un mesaj OpenPGP cu armură — sau se încarcă un fișier binar .gpg — și se vede amprenta, ID-ul cheii, identitățile de utilizator, subcheile, pachetele de semnătură și arborele brut al pachetelor. Totul rulează în browser; nimic nu se încarcă.
Doar analizor. Instrumentul decodează și afișează date OpenPGP — nu verifică niciodată criptografic semnăturile, nu decriptează și nu cere niciodată parole. Pentru a verifica sau decripta efectiv, se folosește GnuPG (gpg --verify, gpg -d) cu propriul inel de chei. Și, ca la orice instrument: cheile private reale aparțin inelului de chei, nu unui tab de browser.
Acceptă toate tipurile de armură: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
export binar de inel de chei / .sig / .gpg — se citește local, nu se încarcă niciodată
Ce verifică acest instrument — și ce nu face intenționat
Decodează armura (etichetă, antete, payload base64, suma de control CRC-24 de transport), analizează fiecare pachet în formatul vechi și nou de antet, citește pachetele de chei v4/v5/v6 (algoritm, dimensiuni MPI, timpul creării), calculează amprentele v4 (SHA-1) și v6 (SHA-256), derivă ID-urile cheilor, listează identitățile de utilizator, subcheile și subpachetele de semnătură. Nu verifică semnăturile (asta necesită întregul mecanism hash-and-verify din RFC 9580 §5.2.4 plus un inel de chei de încredere), nu decriptează și nu aduce chei de pe servere de chei. Orice rezultat se verifică încrucișat cu GnuPG: gpg --show-keys file.asc afișează amprenta și identitățile de utilizator, iar gpg --list-packets file.asc arată structura pachetelor.
Chei exemplu pe această pagină — cele patru butoane Exemplu lipesc o cheie RSA-2048 OpenPGP v4 reală, generată special pentru această pagină (niciodată folosită altundeva). Cheia privată exemplu este stocată nencriptată (utilizarea S2K 0) intenționat, ca analizorul să poată arăta structura MPI secretă; o cheie privată exportată real ar arăta în schimb cifrul și derivarea S2K.
Autotest
Rulează din nou analizorul față de cheia exemplu încorporată, o semnătură detașată și un mesaj semnat: etichetele armurii, trecerea CRC-24 și corupția intenționată, secvențele de etichete ale pachetelor, amprenta v4 și ID-ul cheii față de valori calculate independent, identitățile de utilizator, amprentele subcheilor, detectarea cheii secrete, plus teste negative (intrările neinterpretabile și pachetele trunchiate trebuie respinse). Nimic nu se trimite nicăieri.
OpenPGP explicat de la zero
Într-o propoziție: OpenPGP este un standard deschis (RFC 4880, actualizat prin RFC 9580 în 2024) pentru criptarea de la un capăt la altul și semnăturile digitale, cel mai cunoscut fiind folosit la securizarea e-mailului — iar totul circulă în pachete binare mici, etichetate, de obicei învelite într-un strat de „armură” ușor de tratat ca text.
Ce este OpenPGP?

PGP („Pretty Good Privacy”) a fost lansat de Phil Zimmermann în 1991, ca un program pe care oricine îl putea folosi pentru a cripta și semna mesaje. Pentru a evita problema unui singur furnizor, formatul mesajelor a fost standardizat ca OpenPGP (RFC 2440 în 1998, RFC 4880 în 2007, RFC 9580 în 2024). Astăzi GnuPG este cea mai comună implementare, iar același format de pachete apare și în commit-urile git semnate, în semnarea pachetelor software, pe serverele de chei și în înregistrarea DNS OPENPGPKEY.

Modelul este de la un capăt la altul: fiecare persoană își generează o pereche personală de chei; orice este criptat pentru un destinatar poate fi decriptat doar cu cheia privată a acestuia, care nu părăsește niciodată calculatorul. În loc de o autoritate centrală de certificare (ca la TLS), încrederea în cheile altora vine din semnarea reciprocă a cheilor — „rețeaua de încredere”. Dacă se folosește această rețea sau se compară doar amprentele pe un canal separat (un apel telefonic, o carte de vizită) depinde de alegere; formatul în sine nu impune niciuna dintre variante.

Ce este o cheie OpenPGP?

O „cheie” OpenPGP este de fapt un mic pachet de pachete: un pachet de cheie primară (ancora identității, de obicei permisă să semneze), una sau mai multe pachete ID de utilizator („Alice <alice@example.com>”), autosemnături care leagă aceste ID-uri de cheia primară și, opțional, subchei cu semnăturile lor de legare — de obicei o subcheie separată de criptare, astfel încât cheia primară, prețioasă, să poată rămâne offline. Întregul bloc cu armură lipit în această pagină este acest pachet.

Amprenta este hash-ul pachetului de cheie primară — SHA-1 (20 de octeți) pentru cheile v4, SHA-256 (32 de octeți) pentru cheile v6 — calculat doar peste partea publică. ID-ul cheii este doar ultimii 8 octeți ai amprentei v4 (primii 8 pentru v5). Amprentele sunt ceea ce se compară pe un canal separat, ca să se asigure că nu a schimbat nimeni cheia pe drum; ID-urile cheilor sunt un mâner scurt pentru serverele de chei și nu sunt sigure împotriva coliziunilor în fața unui atacator determinat.

ID algoritmNumeUtilizare tipică într-o cheie
1RSAClasic, versatil; 2048–4096 de biți, semnare și/sau criptare
19ECDSACurbe NIST (P-256 etc.), semnare
18ECDHAcord de chei Curve25519/P-256, subchei de criptare
22EdDSASemnare Ed25519 (implicitul modern în GnuPG 2.4+)
25X25519Subchei de criptare asociate cu chei primare Ed25519 (chei v6)

Un bloc de cheie privată transportă numerele secrete după partea publică: un octet de utilizare S2K care spune cum sunt protejate (0 = neprotejate, 254/255 = cheie derivată din parolă cu un cifru), apoi MPI-urile secrete și o sumă de control. Această pagină afișează modul de protecție, dar nu cere niciodată o parolă și nu încearcă decriptarea materialului secret.

Ce este un pachet OpenPGP?

Sub armură, fiecare obiect OpenPGP este o secvență de pachete. Fiecare începe cu un octet de etichetă: formatul vechi împachetează un tip de pachet pe 4 biți și un tip de lungime, iar formatul nou (CTB, bitul 6 setat) folosește un tip pe 6 biți și octeți de lungime care pot descrie chiar date în bucăți parțiale. Etichete uzuale: 6 = cheie publică, 5 = cheie secretă, 14 = subcheie, 13 = ID de utilizator, 2 = semnătură, 4 = semnătură one-pass, 11 = date literale, 8 = date comprimate, 18 = date criptate și protejate MDC. Această pagină afișează eticheta, formatul antetului, lungimea și un dump hexazecimal pentru fiecare pachet găsit și raportează eroarea cu poziția octetului atunci când antetul unui pachet este malformat.

Pachetele de semnătură își transportă metadatele în zone de subpachete hashed și unhashed. Doar zona hashed este acoperită de semnătura propriu-zisă; zona unhashed (folosită istoric pentru ID-ul cheii emitentului) poate fi rescrisă liber de oricine în tranzit, deci cititorii trebuie să o trateze ca sugestie, niciodată ca fapt. Autosemnătura de pe un ID de utilizator este ceea ce leagă efectiv numele de cheie; un pachet de cheie singur, lipit de sine stătător, nu dovedește cine îl deține.

Armura ASCII este învelișul text: -----BEGIN PGP PUBLIC KEY BLOCK-----, antete opționale precum Version: sau Comment:, base64 al fluxului de pachete și o linie finală =xxxx cu un CRC pe 24 de biți. Acest CRC prinde doar corupția de transport — se schimbă un singur caracter base64 și pagina îl semnalează — dar nu este o semnătură și nu dovedește nimic despre autor.

Greșeli frecvente
  • Încrederea într-o cheie fără compararea amprentelor. Oricine poate genera o cheie cu orice nume. Compararea amprentei printr-un canal în care există deja încredere (față în față, telefonic) este întreaga etapă de autentificare.
  • Confundarea sumei CRC a armurii cu o semnătură. Un semn „CRC OK” înseamnă doar că base64 a supraviețuit transportului, nimic mai mult. Verificarea este o operație criptografică pe care această pagină nu o efectuează intenționat.
  • Folosirea ID-urilor de chei drept identitate. ID-urile de chei de 64 de biți pot fi falsificate de un atacator cu putere de calcul modestă (o „coliziune de ID de cheie”); se citează întotdeauna amprentele complete.
  • Lipirea cheilor private reale în pagini web. Chiar și o pagină locală, fără încărcare, ca aceasta este un obicei pe care nu se dorește să-l formezi. Cheile exemplu de aici sunt chei de unică folosință, generate pentru demonstrație.
  • Presupunerea că „PGP MESSAGE” înseamnă criptat. Eticheta armurii nu spune nimic despre conținut — mesajul exemplu de pe această pagină este semnat, dar în text clar, iar eticheta de pachet 18 față de 11 este cea care deosebește de fapt datele criptate de cele literale.
  • Importul cheilor v3. Cheile versiunii 3 (designul dinainte de 1996, ID-uri de chei slabe pe 16 biți) sunt depreciate din 2014; acest inspector le respinge intenționat.
Întrebări frecvente

Verifică acest instrument semnăturile? Nu. Analizează și afișează. Verificarea semnăturii necesită construcția completă a hash-trailer-ului din RFC 9580, cheia publică a semnatarului și o decizie dacă se are încredere în cheia respectivă — treaba GnuPG sau a unei biblioteci OpenPGP.

Cu ce se deosebește de openpgp.js? openpgp.js este o implementare completă (criptare, decriptare, semnare, verificare) care se integrează în aplicație; această pagină este un inspector fără dependențe pentru citirea și auditarea structurilor OpenPGP în browser.

Poate citi exportul GnuPG? Da — chei v4, v5 și v6, semnături detașate și mesaje. Cheile versiunii 3 sunt refuzate cu o notă (depreciate din 2014).

De ce există un mod de intrare hexazecimal? Datele OpenPGP brute sunt binare; dacă se are un dump hexazecimal al unui inel de chei sau al unui fișier .gpg, se lipește hex-ul și analizorul îl tratează exact ca pe octeții obținuți prin decodare.

Se încarcă ceva? Nu. Analiza, calculul amprentelor și generarea raportului se întâmplă în acest tab; pagina rulează integral în browser.