Autenticando Documento com Blockchain e Ethereum

Uma prova conceito prática de que Blockchain é mais fácil e simples do que parece!

[ Hits: 6.297 ]

Por: Carlos Affonso Henriques. em 15/02/2019


Introdução e agradecimentos



Recentemente, publiquei uma dica no Linkedin, que aliás não é de minha autoria, apenas fiz uma tradução da postagem original de Andrew David Wong em Bitcoin Stack Exchange e acrescentei alguns comentários para um melhor entendimento do que vem a ser validação de um documento através do Blockchain.

Agora estou publicando o artigo de uma prova de conceito, desta vez empregando o Ethereum que é uma criptomoeda baseada em Blockchain muito semelhante ao Bitcoin.

Há uma Startup sediada em São Paulo, chamada Original My que emprega exatamente essa tecnologia para autenticação de documentos. A implementação pode não ser igual, mas o conceito é exatamente o mesmo.

Não pretendo, de forma alguma, tirar o pão da boca deles, até porque o trabalho que eles fazem não se resume apenas a autenticar, como também armazenar e prover disponibilidade do material protegido, além de outros fatores agregadores de valor.

Imagine você autenticar seu documento e perde-lo em decorrência da queima de um disco rígido, por exemplo, ou corrupção de um arquivo que venha a deteriorar seu hash.

Aproveito para felicitar pela excelente iniciativa e agradecer a Original My por me inspirar a escrever esse artigo.

Passo a passo

De forma simples e de fácil entendimento, vou demonstrar mais uma vez as possibilidades da Blockchain, desta vez com uma abordagem muito mais simples, sem binários de terceiros, usando somente o GNU/Linux sob a distribuição CentOS, por ser uma distro com foco Enterprise e praticamente um clone do RHEL, mas vale para qualquer distro.

1º passo

Caso não tenha o repositório EPEL instalado em seu CentOS, Fedora ou RHEL, instale-o, pois um dos pacotes que serão necessários encontra-se lá:

ATENÇÃO: certifique-se que o relógio de tempo real do seu sistema esteja correto.

# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Após a instalação, rode o "yum update" para sincronizar sua máquina com o o repositório EPEL:

# yum update

2º passo

Instalar o sha3sum, que é o gerador de hash empregado pela criptomoeda Ethereum, e o OpenSSL e suas dependências:

# yum install openssl openssl-libs openssl-devel lynx sha3sum

No exemplo que darei, o OpenSSL será completamente desnecessário, no entanto, é interessante instala-lo pois dependendo da implementação que você vier a fazer, ele pode vir a ser muito útil, especialmente se você fizer hashes que requeiram unicidade temporal, por exemplo. Como ele e suas dependências são pequenininhos, deixe assim mesmo.

3º passo (opcional)

Só será útil se você fizer uma implementação real, a caráter de exemplo, esse passo pode ser suprimido).

Instalar a carteira do Ethereum que pode ser baixada no portal do projeto, ou ainda criar sua carteira virtual no portal do Blockchain.com.

Existem também APIs e um ecossistema enorme para você integrar suas aplicações em diversas linguagens e plataformas de hardware (ARM,ARM64,MIPS,X86/64). Não vou adentrar em detalhes, pois no portal do projeto há farto material.

Basicamente, um endereço Ethereum válido é um hash sha3sum sem os 8 bytes mais significativos.

Um endereço Ethereum válido, é um hash sha3sum sem o 8 bytes MAIS significativos. Uma vez identificado um endereço válido, para autenticar um documento, basta enviar um pagamento de uma quantia mínima de Ethereum para que seja criado um hash da transação.

Exemplos:

# echo -n "Minha String" | sha3sum | sed -e 's/ -//g' -e 's/.\{16\}//'
# sha3sum MeuDocumento.pdf | sed -e 's/ .*$//' -e 's/.\{16\}//'
# sha3sum <(echo -n "Minha String tratada como um arquivo") | sed -e 's/ .*$//' -e 's/.\{16\}//'

Notem que o hash sha3sum do arquivo, será o endereço Ethereum e a prova de autenticidade, teor e temporalidade será dada pelo hash da TRANSAÇÃO do envio de uma quantia mínima de Ethereum de sua carteira para o endereço gerado.

Exemplo de transação:
Linux: Autenticando Documento com Blockchain e Ethereum
Na imagem o hash da transação acima, está grifado em vermelho. Grifado em azul é o endereço de origem, ou seja, a sua carteira onde você "armazena" os seus Ethereums. E grifado em verde, o endereço válido gerado pelo sha3sum sobre o seu documento. Mais abaixo, grifado em vermelho, a data e hora da criação do hash de TRANSAÇÃO.

Simples assim! Bom trabalho a todos.

   

Páginas do artigo
   1. Introdução e agradecimentos
Outros artigos deste autor

O que é ForceCommand

Debian sem Systemd

Docker - Combatento o COVID-19

TrueCrypt Forever

Reconhecimento de placas de veículos com OpenALPR

Leitura recomendada

Virtual Host no CentOS 7

Configurando Servidor WEB Completo [Apache2 + Postfix/Courier + Bind9 + ISPConfig + Roundcube Webmail]

Endereço fixo para o seu IP dinâmico

Passando pelo Firewall

Laconica - Twitter? Open source? Sim! Eis nosso microbloging de código aberto

  
Comentários
[1] Comentário enviado por fabrasileiro em 09/05/2023 - 23:35h


Sensacional, usual para automatizacao tbm.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts