Skip to content
BlockchainSign
pt

O que contém um certificado temporal

Por Publicado a

O que contém um certificado temporal
Photo: RDNE Stock project

Um certificado temporal é um ficheiro pequeno, e cada campo nele existente tem uma razão de ser. Compreender o que cada um faz é o que transforma a confiança cega em algo que pode ser verificado.

Os campos

Um certificado da BlockchainSign é um ficheiro YAML com os seguintes campos:

Campo O que é
version A versão do formato do certificado
provider Quem o emitiu
timestamp A hora do bloco da transação — a data que está a ser provada
blockchain Em qual cadeia o registo está
algorithm A função hash utilizada, SHA-256
payload_hash O hash do bloco de dados, e o que aparece na cadeia
tx_hash O identificador da transação
tx_url Um link para essa transação num explorador de blocos público
payload Três linhas: o email de entrega, o SHA-256 do ficheiro e quaisquer metadados fornecidos

A estrutura é deliberadamente simples. Não há nada proprietário, nada encriptado e nada que necessite do nosso software para ser interpretado.

Por que razão o payload é hashed separadamente

Esta é a parte que vale a pena compreender, porque explica o design.

O payload contém três coisas: um endereço de email, o hash do seu ficheiro e metadados de texto livre, como um nome de autor ou referência de projeto. Não é escrito diretamente na cadeia — o seu próprio hash SHA-256 é.

Duas razões. Primeiro, manter os dados na cadeia com um tamanho fixo de 64 caracteres mantém o custo da transação previsível, independentemente da quantidade de metadados adicionados. Segundo, o payload contém um endereço de email, e não há razão para publicar isso permanentemente num registo distribuído público.

O efeito é uma cadeia de evidências em dois passos: o ficheiro faz hash para um valor dentro do payload, e o payload faz hash para o valor na cadeia. Ambos os passos são reproduzíveis por qualquer pessoa com o certificado.

Verificar por si mesmo, passo a passo

Não precisa de nós para nada disto.

1. Verifique se a transação existe. Abra tx_url. Resolve-se numa transação real num explorador público, com um número de bloco e um timestamp.

2. Leia o que está na cadeia. Encontre os dados de entrada na página da transação e selecione "View as UTF-8". Vê o hash do payload como texto legível.

3. Compare com o certificado. Essa string deve corresponder exatamente a payload_hash.

4. Volte a fazer hash ao payload. Pegue nas três linhas do payload exatamente como aparecem e faça hash com SHA-256. O resultado deve ser igual a payload_hash. Uma ressalva: a indentação YAML adiciona espaços à esquerda que não fazem parte do payload — remova-os antes de fazer hash, caso contrário o valor não corresponderá.

5. Volte a fazer hash ao seu ficheiro. shasum -a 256 yourfile.pdf no macOS ou Linux, certutil -hashfile yourfile.pdf SHA256 no Windows, ou utilize a ferramenta de hash gratuita no seu navegador. Compare com a linha File SHA-256 no payload.

Se todos os cinco pontos estiverem corretos, estabeleceu que este ficheiro exato foi comprometido num registo distribuído público nesse momento do bloco, e que nada mudou desde então.

O que o certificado não lhe diz

Ser claro sobre os limites é o que torna o resto credível:

  • Quem criou o ficheiro. O certificado regista que alguém o detinha. Veja prova de existência vs prova de autoria.
  • O que o ficheiro contém. Apenas o seu hash é registado. Qualquer pessoa que verifique a cobertura precisa do ficheiro em si, o que é a propriedade que torna isto utilizável para documentos confidenciais.
  • Que os metadados são verdadeiros. O campo de texto livre diz o que digitou. Está fixo naquele momento e inalterável depois, o que é útil — mas o registo distribuído não o verifica.
  • Qualquer estatuto legal. É uma evidência, não um registo ou um direito.

Guarde o ficheiro, byte a byte

A forma mais comum de as pessoas perderem o valor de um certificado é perdendo o ficheiro exato.

Um hash cobre uma sequência exata de bytes. Re-gravar um documento, exportá-lo novamente ou deixar que uma aplicação reescreva os metadados produz um ficheiro diferente com um hash diferente — e o certificado já não corresponderá. Arquive a versão certificada separadamente e trabalhe numa cópia.

O próprio certificado também vale a pena guardar, embora menos criticamente: o hash do payload está na cadeia, pelo que um certificado pode ser reconstruído a partir de dados públicos enquanto souber qual foi a respetiva transação.

Perguntas frequentes

Preciso do vosso site para verificar um certificado?
Não. Cada verificação pode ser feita com um explorador de blocos público e qualquer ferramenta SHA-256. Abra o URL da transação, leia os dados de entrada como UTF-8, compare-os com o hash da carga útil, depois volte a calcular o hash da carga útil e do ficheiro. Nada nesta sequência envolve o nosso software, o que é intencional.
Porque é que o meu recálculo do hash da carga útil não corresponde?
Quase sempre devido à indentação YAML. A carga útil aparece no certificado com espaços iniciais que fazem parte da formatação do ficheiro, e não fazem parte da carga útil que está a ser calculada. Remova os espaços em branco iniciais de cada linha antes de calcular o hash e o valor corresponderá.
O que acontece se eu perder o ficheiro do certificado?
Menos do que poderia temer, desde que saiba qual foi a respetiva transação: o hash da carga útil está na cadeia, pelo que o certificado pode ser reconstruído. O que não deve perder é o ficheiro original, byte a byte — sem ele não há nada para calcular o hash e comparar, e guardar novamente um documento altera os seus bytes.

Prove hoje que o seu trabalho já existia

Crie um registo temporal de qualquer ficheiro na blockchain Ethereum e receba um certificado inviolável e vitalício. O seu ficheiro nunca sai do seu navegador.