Blockchain do Bitcoin – Criptografia

Browse By

Criptografia

As transações de Bitcoin são realizadas entre carteiras. Cada carteira possui um endereço, que identifica uma única conta nessa rede. Por sua vez, o portador da chave privada (ou secreta) associada a esse endereço pode transacionar com os recursos daquela carteira. Essa chave privada funciona como uma senha daquela carteira, portanto, deve ser guardada com todo cuidado e sigilo. Se essa chave privada for perdida os recursos não podem ser movimentados.

Do ponto de vista criptográfico, o endereço é na prática uma chave pública. Existem diversos sites que permitem gerar estes pares de chaves (pública e privada) e utilizá-las para criptografar mensagens. Escolhemos um site simples para orientá-lo nessa prática, conforme o passo a passo a seguir.

1) Acesse o site https://goo.gl/omQswv

2) Clique em “Generate keys” para gerar seu par de chaves e anote sua chave pública (“Public Key”) e sua chave privada (“Private Key”) em um papel. Essas seriam como o endereço (pública) e senha (privada) da sua carteira.

3) Digite no campo “Message” um texto, por exemplo, “Transfiro 10 bitcoins para carteira X32”. Essa seria uma representação de uma transação a ser realizada pela sua carteira, que precisa ser assinada com a senha da carteira.

4) No campo “Encription key” preencha a sua chave privada anteriormente gerada e clique em “Encone Message”.

5) A mensagem assinada aparecerá no campo “The encrypted message”, ou seja, a mensagem foi criptografada com sua chave privada, em outras palavras, assinada pelo proprietário da carteira em tela.

6) No campo “Descryption key” digite sua chave pública correspondente a chave privada usada para assinar a mensagem e clique em “Decode message”. Em outras palavras, qualquer um pode verificar se a transação foi feita pela carteira a partir do endereço da própria carteira.

7) A mensagem original aparecerá no campo “The decrypted message”, ou seja, de posse da chave pública é possível decriptografar a mensagem, o que confirma que a mensagem foi criptografada pelo proprietário da chave privada correspondente a chave pública que você usou.

8) Você acabou de presenciar o que chamamos de assinar uma mensagem com uma chave privada e posteriormente decriptar com a chave pública e verificar que a mensagem voltou a forma original, portanto, a mensagem foi assinada (criptografada) pelo proprietário da chave privada associada a chave pública utilizada (endereço da carteira).

9) Experimente modificar o valor em “Descryption key” e veja que a mensagem não é decriptada corretamente, ou seja, não volta ao original, portanto, não foi criptografada com a senha privada da chave pública agora utilizada para decriptar (a que você preencheu).

Esse processo de assinatura de mensagem, que no caso em tela são transações de Bitcoins, pode formalizado conforme abaixo.

  1. (pk, sk) := GenerateKey ()
  2. sig := Sign(sk, msg)
  3. isValid := Verify(pk, msg, sig)

Explicando:

  • A função GenerateKey cria uma chave pública (pk) e uma chave privada/secreta (sk), em outras palavras, qualquer um pode criar esse par de chaves, que é um endereço de carteira da rede Bitcoin e a respectiva chave secreta para movimentar os recursos desta carteira, assinando transações da mesma.
  • A função Signgera a assinatura digital da transação (sig) a partir da chave secreta (sk) e da mensagem que contem os detalhes da transação (msg). Como o resultado depende também da mensagem, não é possível copiar a assinatura digital e utilizá-la para falsificar outras mensagens (transações).
  • A função Verify utiliza a chave pública (pk), enderço da carteira, a assinatura digital (sig) e a mensagem (msg) e retorna verdadeiro se ao decriptografar a sig com a pk se obtém a msg. Note que para isso não é necessário saber a chave secreta (sk), que permanece apenas de conhecimento do proprietário da carteira.

Agora que você compreende as funções de gerar chaves, assinar e verificar, utilize este outro site de demonstração (https://goo.gl/Rah6Uq) para gerar chaves, assinar mensagens e verificá-las. Assim como, para simular transações de Bitcoins entre carteiras e assiná-las.

Esse processo de assinatura digital é utilizado em diferentes sistemas, como para assinatura digital de e-mails e documentos (ex. tokens do judiciário e da receita federal). De forma análoga, esse processo de chaves para criptografar e decriptografar podem ser usados divulgando a chave para criptografar (que passa a ser pública) e mantendo em sigilo a chave para decriptografar (que passa a ser privada ou secreta). Essa mecânica é muito comum para sistemas criptografados de mensagens. Assisti ao vídeo a seguir para conhecer mais sobre criptografia neste contexto: https://youtu.be/8JEC-QKEGrw.

ENTENDENDO O BLOCKCHAIN – O que todos devem saber.

Criado por ECOA PUCRIO, Rafael Nasser