API do ProofSnap

Segurança da API do ProofSnap e dados hospedados na UE

Em outubro de 2026, a API do ProofSnap captura páginas web em servidores na UE (AWS Frankfurt), armazena cada pacote de provas criptografado com AES-256 e mantém uma segunda cópia dos pacotes de produção na Irlanda. Cada pacote é selado com hashes SHA-256 e uma assinatura RSA-4096 e guardado por 10 anos com controle de acesso.

Atualizado em

O que acontece com seus dados em uma captura

Uma captura feita pela API do ProofSnap ou pelo painel passa por cinco etapas:

  1. Você envia uma URL por HTTPS, pela API com sua chave de API ou pelo painel.
  2. Um navegador executado nos servidores do ProofSnap em Frankfurt carrega a página. Ele só se conecta a endereços públicos. No modo de produção, a URL também é enviada ao Internet Archive, a menos que você desative essa opção.
  3. Cada arquivo recebe um hash SHA-256 e o manifesto é assinado. Somente o hash do manifesto vai para os calendários do OpenTimestamps e, se você solicitar um carimbo do tempo qualificado, para a Disig a.s.
  4. O pacote selado é armazenado criptografado em Frankfurt, com uma segunda cópia na Irlanda dos pacotes criados no modo de produção.
  5. Você baixa o pacote ou, quando ele estiver pronto, recebe um webhook assinado avisando.

Onde a API é hospedada

API
Amazon Web Services na UE, Frankfurt (eu-central-1).
Dados da conta e das capturas
Google Cloud Firestore na UE, Frankfurt (europe-west3).
Login
Firebase Authentication, um serviço global do Google.
Pacotes de provas
Amazon S3 na UE, Frankfurt (eu-central-1), com uma segunda cópia na Irlanda (eu-west-1) de cada pacote criado no modo de produção.

O que é tratado fora da UE

Os pacotes de provas e os dados das capturas ficam em Frankfurt e na Irlanda. Serviços fora da UE só podem tratar os dados limitados listados abaixo:

Captura no servidor

A página é carregada e capturada nos servidores do ProofSnap, não no seu computador. Você envia uma URL e recebe um pacote de provas selado. O navegador de captura só se conecta a endereços públicos: endereços privados, de loopback e dos serviços de metadados da nuvem são recusados, mesmo depois de um redirecionamento.

Por padrão, quando uma captura é feita no modo de produção, a URL também é enviada ao Internet Archive (web.archive.org) para que um instantâneo público independente possa ser criado. URLs que parecem privadas, como links de login, de redefinição de senha e de compartilhamento, ou que carregam um token, nunca são enviadas. Uma URL com query string só é enviada se você definir a opção de captura external_archive como true. Defina-a como false para desativar o arquivamento por completo. O pacote registra o resultado.

Como cada pacote é selado

Hashes
Cada arquivo de prova do pacote recebe um hash SHA-256, que é listado no manifest.json.
Assinatura
O arquivo manifest.json é assinado com uma chave RSA-4096 gerada só para aquele pacote. A chave privada é descartada depois da assinatura, e a chave pública vai junto no pacote.
Âncora no Bitcoin
O hash do manifesto é enviado aos calendários do OpenTimestamps para ancoragem na blockchain do Bitcoin. Quando a ancoragem é confirmada, a prova completa é armazenada junto com o pacote. Se não for possível adicionar a prova, o pacote registra isso.
Carimbo do tempo qualificado
Se você solicitar (somente com chaves de produção, cobrado por carimbo), um carimbo do tempo eletrônico qualificado (RFC 3161) é obtido da Disig a.s., prestador qualificado de serviços de confiança na Lista de Confiança da UE. Se não for possível adicionar o carimbo, o pacote registra isso.
Verificação offline
Cada pacote inclui scripts de verificação (verify.sh para macOS e Linux, verify.ps1 para Windows) que o conferem offline, sem depender do ProofSnap.

Registro de emissão

O ProofSnap registra o hash de cada manifesto que emite. Qualquer pessoa pode consultar um hash com GET /v1/ledger/{hash}; uma correspondência confirma que o ProofSnap emitiu exatamente aquele pacote.

Segunda cópia

Cada pacote de provas criado no modo de produção é copiado para um bucket separado do Amazon S3 em outra região da UE (Irlanda). GET /v1/captures/{id} informa o status da cópia de cada captura. A cópia é excluída junto com o original.

Prazo de guarda

As provas são guardadas por 10 anos a partir da data da captura. Para uma página capturada de forma automática, o prazo conta a partir da última vez em que se constatou que a versão capturada ainda era a atual:

Quando a assinatura do plano termina, você tem 30 dias para baixar tudo. O plano Archive only mantém as provas acessíveis, disponíveis para download e verificáveis mesmo depois que você para de fazer capturas.

Exclusão

Um pacote que você exclui no painel ou pela API vai primeiro para a lixeira, de onde pode ser restaurado em até 30 dias. Depois disso, todas as versões armazenadas são removidas das duas cópias. A exclusão definitiva de um pacote o remove na hora. Quando o prazo de guarda termina, ou quando se encerra o prazo de 30 dias que uma conta tem para baixar seus dados, todas as versões armazenadas são removidas da mesma forma. Uma captura sob retenção legal não pode ser excluída enquanto a retenção estiver ativa. Fica registrado quem excluiu o pacote e quando, mas não o conteúdo dele.

Controle de acesso

Chaves de API
Armazenadas somente como hashes SHA-256. A chave completa é exibida uma única vez, quando é criada. Uma chave revogada para de funcionar em até 60 segundos. No plano Website Archive, as chaves de API são somente leitura: elas listam, baixam e verificam capturas e gerenciam inscrições de webhook. Nesse plano, as capturas e as capturas automáticas são iniciadas no painel.
Login no painel
Firebase Authentication. É preciso confirmar seu endereço de e-mail antes de criar chaves, iniciar capturas ou contratar um plano.
Histórico de acessos
Quando alguém que não é o autor de uma captura, como o proprietário do escritório ou um membro de um caso, baixa, verifica ou acessa a captura de outra forma, esse acesso fica registrado na captura.
Limites de requisições
As requisições de captura, de certificação e as demais requisições cobradas têm limite de frequência por conta, somando todas as chaves dela.

Criptografia

Em trânsito
Todo o tráfego da API, do painel e dos webhooks usa HTTPS (TLS).
Em repouso
Os pacotes de provas são criptografados com AES-256 (criptografia do lado do servidor do Amazon S3) nos dois buckets. Os dois buckets bloqueiam todo acesso público.

Webhooks

Assinatura
As entregas de webhook são assinadas com o esquema Standard Webhooks e HMAC-SHA256. As entregas para uma webhook_url definida em uma requisição ou em uma captura automática são assinadas com o segredo de assinatura da chave de API que a definiu. Esse segredo pode ser trocado com um período de sobreposição de 24 horas. Uma inscrição de webhook da conta tem seu próprio segredo de assinatura, exibido uma única vez quando a inscrição é criada.
Destinos
As entregas vão somente para endpoints HTTPS públicos. Antes de cada entrega, o endereço é resolvido e conferido de novo, e a conexão é feita apenas com o endereço conferido, de modo que endereços privados, de loopback e dos serviços de metadados da nuvem são recusados mesmo depois de uma mudança de DNS. Redirecionamentos não são seguidos.
Novas tentativas
Uma entrega que excede o tempo limite, não consegue se conectar ou recebe uma resposta de erro (exceto 410 Gone) é repetida até 5 vezes ao longo de cerca de 35 horas (depois de 5 min, 30 min, 2 h, 8 h e 24 h) com o mesmo webhook-id, para que o receptor possa descartar duplicatas. Cada tentativa espera no máximo 10 segundos por uma resposta.
Downloads
As entregas repetidas e as entregas de uma inscrição não incluem o link de download válido por 24 horas. O receptor pode obter um novo com GET /v1/captures/{id}.
Inscrições de webhook
Uma inscrição de webhook da conta é desativada quando o endpoint responde com 410 Gone, depois de 5 dias sem nenhuma entrega bem-sucedida ou, se tiver sido criada com uma chave de API, quando essa chave é revogada. Os eventos ficam guardados por 30 dias e podem ser recuperados com GET /v1/events.

Serviços de terceiros

Pagamentos
Os pagamentos são processados pela Stripe. O ProofSnap não armazena números de cartão.
E-mails da conta
A MailerSend envia as mensagens de confirmação de e-mail e de redefinição de senha.
Carimbos do tempo
Os calendários do OpenTimestamps e, para um carimbo do tempo qualificado, a Disig a.s. recebem somente o hash do manifesto, nunca as provas em si.
Consultas DNS e WHOIS
Para documentar o site capturado, o nome do host é resolvido pelo Google Public DNS e pelo Cloudflare DNS, e o registro do domínio é consultado nos serviços públicos de RDAP e WHOIS.

Dúvidas

Escreva para support@getproofsnap.com com qualquer dúvida, para relatar um problema de segurança ou para pedir informações sobre um acordo de tratamento de dados (DPA).

Cadastre-se grátis com 50 capturas de teste