OpenPGP-avaintarkastaja ja pakettijäsennin

Liitä panssaroitu OpenPGP-avain, allekirjoitus tai viesti — tai lataa binääri .gpg-tiedosto — ja katso sormenjälki, avain-ID, käyttäjätunnukset, alaavaimet, allekirjoituspaketit ja raaka pakettipuu. Kokonaan selaimessa; mitään ei ladata.
Pelkkä jäsennin. Tämä työkalu purkaa ja näyttää OpenPGP-dataa — se ei koskaan vahvista allekirjoituksia kryptografisesti, ei pura salauksia eikä pyydä salasanalauseita. Jotta voidaan oikeasti vahvistaa tai purkaa, käytä GnuPG:tä (gpg --verify, gpg -d) omalla avainrenkaallasi. Ja kuten kaikissa työkaluissa: todelliset yksityiset avaimet kuuluvat avainrenkaaseesi, eivät selainvälilehdelle.
Hyväksyy kaikki panssarityypit: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binäärinen avainrenkaan vienti / .sig / .gpg — luetaan paikallisesti, ei ladata
Mitä tämä työkalu tarkistaa — ja mitä se tarkoituksella ei tarkista
Se purkaa panssarin (tunniste, otsikot, base64-hyötykuorma, CRC-24-siirtotarkistussumma), jäsentää jokaisen paketin vanhassa ja uudessa otsikkomuodossa, lukee v4/v5/v6-avainpaketit (algoritmi, MPI-koot, luontiaika), laskee v4-sormenjäljet (SHA-1) ja v6-sormenjäljet (SHA-256), johtaa avain-ID:t ja listaa käyttäjätunnukset, alaavaimet ja allekirjoituksen aliapaketit. Se ei vahvista allekirjoituksia (se vaatii täyden RFC 9580 §5.2.4 -tiivisteen ja vahvistuksen koneiston sekä luotetun avainrenkaan), ei pura salauksia eikä hae avaimia avainpalvelimilta. Vertaa mitä tahansa tulosta GnuPG:hen: gpg --show-keys file.asc tulostaa sormenjäljen ja käyttäjätunnukset, gpg --list-packets file.asc purkaa pakettirakenteen.
Esimerkkiavaimet tällä sivulla — neljä Esimerkki-painiketta liittävät oikean RSA-2048 OpenPGP v4 -avaimen, joka luotiin vain tätä sivua varten (ei koskaan käytetty mihinkään). Yksityisen avaimen esimerkki on tallennettu salaamattomana (S2K-käyttö 0) tarkoituksella, jotta jäsennin voi näyttää salaisen MPI-asettelun; todellinen viety yksityinen avain näyttäisi sen sijaan oman salauksensa ja S2K-johtamisensa.
Itsetesti
Ajaa jäsentimen uudelleen upotettua esimerkkiavainta, irrotettua allekirjoitusta ja allekirjoitettua viestiä vastaan: panssarin tunnisteet, CRC-24-läpäisy ja tarkoituksellinen vioittaminen, pakettitunnisteiden sekvenssit, v4-sormenjälki ja avain-ID riippumattomasti lasketuiksi arvoiksi verrattuna, käyttäjätunnukset, alaavaimen sormenjäljet, salaisen avaimen tunnistus sekä negatiiviset testit (roskadata ja katkaistut paketit on hylättävä). Mitään ei lähetetä minnekään.
OpenPGP selitettynä alusta asti
Yhdellä lauseella: OpenPGP on avoin standardi (RFC 4880, päivitetty RFC 9580:llä vuonna 2024) päästä päähän -salaukselle ja digitaalisille allekirjoituksille, tunnetuimmin sähköpostin suojaamiseen — ja kaikki kulkee pienissä nimetyissä binääripaketeissa, jotka yleensä kääritään tekstiystävälliseen "panssari"-kerrokseen.
Mikä on OpenPGP?

PGP ("Pretty Good Privacy") julkaisi Phil Zimmermann vuonna 1991 ohjelmana, jolla kuka tahansa voi salata ja allekirjoittaa viestejä. Yhden toimittajan ongelman välttämiseksi viestimuoto standardoitiin nimellä OpenPGP (RFC 2440 vuonna 1998, RFC 4880 vuonna 2007, RFC 9580 vuonna 2024). Nykyään GnuPG on yleisin toteutus, ja sama paketti­muoto näkyy myös allekirjoitetuissa git-commiteissa, ohjelmistopakettien allekirjoituksissa, avainpalvelimissa ja OPENPGPKEY-DNS-tietueessa.

Malli on päästä päähän: kumpikin osapuoli luo henkilökohtaisen avainparin; kaikki salattu voi purkaa vain yksityinen avain, joka ei koskaan poistu koneelta. Keskitetyn varmentajan (kuten TLS:ssä) sijaan luottamus muiden avaimiin tulee toistensa avainten allekirjoittamisesta — "luottamusverkko". Käytetäänkö tuota verkkoa vai vain verrataanko sormenjälkiä kanavan ulkopuolella (puhelu, käyntikortti), on valinta; muoto itse ei pakota kumpaakaan.

Mikä on OpenPGP-avain?

OpenPGP-"avain" on oikeastaan pieni nippu paketteja: yksi ensisijainen avainpaketti (henkilöllisyytesi ankkuri, yleensä sallittu allekirjoittamaan), yksi tai useampi käyttäjätunnuspaketti ("Alice <alice@example.com>"), itseallekirjoitukset, jotka sitovat nämä tunnukset ensisijaiseen avaimeen, ja valinnaisesti alaavaimet omilla sitovilla allekirjoituksillaan — tyypillisesti erillinen salausalaavain, jotta arvokas ensisijainen avain voi pysyä offline-tilassa. Koko panssaroitu lohko, jonka liität tälle sivulle, on tämä nippu.

Sormenjälki on ensisijaisen avainpaketin tiiviste — SHA-1 (20 tavua) v4-avaimille, SHA-256 (32 tavua) v6-avaimille — laskettuna vain julkisesta osasta. Avain-ID on vain v4-sormenjäljen 8 viimeistä tavua (v5:ssä 8 ensimmäistä). Sormenjäljet ovat se, jota verrataan kanavan ulkopuolella avaimen siirron varmistamiseksi, ettei kukaan vaihtanut avainta matkalla perille; avain-ID:t ovat lyhyt kahva avainpalvelimille, eivätkä ne ole törmäyksenkestäviä päättäväistä hyökkääjää vastaan.

AlgoritmitunnusNimiTyypillinen käyttö avaimessa
1RSAKlassinen yleiskäyttöinen; 2048–4096 bittiä, allekirjoitus ja/tai salaus
19ECDSANIST-käyrät (P-256 ym.), allekirjoitus
18ECDHCurve25519/P-256-avainsopimus, salausalaavaimet
22EdDSAEd25519-allekirjoitus (nykyinen oletus GnuPG 2.4+:ssa)
25X25519Salausalaavaimet, jotka on pariutettu Ed25519-ensisijaisten avainten kanssa (v6-avaimet)

Yksityinen avainlohko kantaa salaiset luvut julkisen osan jälkeen: S2K-käyttöoktetti kertoo, miten ne on suojattu (0 = suojaamaton, 254/255 = salasanalauseesta johdettu avain salauksella), sen jälkeen salaiset MPI:t ja tarkistussumma. Tämä sivu näyttää suojaustavan, mutta ei koskaan pyydä salasanalausetta eikä yritä purkaa salaista materiaalia.

Mikä on OpenPGP-paketti?

Panssarin alla jokainen OpenPGP-objekti on pakettien sarja. Jokainen alkaa tunnistetavulla: vanha muoto pakkaa siihen 4-bittisen pakettityypin ja pituustyypin, uusi muoto (CTB, bitti 6 asetettu) käyttää 6-bittistä tyyppiä ja pituustavuja, jotka voivat jopa kuvata dataa osittaisina paloina. Yleisiä tunnisteita: 6 = julkinen avain, 5 = salainen avain, 14 = alaavain, 13 = käyttäjätunnus, 2 = allekirjoitus, 4 = yksivaiheinen allekirjoitus, 11 = literaalidata, 8 = pakattu data, 18 = salattu ja MDC-suojattu data. Tämä sivu tulostaa jokaiselle löytämälleen paketille tunnisteen, otsikkomuodon, pituuden ja heksadumpin ja ilmoittaa virheen tavusijainnilla, kun paketin otsikko on virheellinen.

Allekirjoituspaketit kantavat metatietonsa tiivistettyihin ja tiivistämättömiin aliapakettialueisiin. Vain tiivistetty alue kuuluu itse allekirjoitukseen; tiivistämätöntä aluetta (historiallisesti käytettiin allekirjoittajan avain-ID:hen) voi kuka tahansa vapaasti kirjoittaa uudelleen siirron aikana, joten lukijoiden on käsiteltävä sitä vihjeenä, ei tosiasiana. Käyttäjätunnuksen itseallekirjoitus on se, mikä todella sitoo nimen avaimeen; pelkkä avainpaketti yksin, liitettynä sellaisenaan, ei todista kenen se on.

ASCII-panssari on tekstikääre: -----BEGIN PGP PUBLIC KEY BLOCK-----, valinnaiset otsikot kuten Version: tai Comment:, pakettivirran base64 ja lopullinen =xxxx-rivi, jossa on 24-bittinen CRC. Tuo CRC havaitsee vain siirtovirheet — kääntämällä yhden base64-merkin tämä sivu merkitsee sen — mutta se ei ole allekirjoitus eikä todista kirjoittajuutta.

Yleisiä virheitä
  • Avaimen luottaminen ilman sormenjälkien vertailua. Kuka tahansa voi luoda avaimen millä tahansa nimellä. Sormenjälkien vertailu kanavalla, johon luotat jo (henkilökohtaisesti, puhelimitse), on koko todennusvaihe.
  • Panssarin CRC:n sekoittaminen allekirjoitukseen. "CRC OK" -merkki tarkoittaa vain, että base64 säilyi matkalla, ei mitään muuta. Vahvistus on kryptografinen toimenpide, jota tämä sivu tarkoituksella ei tee.
  • Avain-ID:den käyttäminen henkilöllisyytenä. 64-bittisiä avain-ID:itä voi väärentää hyökkääjä kohtuullisella laskentatehollakin ("avain-ID-törmäys"); lainaa aina täydet sormenjäljet.
  • Todellisten yksityisten avainten liittäminen verkkosivuille. Jopa paikallinen, ei-lataava sivu kuten tämä on tapa, jota et halua opettaa itsellesi. Tämän sivun esimerkit ovat kertakäyttöisiä avaimia, jotka on luotu demoa varten.
  • Olettaa, että "PGP MESSAGE" tarkoittaa salattua. Panssarin tunniste ei kerro mitään sisällöstä — tämän sivun esimerkkiviesti on allekirjoitettu mutta selkotekstinen, ja pakettitunniste 18 vs. 11 on se, mikä oikeasti erottaa salatun datan literaalidatasta.
  • v3-avainten tuonti. Versio 3 -avaimet (1996 edeltävä suunnittelu, heikot 16-bittiset avain-ID:t) on vanhentunut vuodesta 2014; tämä tarkastaja hylkää ne tarkoituksella.
UKK

Vahvistaako tämä allekirjoitukset? Ei. Se jäsentää ja näyttää. Allekirjoituksen vahvistus vaatii täyden RFC 9580 -tiivistetrailerin rakenteen, allekirjoittajan julkisen avaimen ja päätöksen siitä, luotatko siihen avaimeen — GnuPG:n tai OpenPGP-kirjaston tehtävä.

Miten tämä eroaa openpgp.js:stä? openpgp.js on täysi toteutus (salaus, purku, allekirjoitus, vahvistus), jonka upotat sovellukseesi; tämä sivu on riippuvuudeton tarkastaja OpenPGP-rakenteiden lukemiseen ja tarkastamiseen selaimessa.

Voiko se lukea GnuPG-vientini? Kyllä — v4-, v5- ja v6-avaimet, irrotetut allekirjoitukset ja viestit. Versio 3 -avaimet hylätään huomautuksella (vanhentunut vuodesta 2014).

Miksi on heksasyötetila? Raaka OpenPGP-data on binääriä; jos on avainrenkaan tai .gpg-tiedoston heksadumppi, liitä heksa, ja jäsennin käsittelee sen täsmälleen kuten dekoodattuja tavuja.

Ladataanko mitään? Ei. Jäsentäminen, sormenjälkien laskenta ja raportin luonti tapahtuvat kaikki tässä välilehdessä; sivu toimii kokonaan selaimessasi.