O que é HPKP?

HPKP é um cabeçalho de resposta de segurança da Web obsoleto, a sigla significa HTTP Public Key Pins. O objetivo era evitar que uma autoridade de certificação comprometida ou desonesta emita um certificado HTTPS publicamente confiável, mas controlado por hacker, para um site. Nesse cenário, os hackers seriam capazes de descriptografar qualquer tráfego HTTPS interceptado para o site afetado.

Dica: Os cabeçalhos de resposta da Web são pedaços de metadados que o servidor inclui ao responder às solicitações. Um pequeno subconjunto deles é conhecido como cabeçalhos de segurança, pois eles habilitam e configuram vários recursos de segurança.

Infraestrutura de certificado HTTPS

A infraestrutura de certificado na qual o HTTPS é construído é baseada em uma rede de confiança. Várias empresas atuam como autoridades de certificação (CA) que publicam um ou mais certificados raiz. Um conjunto de certificados raiz está incluído em todos os dispositivos em um armazenamento confiável. Quando um site solicita um certificado HTTPS próprio de uma CA, o certificado é assinado por um certificado raiz. Quando seu computador vê um certificado HTTPS, ele verifica a assinatura. Se o certificado for assinado por um certificado raiz em que ele confia, o seu computador também confia no certificado HTTPS.

Dica: Uma CA também pode ter certificados intermediários assinados pelo certificado raiz. Esses certificados intermediários também podem ser usados ​​para assinar certificados HTTPS para sites.

O trabalho de uma autoridade de certificação é apenas emitir um certificado quando ela tiver verificado que a pessoa que o solicita é o proprietário genuíno do site. A ideia com essa estrutura é que, se um hacker criar seu próprio certificado para um site, ele não será assinado por uma CA em que seu computador confia e, portanto, você verá um aviso.

O que HPKP fez?

Todo o sistema de certificação depende da confiabilidade das autoridades de certificação. Originalmente, no entanto, não havia proteções contra o comprometimento de uma CA por hackers ou se tornasse desonesta e optasse por emitir certificados incorretamente.

HPKP foi projetado para ser uma proteção contra essa possibilidade. Ele permite que os sites especifiquem uma lista exclusiva de certificados que podem ser confiáveis ​​para o site em um processo denominado pinning. Era possível fixar o certificado raiz ou intermediário, essencialmente permitindo que uma única CA emita certificados para o site. Também foi possível fixar o certificado do próprio site, impedindo até mesmo a CA certa de emitir outro certificado válido.

Tecnicamente, não é o próprio certificado que é fixado, mas um hash da chave do certificado. Um hash é uma função criptográfica unilateral. Isso significa que é possível verificar se o certificado apresentado ao navegador pelo site corresponde a um certificado fixado, mas não é possível usar o hash para fazer um certificado válido.

O HPKP exigia que pelo menos duas chaves fossem fixadas, pelo menos uma delas deve ser um backup e não na cadeia de certificados atual. Este backup permite que você configure uma transferência suave para um novo certificado que não impede que os usuários se conectem.

Se o certificado HTTPS apresentado ao navegador pelo site não corresponder a um dos certificados fixados, o navegador será obrigado a rejeitá-lo e evitar que o usuário ignore a mensagem de erro do certificado.

Estrutura de HPKP

O cabeçalho HPKP possui três partes obrigatórias e duas opcionais. O cabeçalho deve ser intitulado “Public-Key-Pins”, os próximos dois ou mais certificados precisam ter um hash SHA256 codificado em base64 fixado no formato 'pin-sha256 = ””'. A parte final obrigatória é a “idade máxima”, que é uma contagem em segundos por quanto tempo o navegador deve aplicar as restrições.

Dica: SHA256 é o algoritmo de hash usado pelo HPKP. Base64 é um conjunto de caracteres com 64 caracteres: 0-9, az, AZ e os caracteres especiais “+” e “/”. O “=” é usado para preencher até os dois últimos caracteres, se necessário. 

As configurações opcionais são “includeSubDomains” e “report-uri”. “IncludeSubDomains instrui o navegador a aplicar as proteções HPKP a qualquer subdomínio do site atual durante o cronômetro de“ idade máxima ”. “Report-uri” é um recurso que permite que um site seja especificado para onde os relatórios de erros podem ser enviados e é projetado para ajudar a identificar e resolver problemas.

Há uma segunda variante do cabeçalho intitulada “Public-Key-Pins-Report-Only”. Tudo é igual, porém, se um erro for encontrado, nenhuma ação é tomada além de retornar uma mensagem de erro ao navegador e ao “uri-relatório” se houver um configurado. A variante do relatório apenas foi projetada para permitir o teste em escala real do cabeçalho antes da implantação, onde os erros não causariam problemas para os usuários.

Problemas com HPKP

HPKP foi preterido por dois motivos principais. O cabeçalho poderia causar problemas sérios para o site que o usava de duas maneiras: HPKP Suicide e Ransom PKP.

HPKP Suicide é um problema em que os proprietários legítimos do site perdem o acesso a todas as chaves fixadas. Isso pode acontecer por meio de exclusão acidental, hacking, vírus, corrupção de dados ou por muitos outros motivos. Devido à complexidade da implementação correta do HPKP e, principalmente, de mantê-lo atualizado durante a rotação de certificados, é relativamente fácil cometer um erro de configuração. Com o HPKP, no entanto, se você errar, todos os visitantes recentes do seu site serão impedidos de acessar o seu site durante o cronômetro de “idade máxima”. O site smashingmagazine.com postou um artigo detalhando sua experiência exatamente com esse problema, o que basicamente deixou o site offline para a maioria dos visitantes por quatro dias antes de uma correção ser implantada.

Ransom PKP é um ataque teórico em que um hacker obtém acesso a um servidor da web, rouba todos os certificados e chaves confiáveis ​​e exige um resgate pela sua devolução. Em uma configuração normal, você poderia apenas gerar novas chaves e certificados e ter o site de volta em funcionamento em menos de uma hora. Com o HPKP habilitado, no entanto, essas chaves são fixadas; se você não puder fornecer um certificado fixado aos usuários, eles não poderão acessar o site durante o temporizador de “idade máxima”. Dependendo da configuração e se houver backups, pode ser impossível resolver esse problema.

Com esses dois problemas, novos usuários seriam capazes de acessar o site normalmente, já que nunca teriam visto o antigo cabeçalho HPKP instruindo seu navegador a confiar apenas nos certificados ausentes. Todos os visitantes recentes, no entanto, como clientes regulares e leitores, teriam que esperar por toda a duração do cronômetro de “idade máxima”.

Dada a gravidade desses problemas e a complexidade da configuração e manutenção, o uso do cabeçalho HPKP era muito baixo. Eventualmente, os principais navegadores concordaram em retirar totalmente o suporte para ele e, em alguns anos, o cabeçalho HPKP foi universalmente descontinuado.



Leave a Comment

Como forçar o Google Chrome a sempre mostrar URLs completos

Como forçar o Google Chrome a sempre mostrar URLs completos

O Chrome, por padrão, não mostra o URL completo. Você pode não se importar muito com esse detalhe, mas se por algum motivo precisar que o URL completo seja exibido, instruções detalhadas sobre como fazer o Google Chrome exibir o URL completo na barra de endereço.

Como recuperar o Reddit antigo

Como recuperar o Reddit antigo

O Reddit mudou seu design mais uma vez em janeiro de 2024. O redesenho pode ser visto por usuários de navegadores de desktop e restringe o feed principal ao mesmo tempo que fornece links

Como copiar conteúdo de livros didáticos com o Google Lens

Como copiar conteúdo de livros didáticos com o Google Lens

Digitar sua frase favorita do seu livro no Facebook é demorado e cheio de erros. Aprenda a usar o Google Lens para copiar texto de livros para seus dispositivos.

Corrigir endereço DNS do servidor não encontrado no Chrome

Corrigir endereço DNS do servidor não encontrado no Chrome

Às vezes, quando você está trabalhando no Chrome, você não consegue acessar determinados sites e recebe um erro “O endereço DNS do servidor de correção não foi encontrado no Chrome”. Veja como você pode resolver o problema.

Guia rápido sobre como criar lembretes no Google Home

Guia rápido sobre como criar lembretes no Google Home

Os lembretes sempre foram o grande destaque do Google Home. Eles certamente tornam nossa vida mais fácil. Vamos fazer um tour rápido sobre como criar lembretes no Google Home para que você nunca deixe de cuidar de tarefas importantes.

Netflix: alterar senha

Netflix: alterar senha

Como alterar sua senha no serviço de streaming de vídeo Netflix usando seu navegador preferido ou aplicativo Android.

Como desativar o prompt de restauração de páginas no Microsoft Edge

Como desativar o prompt de restauração de páginas no Microsoft Edge

Se você quiser se livrar da mensagem Restaurar páginas no Microsoft Edge, simplesmente feche o navegador ou pressione a tecla Escape.

Bitwarden: Como alterar sua dica de senha mestra

Bitwarden: Como alterar sua dica de senha mestra

Se a dica de senha do Bitwarden puder ser melhorada, estas são as etapas para alterá-la em menos de um minuto.

Imagens que não aparecem no Google Doc: por que e como corrigir

Imagens que não aparecem no Google Doc: por que e como corrigir

Se suas imagens não aparecerem em um Documento Google, o problema pode ocorrer por vários motivos. Aqui estão algumas soluções potenciais

Ocultar e exibir linhas e colunas no Planilhas Google

Ocultar e exibir linhas e colunas no Planilhas Google

Domine o aplicativo Planilhas Google aprendendo como ocultar e exibir colunas. Você pode fazer isso em computadores e dispositivos móveis.