Entendendo a Criptografia do Bitcoin

Uma das principais tecnologias que permitiu a criação do Bitcoin é a tecnologia de assinatura e criptografia de chave publica/privada.

Para entender como funciona o processo de assinatura digital do Bitcoin, vamos entender como funciona o processo de criptografia e assinatura digital de forma genérica e depois explicarei as especificidades no Bitcoin.

Assinatura Digital

Uma breve história

O processo de assinar um documento em papel tem um objetivo: Garantir a autoria de um documento ou a aceitação daquele documento.

O mundo digital precisava de uma forma de reproduzir esse objetivo e em 1976 Whitfield Diffie e Martin Hellman descreveram a primeira noção de um esquema de assinatura digital. Logo depois Ronald Rivest, Adi Shamir e Len Adleman inventaram o algorítmo RSA que pode ser utilizado para os processos mais primitivos de assinatura digital.

O algorítmo RSA foi criado como prova de conceito e não era seguro, mesmo assim foi utilizado no famoso Lotus Notes como método de assinatura digital.

Em 1988 Shafi Goldwasser, Silvio Micali e Ronald Riverst apresentaram o esquema GMR de assinatura que foi o primeiro sistema seguro de assinatura digital.

O que é assinatura digital?

O processo de assinatura digital é composto por basicamente 3 partes:

  • Chave de assinatura
  • Documento, Texto, Arquivo, etc.
  • Algoritmo de Hash

Chave de assinatura

A chave de assinatura é uma sequencia de caracteres única que é gerada por um algoritmo e é utilizada em conjunto com o documento para gerar uma outra sequencia de caracteres que representa a assinatura digital.

Essa chave além de única precisa ser guardada e jamais compartilhada por isso chamamos essa chave de Chave Privada.

Para trazer para um exemplo mais cotidiano, vou fazer uma analogia com uma receita de comida.

Quase toda família tem, normalmente uma avó, que tem uma receita secreta de alguma comida deliciosa que mesmo sem ter visto ela cozinhando temos certeza que foi ela que fez. O sabor, textura, aroma dessa comida tem a assinatura da avó!

A chave de assinatura nesse exemplo é a receita. Para ter aquele sabor, aquela textura, aquele aroma, é necessário seguir a receita à risca tanto nos ingredientes como na ordem de mistura, tempo de descanso, tempo de cozimento, etc.

Depois que a comida está preparada não é possível descobrir a receita e essa é a ideia principal do modelo de assinatura digital, conhecemos o resultado e com ele é possível ter certeza da autoria, mas não é possível recuperar a chave de assinatura.

A primeira mistura

Se a chave de assinatura é a receita, o documento, texto ou arquivo a ser assinado podem ser comparados aos ingredientes. Ao aplicar a receita aos ingredientes, na ordem correta temos a comida pronta.

Quando aplicamos o algoritmo de assinatura utilizando a chave de assinatura em determinado texto ou arquivo, temos a assinatura digital.

O algoritmo de Hash

A tradução da palavra Hash para português seria algo como “mistura”. Continuando no exemplo de cozinha, ao misturar varios ingredientes que tem seus pesos, suas texturas, seus aromas distintos individualmente, chegamos na comida pronta com um único resultado com um novo peso, textura e aroma.

A função do algoritmo de hash é exatamente a mesma, gerar um texto resultante que só pode ser conseguido utilizando uma chave de assinatura com um texto ou arquivo, com um novo formato.

O mais importante aqui é que os algoritmos de hash são construídos de forma que qualquer pequena mudança em um único bit do arquivo, uma única letra do texto, gere um resultado absolutamente diferente

Para dar um exemplo prático vou gerar um hash utilizando o algorítimo MD5 no meu nome (Marcello Paz) e o resultado é o seguinte:

05ff01f141e8cbf1adad81f8c2888f7b

Se eu alterar meu nome tirando um dos L’s deixando meu nome ligeiramente diferente (Marcelo Paz) o resultado é o seguinte:

80b6a17b593be73d47499b86bf4c7ad1

Como pudemos ver, o resultado é absolutamente distinto. Esse é o objetivo do algoritimo de hash no processo de assinatura.

Tudo junto agora

Ao aplicar um algoritmo de hash que utiliza um arquivo/texto em conjunto com uma chave de assinatura (chave privada), temos a assinatura digital.

A validação da assinatura

Mas como saber que determinada assinatura foi gerada por determinado individuo naquele determinado documento? É ai que entra a figura da chave pública nesse processo. Como o nome diz a chave pública é disponibilizada para que qualquer pessoa possa validar a assinatura digital.

Vamos comparar a chave pública com um crítico culinário que consegue distinguir que determinada receita foi feita por determinado Chef. A chave pública é também uma sequencia de caracteres única porém ela é derivada da chave privada e com ela é possível ter certeza que o texto ou documento não foram adulterados e que foram assinados por determinado indivíduo.

Isso é possível pois o algoritmo de assinatura funciona de tal forma que é possível aplicar um outro algoritmo na assinatura digital em conjunto com o documento ou texto e verificar se houve alteração no conteúdo e se o indivíduo que assinou é o dono da chave pública.

O Algoritmo de Hash garante que não houve mudança no documento e a assinatura digital gerada em conjunto garante a autoria do documento.

E o que tudo isso tem a ver com o Bitcoin?

A forma de transferir Bitcoins é através das Wallets (carteiras). Uma wallet nada mais é que um par de chaves (pública e privada) que permite garantir que apenas o dono dos Bitcoins possa fazer transações com eles.

Existe ainda uma terceira chave que é o endereço da wallet e é derivada da chave pública. Para não complicar muito esse artigo e facilitar a compreensão do processo, vou ignorar essa terceira parte por enquanto e voltarei em um novo artigo para detalha-la.

A partir daqui vou chamar o endereço da carteira de chave pública.

Movimentando os Bitcoins – a wallet

Uma wallet como já mencionei é um conjunto de chaves, sendo a chave privada o componente mais importante de todo o processo.

Diferente do dinheiro tradicional que fica dentro da sua carteira, os Bitcoins não ficam dentro da sua carteira, eles estão registrados dentro da blockchain e a carteira é a ferramenta que permite movimentar esses dados na blockchain.

Para fazer uma transação com Bitcoins é necessário indicar um endereço de destino (a chave pública de outra carteira) e a quantidade de bitcoins que vamos enviar. Isso gera um “documento”.

Aqui entra em cena a chave privada. Com ela é feita a assinatura do “documento” que é finalmente registrada na blockchain.

Tendo em mente o processo de assinatura digital que expliquei anteriormente já sabemos que uma vez o “documento” assinado temos como ter certeza da autoria e da posse dos Bitcoins pois como a chave pública da carteira de origem é conhecida é possível validar se o detentor da chave privada foi quem fez a transação utilizando o método explicado anteriormente.

Por isso guardar as chaves privadas com total segurança é o que há de mais importante para quem tem Bitcoins. Qualquer indivíduo em posse da chave privada pode movimentar os Bitcoins.

Conclusão

O processo de assinatura digital foi essencial para o desenvolvimento do Bitcoin e das criptomoedas em geral e é um dos pilares mais importantes do sistema.

Ainda temos um caminho com muitos conceitos e informações para entender completamente o funcionamento desse magnífico experimento humano que é o Bitcoin.


Um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *