Pular para o conteúdo
buybitcoinsmart

Glossário / Referência do desenvolvedor

PP pki type

O que é PP pki type?
PP pki type era a string de uma só palavra em uma solicitação de pagamento BIP70 que dizia como o comerciante a havia assinado: none, x509 com SHA-256 ou x509 com SHA-1.

Especificação no BIP-70.

Todo protocolo que assina algo precisa nomear o algoritmo, e nomeá-lo em um campo controlado pelo remetente é como começam os ataques de downgrade. O BIP70 oferecia três valores, um dos quais já era considerado fraco anos antes de a especificação ser escrita. Os navegadores terminaram de expulsar os certificados SHA-1 em janeiro de 2017, e o protocolo de pagamento nunca publicou uma atualização.

Como funciona

Status: histórico. PP pki type era o campo 2 de PaymentRequest, com a string "none" como padrão, e está ausente do Bitcoin Core desde a versão 0.20.0, de 3 de junho de 2020.

Três valores foram definidos e nenhum quarto foi registrado, embora a especificação deixasse espaço para um.

"none" significava uma solicitação não assinada. O campo de certificado ficava vazio, o campo de assinatura ficava vazio, e uma carteira podia mostrar o valor e o destino, mas nenhuma identidade. A maioria das solicitações em circulação era exatamente isso.

"x509+sha256" significava que o comerciante serializava a mensagem inteira com o campo de assinatura em branco, calculava o hash do resultado com SHA-256 e assinava esse hash com a chave privada do primeiro certificado da cadeia anexada.

"x509+sha1" significava o mesmo procedimento com SHA-1 no lugar de SHA-256.

Oferecer a opção fraca é a parte interessante. Um verificador que aceita qualquer algoritmo indicado pelo remetente é tão forte quanto o pior algoritmo que ainda aceita, e por isso os projetos posteriores fixam o conjunto aceitável do lado do verificador em vez de lê-lo da mensagem. O SHA-1 era um candidato ruim mesmo em 2013. Um ataque de colisão mais rápido que a força bruta foi publicado em 2005, e o NIST proibiu o uso do SHA-1 para gerar novas assinaturas digitais depois de 2013. As autoridades certificadoras deixaram de emitir certificados SHA-1 no fim de 2015, o Chrome 56 deixou de confiar neles em janeiro de 2017, e uma colisão pública completa veio um mês depois.

Onde você encontra isso

O próprio Bitcoin fornece o contraexemplo de um algoritmo de assinatura nomeado pelo remetente, e vale a pena guardá-lo.

Uma transação de bitcoin nunca negocia seu algoritmo de assinatura com quem a valida. A saída gasta resolve a questão: uma saída anterior ao Taproot é verificada com ECDSA sobre secp256k1, e uma saída que paga a uma chave Taproot é verificada com Schnorr nos termos do BIP340, uma regra ativada no bloco 709.632 em novembro de 2021. Quem gasta não pode propor algo mais barato de quebrar, porque a escolha foi fixada quando os bitcoins foram recebidos.

Essa diferença explica por que uma camada baseada em certificados se encaixava tão mal sobre o bitcoin. As regras de consenso se aplicam igualmente a todos e mudam apenas por atualização coordenada, enquanto um campo que nomeia um algoritmo é uma negociação, e negociações sofrem downgrade.

Se você está escolhendo onde comprar em vez de escrever software, a versão útil é limitada, mas real. Uma plataforma que mantém viva uma opção criptográfica obsoleta "por compatibilidade" está dizendo como pesa a conveniência contra a segurança, e esse julgamento também se aplica às partes do sistema que você não pode inspecionar.

PP pki type vs assinatura SSL

PP pki type nomeava um esquema; a assinatura SSL era o resultado de executá-lo. Tratar os dois como uma só coisa torna confusa a documentação antiga do BIP70, porque uma solicitação podia nomear um tipo e não trazer assinatura alguma, que é precisamente o que "none" significava. O TLS moderno mantém o mesmo par, com um identificador de algoritmo registrado ao lado dos bytes da assinatura, mas um cliente não aceita mais todos os identificadores que já foram válidos.

Não confundir com

Perguntas frequentes

A maioria das solicitações de pagamento BIP70 era de fato assinada?

Não. O campo tinha none como padrão, ou seja, nenhum certificado e nenhuma assinatura, e esse era o caso comum. Uma carteira que recebia uma podia mostrar o valor e o destino, mas não tinha identidade do comerciante para exibir.

O bitcoin permite que o remetente escolha o algoritmo de assinatura?

Não, e isso é uma força deliberada. A saída gasta determina se valem as regras de ECDSA ou as de Schnorr, então ninguém pode pedir uma opção mais fraca. O Taproot acrescentou a verificação Schnorr no bloco 709.632 em novembro de 2021.

Termos relacionados

Mais em Referência do desenvolvedor

Ler esta página em inglês