Uma breve noção de criptografia

5 minutos de leitura

Para compreender melhor o que é e como funciona uma blockchain é necessário saber um mínimo sobre criptografia.

Hashes, par de chaves criptográficas e assinaturas digitais são fundamentais para a transferência de valores na blockchain. Quando uma pessoa transfere um ativo para outra, ela ‘assina’ uma transação (usando sua chave privada), transferindo a posse de uma moeda ou ativo (representada pelo hash da transação) para o endereço de recebimento de outra (na forma de sua chave pública). Este artigo explica esses conceitos básicos de criptografia e segurança da informação, que permitem a comunicação segura na Internet.

Hash

É o resultado de uma função matemática que retorna sempre uma sequência de tamanho fixo independentemente do tamanho da entrada.

Figura 1 - Cryptographic hash functions - Rebuilt from Wikipedia
Figura 1 - Função criptográfica de hash - Reconstruído a partir do Wikipedia

Qualquer modificação na entrada, seja no texto, na quantidade ou na ordem dos caracteres, altera completamente o resultado final (saída, também chamado por ‘digest’).

Criptografia Simétrica

A criptografia simétrica usa apenas uma chave em todo o processo: desde a encriptação até a decriptação. No exemplo a seguir, a chave é chamada de “Chave Privada da Alice” apenas porque foi Alice que encriptou e enviou a mensagem. Nesse caso, a chave privada é como uma senha em um arquivo compactado, por exemplo.

  1. Alice cria uma mensagem
  2. Alice encripta a mensagem com uma chave (uma senha)
  3. Alice envia a mensagem encriptada para Bob
  4. Bob usa a mesma chave (ou senha) para decriptar a mensagem
  5. Bob lê a mensagem decriptada

Figura 2 - Criptografia simétrica: Alice envia uma mensagem a Bob
Figura 2 - Criptografia simétrica: Alice envia uma mensagem a Bob

A figura a seguir mostra um grupo de 4 pessoas que desejam se comunicar de forma segura. Uma chave é criada para cada canal de comunicação. Assim, para que cada membro do grupo possa ter uma chave única com todos os outros indivíduos é necessário um total de 6 chaves.

Figura 3 - Um grupo pequeno usa chaves simétricas
Figura 3 - Um grupo pequeno usa chaves simétricas

Quando cada par de usuários usa uma chave criptográfica para proteger seu canal de comunicação, o número de chaves cresce exponencialmente, ficando ingerenciável.

Figura 4 - Crescimento exponencial do número de chaves simétricas necessárias
Figura 4 - Crescimento exponencial do número de chaves simétricas necessárias

Criptografia Assimétrica

A criptografia assimétrica é a solução para o problema de escalabilidade da criptografia simétrica. Neste modelo cada usuário possui o seu par de chaves. A chave pública, como o nome já diz, pode ser divulgada, e a chave privada, deve ser mantida em segredo.

Como poderá ser visto nas figuras 6 e 7, a operação criptográfica sempre é feita com as duas chaves do mesmo par: o que é feito com a chave privada é desfeito com a chave pública e vice-versa, dependendo da operação.

Figura 5 - Criptografia assimétrica: cada usuário possui o seu par de chaves
Figura 5 - Criptografia assimétrica: cada usuário possui o seu par de chaves

Enquanto na criptografia simétrica o remetente escolhe a chave ou senha que será usada, na criptografia assimétrica as chaves usadas são as do destinatário. A chave pública do destinatário, que todos podem ter, é usada para encriptar a mensagem. Já a chave privada do usuário, que só ele possui, é usada para decriptar a mensagem. Assim qualquer um pode enviar uma mensagem encriptada ao usuário, que só será lida por ele.

  1. Alice cria uma mensagem
  2. Alice importa ou recebe a chave pública de Bob
  3. Alice encripta a mensagem com a chave pública de Bob
  4. Alice envia a mensagem encriptada para Bob
  5. Bob usa sua chave privada para decriptar a mensagem
  6. Bob lê a mensagem decriptada

Figura 6 - Criptografia assimétrica: Alice envia uma mensagem a Bob
Figura 6 - Criptografia assimétrica: Alice envia uma mensagem a Bob

Assinatura Digital

A assinatura digital é o processo usado para garantir que uma mensagem não foi modificada por um usuário não autorizado enquanto em trânsito ou armazenada. Em uma estrutura de PKI, como na figura 8, a assinatura também é usada para garantir o não-repúdio, que significa dizer que aquela pessoa que assinou a mensagem não poderá depois negar tê-lo feito. Em um modelo sem certificados digitais apenas é possível saber que uma determinada chave privada foi usada já que toda assinatura que é verificada com uma chave pública precisa ter sido criada com a chave privada do mesmo par.

  1. Alice cria uma mensagem
  2. A função de assinatura digital gera um hash da mensagem
  3. A chave privada de Alice é usada para encriptar o hash
  4. O hash criptografado é anexado à mensagem
  5. A mensagem é enviada a Bob
  6. Bob recebe a mensagem
  7. A função de verificação gera um novo hash da mensagem
  8. A chave pública de Alice é importada, caso ainda não tenha sido
  9. A chave pública de Alice é usada para decriptar o hash anexado à mensagem
  10. Os dois hashes são comparados
  11. Se os hashes são idênticos Bob sabe que a mensagem não foi alterada; se não são Bob considera que a mensagem foi alterada e a descarta

Figura 7 - Assinatura digital: Alice envia uma mensagem assinada a Bob
Figura 7 - Assinatura digital: Alice envia uma mensagem assinada a Bob

Centralização vs Descentralização

Em uma estrutura centralizada há alguns servidores responsáveis pela emissão de certificados digitais, como a Autoridade Certificadora, por exemplo. Certificados digitais servem para identificar os usuários através de documentos apresentados previamente e ligar o usuário a uma chave pública, já que aparentemente todas as chaves públicas são iguais, uma sequência de caracteres que parecem ter sido escritos de forma aleatória.

Infraestruturas de Chaves Públicas, como a ilustrada abaixo, podem fazer uma cópia de segurança das chaves dos usuários, para evitar que a informação se perca por acidente ou quando um colaborador for embora. Esse é um controle de segurança comum nas empresas.

Figura 8 - Um exemplo de PKI (Infraestrutura de Chaves Públicas)
Figura 8 - Um exemplo de PKI (Infraestrutura de Chaves Públicas)

Moedas digitais geralmente são descentralizadas. Não possuem essas entidades centrais que identificam os usuários e geram certificados digitais. Seu funcionamento é muito parecido com o do PGP. Da mesma forma, as chaves geradas pelos usuários não são copiadas para nenhuma entidade central. Por isso é muito importante fazer backup da sua chave privada, ou da seed, que é uma representação mnemônica da chave.

Criptoativos

Moedas digitais, ou criptoativos, utilizam amplamente os conceitos ilustrados anteriormente. A compreensão desses conceitos é importante para entender o funcionamento de tecnologias de blockchain.