Inspetor de chaves OpenPGP e analisador de pacotes

Cole uma chave, assinatura ou mensagem OpenPGP em armadura — ou carregue um ficheiro .gpg binário — e veja a impressão digital, o ID da chave, os IDs de utilizador, as subchaves, os pacotes de assinatura e a árvore de pacotes em bruto. Tudo no seu navegador; nada é enviado.
Apenas analisador. Esta ferramenta descodifica e mostra dados OpenPGP — nunca verifica criptograficamente assinaturas, nunca decifra e nunca pede palavras-passe. Para verificar ou decifrar de facto, use o GnuPG (gpg --verify, gpg -d) com o seu próprio conjunto de chaves. E, como em qualquer ferramenta, as chaves privadas reais pertencem ao seu conjunto de chaves, não a um separador do navegador.
Aceita todos os tipos de armadura: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
exportação binária de conjunto de chaves / .sig / .gpg — lido localmente, nunca enviado
O que esta ferramenta verifica — e o que deliberadamente não verifica
Descodifica a armadura (rótulo, cabeçalhos, carga em base64, a soma de controlo CRC-24 de transporte), analisa todos os pacotes nos formatos de cabeçalho antigo e novo, lê pacotes de chave v4/v5/v6 (algoritmo, tamanhos de MPI, data de criação), calcula impressões digitais v4 (SHA-1) e v6 (SHA-256), deriva IDs de chave, lista IDs de utilizador, subchaves e subpacotes de assinatura. Não verifica assinaturas (isso exige toda a maquinaria de hash e verificação do RFC 9580 §5.2.4 mais um conjunto de chaves de confiança), não decifra e não obtém chaves de servidores de chaves. Confronte qualquer resultado com o GnuPG: gpg --show-keys ficheiro.asc mostra a impressão digital e os IDs de utilizador, gpg --list-packets ficheiro.asc despeja a estrutura dos pacotes.
Chaves de exemplo nesta página — os quatro botões Exemplo colam uma chave OpenPGP v4 RSA-2048 real, gerada apenas para esta página (nunca usada em lado nenhum). A chave privada de exemplo está guardada sem cifra (utilização S2K 0) de propósito, para que o analisador possa mostrar a disposição das MPI secretas; uma chave privada exportada real mostraria a sua cifra e a derivação S2K.
Autoteste
Volta a executar o analisador contra a chave de exemplo incorporada, uma assinatura separada e uma mensagem assinada: rótulos de armadura, verificação CRC-24 e corrupção deliberada, sequências de etiquetas de pacote, impressão digital v4 e ID da chave comparados com valores calculados de forma independente, IDs de utilizador, impressões digitais de subchaves, deteção de chave secreta, mais testes negativos (entrada inválida e pacotes truncados têm de ser rejeitados). Nada é enviado para lado nenhum.
OpenPGP explicado do zero
Em resumo: OpenPGP é uma norma aberta (RFC 4880, atualizada pelo RFC 9580 em 2024) para cifragem de ponta a ponta e assinaturas digitais, sobretudo conhecida por proteger o correio eletrónico — e tudo circula em pequenos pacotes binários rotulados, normalmente envolvidos numa camada de "armadura" amiga do texto.
O que é o OpenPGP?

O PGP ("Pretty Good Privacy") foi lançado por Phil Zimmermann em 1991 como um programa que qualquer pessoa podia usar para cifrar e assinar mensagens. Para sair do problema de um único fornecedor, o formato de mensagem foi normalizado como OpenPGP (RFC 2440 em 1998, RFC 4880 em 2007, RFC 9580 em 2024). Hoje o GnuPG é a implementação mais comum, e o mesmo formato de pacotes aparece também em commits git assinados, na assinatura de pacotes de software, em servidores de chaves e no registo DNS OPENPGPKEY.

O modelo é de ponta a ponta: você e o seu correspondente geram cada um um par de chaves pessoal; tudo o que é cifrado para si só pode ser decifrado pela sua chave privada, que nunca sai da sua máquina. Em vez de uma autoridade de certificação central (como no TLS), a confiança nas chaves dos outros vem de assinar as chaves uns dos outros — a "teia de confiança". Usar essa teia ou simplesmente comparar impressões digitais por outra via (uma chamada telefónica, um cartão de visita) é uma escolha sua; o próprio formato não obriga a nenhuma das duas.

O que é uma chave OpenPGP?

Uma "chave" OpenPGP é na verdade um pequeno conjunto de pacotes: um pacote de chave primária (âncora da sua identidade, normalmente autorizada a assinar), um ou mais pacotes de ID de utilizador ("Alice <alice@example.com>"), autoassinaturas que ligam esses IDs à chave primária e, opcionalmente, subchaves com as suas próprias assinaturas de ligação — normalmente uma subchave de cifragem separada, para que a preciosa chave primária possa ficar offline. Todo o bloco em armadura que cola nesta página é esse conjunto.

A impressão digital é o hash do pacote de chave primária — SHA-1 (20 bytes) para chaves v4, SHA-256 (32 bytes) para chaves v6 — calculado apenas sobre a parte pública. O ID da chave são apenas os últimos 8 bytes de uma impressão digital v4 (os primeiros 8 para v5). As impressões digitais são o que se compara por outra via para garantir que ninguém trocou a chave no caminho até si; os IDs de chave são um identificador curto para servidores de chaves e não são seguros contra colisões por um atacante determinado.

ID do algoritmoNomeUtilização típica numa chave
1RSAClássica, polivalente; 2048–4096 bits, assinar e/ou cifrar
19ECDSACurvas NIST (P-256 etc.), assinatura
18ECDHAcordo de chave Curve25519/P-256, subchaves de cifragem
22EdDSAAssinatura Ed25519 (o padrão moderno no GnuPG 2.4+)
25X25519Subchaves de cifragem emparelhadas com chaves primárias Ed25519 (chaves v6)

Um bloco de chave privada transporta os números secretos depois da parte pública: um octeto de utilização S2K que indica como estão protegidos (0 = não protegido, 254/255 = chave derivada de palavra-passe com uma cifra), depois as MPI secretas e uma soma de controlo. Esta página mostra esse modo de proteção, mas nunca pede uma palavra-passe nem tenta decifrar o material secreto.

O que é um pacote OpenPGP?

Por baixo da armadura, todo o objeto OpenPGP é uma sequência de pacotes. Cada um começa com um byte de etiqueta: o formato antigo mete um tipo de pacote de 4 bits e um tipo de comprimento nele, o formato novo (CTB, bit 6 ativo) usa um tipo de 6 bits e bytes de comprimento que podem até descrever dados em blocos parciais. Etiquetas comuns: 6 = chave pública, 5 = chave secreta, 14 = subchave, 13 = ID de utilizador, 2 = assinatura, 4 = assinatura de uma passagem, 11 = dados literais, 8 = dados comprimidos, 18 = dados cifrados e protegidos por MDC. Esta página imprime a etiqueta, o formato do cabeçalho, o comprimento e um despejo hexadecimal de cada pacote que encontra, e assinala erros com a posição do byte quando um cabeçalho de pacote está mal formado.

Os pacotes de assinatura transportam os seus metadados em áreas de subpacotes com hash e sem hash. Só a área com hash é coberta pela própria assinatura; a área sem hash (usada historicamente para o ID da chave emissora) pode ser reescrita livremente por qualquer pessoa em trânsito, pelo que os leitores a devem tratar como uma pista e nunca como facto. A autoassinatura de um ID de utilizador é o que realmente liga o nome à chave; um pacote de chave, colado sozinho, não prova a quem pertence.

A armadura ASCII é o invólucro de texto: -----BEGIN PGP PUBLIC KEY BLOCK-----, cabeçalhos opcionais como Version: ou Comment:, o base64 do fluxo de pacotes e uma linha final =xxxx com um CRC de 24 bits. Esse CRC apenas deteta corrupção de transporte — trocar um carácter do base64 e esta página assinala-o — mas não é uma assinatura e não prova nada sobre a autoria.

Erros comuns
  • Confiar numa chave sem comparar impressões digitais. Qualquer pessoa pode gerar uma chave com qualquer nome. A comparação das impressões digitais por um canal em que já confia (pessoalmente, por telefone) é todo o passo de autenticação.
  • Confundir o CRC da armadura com uma assinatura. Um distintivo "CRC OK" significa apenas que o base64 sobreviveu à viagem, nada mais. A verificação é uma operação criptográfica que esta página deliberadamente não executa.
  • Usar IDs de chave como identidade. Os IDs de chave de 64 bits podem ser forjados por um atacante com poder de cálculo moderado (uma "colisão de ID de chave"); cite sempre impressões digitais completas.
  • Colar chaves privadas reais em páginas web. Mesmo uma página local, sem envio, como esta, é um hábito que não deve criar. As chaves de exemplo aqui são chaves descartáveis geradas para a demonstração.
  • Assumir que "PGP MESSAGE" significa cifrada. A etiqueta da armadura não diz nada sobre o conteúdo — a mensagem de exemplo nesta página está assinada mas em texto simples, e é o número de etiqueta de pacote 18 ou 11 que distingue de facto os dados cifrados dos dados literais.
  • Importar chaves v3. As chaves da versão 3 (desenho anterior a 1996, IDs de chave fracos de 16 bits) estão obsoletas desde 2014; este inspetor rejeita-as de propósito.
FAQ

Isto verifica assinaturas? Não. Analisa e mostra. A verificação de assinaturas exige a construção completa de trailer de hash do RFC 9580, a chave pública do assinante e uma decisão sobre confiar nessa chave — a tarefa do GnuPG ou de uma biblioteca OpenPGP.

Em que é isto diferente do openpgp.js? O openpgp.js é uma implementação completa (cifra, decifra, assina, verifica) que incorpora na sua aplicação; esta página é um inspetor sem dependências para ler e auditar estruturas OpenPGP no navegador.

Consegue ler a minha exportação do GnuPG? Sim — chaves v4, v5 e v6, assinaturas separadas e mensagens. As chaves da versão 3 são recusadas com uma nota (obsoletas desde 2014).

Porque existe um modo de entrada hexadecimal? Os dados OpenPGP em bruto são binários; se tiver um despejo hexadecimal de um conjunto de chaves ou de um ficheiro .gpg, cole o hexadecimal e o analisador trata-o exatamente como os bytes descodificados.

É enviado algo? Não. A análise, a geração de impressões digitais e a criação do relatório acontecem neste separador; a página corre inteiramente no seu navegador.