Autenticando Documento com Blockchain e Ethereum

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

[ Hits: 6.634 ]

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

Obtendo TimeStamps da Blockchain com OpenTimestamps

Access Point com cartão Atheros em Slackware 12.0

Quando próximo, finja estar longe; quando longe, finja estar próximo

Gateway autenticado com Apache, Iptables e CGI em shell

Sistema de arquivos criptografado

Leitura recomendada

FreeBSD + FreeRadius + MySQL

Emuladores para seu sistema operacional

Replicação e balanceamento de carga em servidores usando DNS

Básico do Apache no Debian

Servidor Apache hospedando diversos sites com e sem SSL

  
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