Criptografia
As duas ferramentas criptográficas que o Bitcoin usa
Criptografia é a prática e o estudo de técnicas para comunicação segura na presença de comportamento adversarial.
O Bitcoin usa criptografia. É por isso que às vezes é chamado de "criptomoeda".
Você pode pensar que ser uma "criptomoeda" significa ter todo tipo de criptografia rodando por baixo dos panos, mas o software do Bitcoin é, na verdade, construído usando duas ferramentas específicas da caixa de ferramentas criptográfica:
1. Função de Hash
Uma função de hash é uma ferramenta que cria impressões digitais para dados.
Ela recebe qualquer quantidade de dados, os embaralha e comprime para produzir um resultado curto e único chamado "hash". E como esses "hashes" são únicos para cada dado, são perfeitos para usar como números de referência.
Por exemplo, hasheamos dados de transação para criar TXIDs, e hasheamos dados de bloco para obter hashes de bloco. Isso nos dá referências únicas para cada transação e bloco, que podemos usar para procurá-los em um explorador de blocos.
Além disso, toda transação está conectada a um bloco através de uma raiz merkle, e todo bloco está conectado a outro bloco referenciando o hash de um bloco anterior.
Mas o que torna o Bitcoin uma invenção é que Satoshi teve a ideia de usar uma função de hash como base para a mineração.
Em resumo, o resultado da função de hash é incontrolável; você não sabe qual vai ser o resultado até realmente hashear os dados. Satoshi usou esta propriedade para criar uma forma de loteria, onde um novo bloco só pode ser adicionado à blockchain se alguém conseguir obter um hash de bloco abaixo de um certo valor de target.
Isto significa que nenhuma pessoa/computador está jamais em controle total dos blocos adicionados à blockchain. Isto é o que separa o Bitcoin de todos os outros sistemas de pagamento criados no passado, porque pela primeira vez não há uma autoridade central no controle de um livro-razão de transações.
Portanto, embora funções de hash sejam usadas em todo o Bitcoin como uma ferramenta geral para criar números de referência e conectar dados, é em última análise o uso inteligente da função de hash para a mineração que diferencia o Bitcoin.
De qualquer forma, existem vários tipos de função de hash que você pode usar, mas o Bitcoin usa exclusivamente as duas seguintes:
- SHA-256 (2001) — A função de hash primária usada em todo o Bitcoin.
- RIPEMD-160 (1996) — Uma função de hash secundária, usada apenas para encurtar chaves públicas.
2. Criptografia de Chave Pública
A criptografia de chave pública envolve o uso de matemática para criar um par de chaves: uma chave privada e uma chave pública.
Estas são basicamente dois números muito grandes. E devido à matemática criptográfica especial usada para criar estas chaves, você pode dar a chave pública, mas ninguém consegue trabalhar de trás para frente a partir dela para descobrir a chave privada.
Isto não é particularmente útil por si só. No entanto, parte da criptografia de chave pública é a capacidade de usar a chave privada para criar o que é conhecido como uma assinatura digital, e esta também terá uma conexão matemática única com a chave pública.
De qualquer forma, o Bitcoin utiliza este tipo de criptografia de chave pública como base para o mecanismo de bloqueio dentro das transações:
Quando você quer "receber" bitcoins, alguém criará uma transação que trava uma quantidade de bitcoins (uma saída) na sua chave pública.
Então, quando você quiser "enviar" esses bitcoins para outra pessoa, você cria uma assinatura digital usando sua chave privada, e isto destrava os bitcoins para que você possa enviá-los adiante.
Agora, há duas propriedades das assinaturas digitais que são vitalmente importantes para que isto funcione:
-
Somente o dono da chave privada para uma chave pública pode criar uma assinatura digital válida para ela. Isto significa que ninguém pode destravar seus bitcoins a menos que tenha a chave privada para a chave pública na qual os bitcoins foram travados, porque apenas o dono da chave privada pode criar uma assinatura digital que terá uma conexão matemática com a chave pública.
-
Uma assinatura digital é criada ao usar a chave privada para "assinar" a transação inteira. Isto significa que ninguém pode reutilizar sua assinatura digital para destravar bitcoins travados na mesma chave pública em uma transação diferente, porque a assinatura digital em si está "amarrada" à transação.
Resumindo, o Bitcoin utiliza este tipo de criptografia de chave pública como base para controlar a propriedade de bitcoins de forma segura, e tudo funciona graças ao uso inteligente da matemática.
De qualquer forma, existem vários tipos de criptossistemas de chave pública que você pode usar, mas o Bitcoin usa exclusivamente os dois seguintes:
- ECDSA (1998) — O primeiro criptossistema de chave pública usado no Bitcoin.
- Schnorr Signatures (1990) — Uma alternativa mais eficiente ao ECDSA. A patente deste criptossistema expirou em 2010 (um ano após o lançamento do Bitcoin). Foi integrada ao Bitcoin como parte da atualização Taproot em 2021.
Nenhuma dessas ferramentas foi inventada pelo Bitcoin. Funções de hash e criptografia de chave pública já existiam; o Satoshi simplesmente as combinou para criar um sistema de dinheiro digital descentralizado.
Breve Histórico
Não sou um especialista em criptografia, mas é interessante saber um pouco sobre a história da criptografia de chave pública para entender onde o Bitcoin se encaixa no grande esquema das coisas…
A criptografia de chave pública existe desde os anos 1970.
Antes disso, os dados só podiam ser criptografados e descriptografados usando a mesma chave (criptografia simétrica). Isso funcionava bem, mas o problema era que você precisava compartilhar a mesma chave entre duas pessoas, o que era um pesadelo para a segurança, pois é difícil compartilhar uma única chave sem que outra pessoa a obtenha.
A criptografia de chave pública resolveu este problema ao permitir o uso de um par de chaves (criptografia assimétrica). Agora você pode distribuir uma chave pública para as pessoas criptografarem dados, e estes podem ser descriptografados usando a chave privada correspondente.
O primeiro sistema de criptografia de chave pública foi o RSA (1977), que foi um avanço inovador no mundo da criptografia.
RSA é usado principalmente para criptografia, onde os dados são criptografados por qualquer um usando a chave pública, e descriptografados usando a chave privada. No entanto, RSA também pode ser usado para autenticação (i.e., assinaturas digitais), onde os dados são criptografados usando a chave privada, e podem ser descriptografados por qualquer um usando a chave pública.
A primeira proposta formal para assinaturas digitais foi na verdade o DSA (Digital Signature Algorithm) (1991). Este usa os mesmos princípios da criptografia de chave pública, mas foi projetado especificamente apenas para criar assinaturas digitais.
O DSA foi melhorado pelas Assinaturas Schnorr (1990) e pelo ECDSA (Elliptic Curve Digital Signature Algorithm) (1998). Estes usam a curva elíptica para melhorar a eficiência da criação e verificação de assinaturas digitais.
A criptografia de chave pública pode ser usada para criptografia e/ou autenticação. No entanto, o Bitcoin usa o lado da autenticação (assinaturas digitais) da criptografia de chave pública.
Resumo
Satoshi não inventou nenhum tipo novo de criptografia para uso no Bitcoin; eles simplesmente utilizaram ferramentas criptográficas existentes para construir o primeiro sistema de pagamento eletrônico descentralizado:
- Função de Hash — Usada para mineração e conexão da blockchain.
- Assinaturas Digitais (ex. ECDSA) — Usadas para travar e destravar bitcoins em transações.
É possível que Satoshi não soubesse os detalhes internos de funções de hash e criptografia de chave pública. No entanto, isto não era importante, pois eles sabiam o suficiente sobre suas propriedades para combiná-las de forma criativa e desenvolver um sistema que não existia anteriormente.
E isso já foi genial o bastante.
Portanto, não se preocupe se você não é um especialista em criptografia e quer trabalhar com Bitcoin, porque embora seja legal entender como tudo funciona por baixo dos panos, é importante apenas estar ciente de quais ferramentas estão disponíveis e para que são úteis.
A habilidade em criptoanálise de produção sempre esteve fortemente do lado dos profissionais, mas a inovação, particularmente no design de novos tipos de sistemas criptográficos, veio principalmente dos amadores.
Recursos
- Crypto by Steven Levy — Este é um livro excelente para quem procura uma introdução leve, mas profundamente interessante, à história da criptografia moderna. Eu recomendo fortemente.
- Introduction to Cryptography by Christof Paar — Excelente série de palestras explicando os detalhes técnicos da criptografia moderna. Inclui vídeos sobre funções de hash, criptografia de curva elíptica e assinaturas digitais.