Pular para o conteúdo
buybitcoinsmart

Glossário / Referência do desenvolvedor

PP pki data

O que é PP pki data?
PP pki data era o campo de uma solicitação de pagamento BIP70 que carregava os certificados do comerciante, codificados em DER, com o certificado folha primeiro, os intermediários atrás dele e a raiz omitida.

Especificação no BIP-70.

Uma assinatura não vale nada sem a chave pública que a verifica, e o BIP70 enviava essa chave dentro de um certificado, e não sozinha. O campo continha um pequeno invólucro protobuf em torno de uma lista de certificados DER brutos, ordenados do comerciante para fora. O que ele continha decidia se uma carteira mostrava o nome de uma empresa ou um simples aviso.

Como funciona

Status: histórico. PP pki data era o campo 3 dos cinco de uma mensagem PaymentRequest, e o Bitcoin Core excluiu o código que o lia na versão 0.20.0, lançada em 3 de junho de 2020.

Dentro dos bytes havia uma mensagem protobuf chamada X509Certificates com exatamente um campo repetido, cada entrada um certificado completo em forma binária. A ordem era especificada, e não deixada ao gosto de cada um: o certificado do próprio comerciante vinha primeiro, depois os intermediários necessários para chegar a uma raiz pública.

A própria raiz estava deliberadamente ausente, e o raciocínio se generaliza muito além do BIP70. Uma raiz que você recebe da parte que está tentando verificar não prova nada, já que qualquer um pode gerar uma e assinar com ela o que quiser. A confiança tem de vir de uma lista que seu dispositivo já possui.

O DER, a codificação usada, é a forma binária canônica do ASN.1: uma estrutura, exatamente uma sequência de bytes válida. O conhecido formato PEM, com suas linhas BEGIN CERTIFICATE, é esses mesmos bytes em base64, o que ocupa cerca de um terço a mais de espaço, então o formato de transmissão é sempre o bruto.

Os certificados dominavam o tamanho de uma solicitação. Saídas, um carimbo de data e hora e uma nota podiam somar algumas centenas de bytes, enquanto um certificado RSA-2048 sozinho carrega um módulo de 256 bytes e uma assinatura de 256 bytes antes de contar qualquer nome ou extensão, e dois deles em sequência chegam a milhares. Onde o pki type era "none", o campo ficava simplesmente vazio e uma carteira não tinha nada a mostrar além do destino.

Onde você vê isso

A mesma lista de certificados, na mesma ordem de folha primeiro, chega em cada conexão HTTPS que você faz.

Um servidor TLS envia primeiro o próprio certificado e depois os intermediários, omitindo a raiz pelo motivo acima. Você pode ler a lista exata que qualquer site envia com um único comando, openssl s_client -showcerts -connect example.com:443, e o que é impresso é o material idêntico que o BIP70 carregava, mostrado em PEM e não em binário.

Para quem compra bitcoin, a lição está no que esses bytes não dizem. Uma cadeia válida prova que alguma autoridade verificou o controle de um nome de domínio no momento da emissão. Ela não diz nada sobre quem é o dono da empresa, se a página é um clone de uma corretora ou se essa corretora consegue atender aos saques. Sites de phishing carregam certificados totalmente válidos, obtidos de graça e em segundos, e o cadeado que eles produzem é indistinguível do verdadeiro.

Então leia o domínio, não o cadeado. Chegue a uma corretora por um favorito que você criou uma vez, e não por um anúncio de busca, e trate um aviso de certificado em um site que guarda seu dinheiro como um ponto final, e não como um convite a prosseguir.

PP pki data vs cadeia de certificados

PP pki data era um contêiner; a cadeia de certificados é o que ia dentro dele. Falar de pki data só faz sentido ao ler a documentação do BIP70 ou o código-fonte arquivado de carteiras, porque nada mais jamais usou o termo. Uma cadeia, por outro lado, é algo vivo do qual você depende diariamente, e a regra de ordenação que o BIP70 registrou, folha primeiro com a raiz omitida, é a regra que o TLS ainda segue.

Não confundir com

Perguntas frequentes

Por que o certificado raiz nunca era incluído em uma solicitação de pagamento?

Porque uma raiz fornecida pelo remetente não prova nada. Qualquer um pode criar uma raiz e assinar com ela o que quiser, então a confiança tem de vir da lista já instalada no seu dispositivo, e não de bytes que o comerciante decidiu anexar.

Um certificado válido significa que é seguro usar uma corretora?

Não. Significa que alguém provou a uma autoridade de certificação que controlava aquele nome de domínio. Ele não traz informação alguma sobre o licenciamento, a solvência ou a honestidade da empresa, e um domínio parecido obtém um certificado válido com a mesma facilidade.

Termos relacionados

Mais em Referência do desenvolvedor

Ler esta página em inglês