Uma breve noção de criptografia
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 - 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.
- Alice cria uma mensagem
- Alice encripta a mensagem com uma chave (uma senha)
- Alice envia a mensagem encriptada para Bob
- Bob usa a mesma chave (ou senha) para decriptar a mensagem
- Bob lê a mensagem decriptada
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
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
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
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.
- Alice cria uma mensagem
- Alice importa ou recebe a chave pública de Bob
- Alice encripta a mensagem com a chave pública de Bob
- Alice envia a mensagem encriptada para Bob
- Bob usa sua chave privada para decriptar a mensagem
- Bob lê a mensagem decriptada
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.
- Alice cria uma mensagem
- A função de assinatura digital gera um hash da mensagem
- A chave privada de Alice é usada para encriptar o hash
- O hash criptografado é anexado à mensagem
- A mensagem é enviada a Bob
- Bob recebe a mensagem
- A função de verificação gera um novo hash da mensagem
- A chave pública de Alice é importada, caso ainda não tenha sido
- A chave pública de Alice é usada para decriptar o hash anexado à mensagem
- Os dois hashes são comparados
- 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
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)
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.