O que um hash não revela
Por BlockchainSignPublicado a

A afirmação de privacidade da base do registo temporal por hash repousa numa propriedade: um hash não diz nada sobre a coisa de onde provém. Isso é verdade, vale a pena compreender em vez de aceitar por fé, e tem exatamente uma ressalva.
O que é um hash
O SHA-256 recebe qualquer entrada, de qualquer comprimento, e produz uma saída fixa de 256 bits — 64 caracteres hexadecimais. A mesma entrada produz sempre a mesma saída. Uma alteração de um bit produz uma saída completamente diferente.
É uma função unidirecional: fácil de calcular para a frente, inviável de inverter. Não é encriptação. Não há chave, e nada para desencriptar.
"hello" → 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
"hello!" → ce06092fb948d9ffac7d1a376e404b26b7575bef38f9c1b4e7b3fc0d8e4e93e5
Duas entradas separadas por um único carácter, duas saídas totalmente sem relação. Isso é intencional, e é por isso que um hash não vaza nada sobre o conteúdo.
O que publicar um hash não revela
Praticamente tudo:
- O conteúdo. Nenhum texto, nenhuma imagem, nenhum dado.
- O tipo de ficheiro. Um PDF, uma fotografia e uma folha de cálculo produzem todos uma cadeia de 64 caracteres.
- O tamanho. Um ficheiro de um byte e um ficheiro de dez gigabytes têm hashes do mesmo comprimento.
- O nome do ficheiro, autor, datas ou quaisquer metadados, a menos que estejam dentro do ficheiro.
- Se se assemelha a algo mais. Ficheiros semelhantes produzem hashes completamente não relacionados. Não existe correspondência parcial.
Essa última propriedade é o que torna seguro publicá-lo. Um hash não pode ser comparado com outro hash para ver se os ficheiros são parecidos — apenas se são idênticos.
A única ressalva
Existe uma exceção real, e merece ser enunciada claramente em vez de ficar escondida.
Se um documento tiver muito poucos valores possíveis, alguém pode tentar adivinhar e verificar. Fazer o hash de cada candidato e comparar.
Digamos que regista temporalmente um documento cujo conteúdo inteiro é um número entre 1 e 1.000. Um atacante faz o hash dos mil números e encontra o seu instantaneamente. O mesmo se aplica a uma frase curta de um conjunto previsível, uma data, um único nome, ou um modelo com um único campo variável.
Isto não é uma fraqueza no SHA-256 — está a fazer exatamente o que deve. O problema é que o espaço de entrada era pequeno demais para ser pesquisado.
Quando importa: registar temporalmente conteúdos muito curtos e altamente previsíveis.
Quando não importa: qualquer documento real. Um contrato, um manuscrito, um ficheiro CAD, uma fotografia, uma folha de cálculo — o espaço de ficheiros possíveis é astronomicamente grande, e adivinhar não é uma estratégia.
A solução, se precisar de uma: inclua algo imprevisível. Os documentos reais já o fazem, porque contêm texto único, carimbos temporais ou dados. Se genuinamente precisar de se comprometer com um valor minúsculo, adicione uma cadeia aleatória e guarde-a com o documento — o hash cobre então algo impossível de adivinhar.
Porque é que isto importa para o registo temporal
Porque é a propriedade na qual tudo o resto assenta.
O seu ficheiro é convertido em hash no seu navegador. O resultado de 64 caracteres é transmitido, e é o que aparece num registo distribuído público permanentemente. Se essa cadeia revelasse algo sobre o documento, publicá-la seria uma divulgação — e todo o produto seria inutilizável para o material confidencial para o qual se destina.
Não revela. É por isso que um projeto pré-patente, um manuscrito, um documento de negócio sob NDA ou um segredo comercial podem ser registados temporalmente sem nada sair da sua máquina. Veja como provar um segredo comercial sem o divulgar.
Pode verificar o mecanismo em vez de confiar nele: o gerador de hash SHA-256 gratuito corre inteiramente no seu navegador, e funciona com a sua ligação desligada.
O outro lado da mesma propriedade
Porque um hash não revela nada, também não prova nada por si só.
Um hash sem o ficheiro é uma cadeia sem sentido. Para usar um registo temporal, deve produzir o ficheiro original e demonstrar que ele gera o valor registado. Perde o ficheiro e o registo prova que algo existiu, e nada mais.
Esta é a compensação no centro do design: privacidade completa, ao custo de ter de guardar o ficheiro. É uma boa compensação, e não é gratuita.