Aprimorando a privacidade do Blockchain: o papel das provas de conhecimento zero em transações seguras


E aí, pessoal! Prontos para embarcar na viagem maluca das notícias de cripto? No nosso canal do Telegram, vamos explorar o mundo das criptomoedas com leveza e bom humor. É como um papo de bar sobre Bitcoin, só que sem a ressaca no dia seguinte! 😄 Junte-se a nós agora e vamos desvendar esse universo juntos! 💸🚀

Junte-se ao Telegram


Introdução 

Como desenvolvedor experiente com anos de experiência em tecnologia blockchain, considero a evolução de soluções focadas na privacidade, como o Zcash, verdadeiramente fascinante. Tendo trabalhado com sistemas transparentes tradicionais como o Bitcoin, é intrigante ver como o Zcash preenche a lacuna entre privacidade e transparência através de sua abordagem única.

Na era atual de dados abundantes, a informação assumiu o valor do petróleo bruto. Com esta riqueza de dados, as possibilidades são infinitas. No entanto, esta realidade centrada nos dados acarreta responsabilidades substanciais, especialmente quando se trata de proteger informações privadas e delicadas. A tecnologia Blockchain é um instrumento potente que enfatiza a abertura em detrimento da confidencialidade. Embora a transparência promova a confiança num ambiente descentralizado, pode revelar involuntariamente detalhes sensíveis, o que pode nem sempre ser adequado, especialmente em contextos que envolvem transações secretas ou dados pessoais.

Os desenvolvedores apresentaram vários métodos para lidar com essas restrições, incluindo tecnologias que priorizam a privacidade do usuário, como Zero-Knowledge Proofs (ZKP), zk-SNARKs, moedas digitais que se concentram no anonimato, como Monero e Zcash, e técnicas sofisticadas de criptografia, como criptografia homomórfica (HE ).

Essas tecnologias mantêm um equilíbrio entretransparênciae confidencialidade do usuário.

Neste post, vamos nos aprofundar no funcionamento dessas tecnologias focadas na privacidade e em seus casos de uso na inovação do blockchain.

Então vamos começar!

É comum acreditar que Blockchain é a escolha mais segura e transparente dentro da tecnologia, mas tem algumas desvantagens. Por exemplo, pegue o Bitcoin – uma moeda blockchain pública onde seus endereços são pseudônimos. No entanto, os mineradores possuem a capacidade de visualizar dados no blockchain antes de seu registro oficial. Isso pode parecer alarmante, pois significa que eles podem acessar informações confidenciais antes que outros o façam.

Para evitar situações semelhantes, escolhemos soluções focadas na privacidade, como Zero-Knowledge Proofs (ZKPs). Vamos explorar como eles funcionam!

Provas de conhecimento zero e zk-SNARKs 

O que são provas de Conhecimento Zero?

Uma prova de conhecimento zero é essencialmente um método ou técnica em criptografia em que um Provador visa persuadir um Verificador de que uma afirmação específica está correta, ao mesmo tempo que mantém outros detalhes e dados confidenciais. O aspecto chave aqui é que o Provador apenas revela se a afirmação é verdadeira, sem partilhar qualquer informação adicional sobre como chegou a esta conclusão.

Vamos entender isso de forma mais intuitiva com um exemplo da vida real:

Suponha que você tenha um amigo chamado Carl que é daltônico e possua duas bolas de cores diferentes – uma vermelha e outra verde. Você gostaria de ajudar Carl a identificar essas bolas sem revelar explicitamente suas cores. Uma maneira de conseguir isso poderia ser usando dicas táteis:

Nesse cenário, você atua como proponente, enquanto Carl atua como verificador. Você solicita que Carl posicione ambas as bolas na parte traseira, permitindo que ele selecione uma bola aleatoriamente e pergunte se as bolas foram trocadas (trocadas). Este processo pode ser repetido iterativamente. Com uma probabilidade de 50%, esse procedimento acabará convencendo Carl (“completude”) de que as bolas realmente têm cores diferentes.

Como o título indica que sua reivindicação foi verificada, fica claro que seu amigo não descobriu qual bola é verde e qual é vermelha. Em outras palavras, ele não aprendeu a diferenciá-los. Portanto, essas informações também podem ser compartilhadas com terceiros.

Exemplo de código:

# Simulação ZKP simples
do hashlib import sha256

# Suponha que o provador conheça a senha ‘secreta’
secret_password = “blockchain_rocks”
hash_of_secret = sha256(secret_password.encode).hexdigest

# O provador quer provar conhecimento sem revelar ‘secret_password’
def prove_knowledge(guessed_password):
    return sha256(guessed_password.encode).hexdigest == hash_of_secret

# O verificador confirma o conhecimento do provador combinando hashes
print(prove_knowledge(“blockchain_rocks”))  # Retorna True sem
revelando ‘secret_password’

zk-SNARKs: argumentos de conhecimento sucintos e não interativos de conhecimento zero

Em termos mais simples, zk-SNARKs refere-se a um tipo de prova chamado Argumentos de conhecimento sucintos e não interativos de conhecimento zero. Isto significa que alguém (o provador) pode demonstrar a validade ou propriedade de algo sem precisar interagir diretamente com outra pessoa (o verificador). É particularmente útil em situações onde não há possibilidade de comunicação direta, como transações online sem interação em tempo real.

Essencialmente, esta ideia envolve indicar a alguém que você está ciente de sua verdade ou informação oculta, sem revelar explicitamente os detalhes, mas sim fornecendo evidências ou provas.

Você já ouviu falar que zk-SNARKs são realmente usados ​​no Zcash, uma criptomoeda conhecida por suas transações privadas e seguras chamadas “transações protegidas”?

Exercício: Construa um zk-SNARK com libsnark

Considere utilizar a biblioteca chamada ‘libsnark’ para estabelecer e confirmar um zk-SNARK simples. Alternativamente, você pode encontrar exemplos de construção de prova zk-SNARK em sua documentação.

Agora a questão é: como funciona esse ZKP não interativo? 

  • Configuração: zk-SNARKs requerem uma configuração única para chaves criptográficas, usadas para construir provas.
  • Geração de Prova: O provador usa informações privadas para gerar uma prova sucinta que pode ser verificada publicamente.
  • Verificação: Os verificadores podem confirmar que o provador possui certo conhecimento sem conhecer os detalhes.

Moedas de privacidade 

Moedas de privacidade são criptomoedas projetadas especificamente para priorizar a privacidade e ocultar a identidade do usuário.

Monero

Monero (XMR) é um tipo de moeda digital que oferece maior privacidade. Ele opera em um sistema blockchain exclusivo que oculta informações de transações, tornando extremamente difícil para terceiros identificar quem está transferindo ou recebendo Monero, o valor enviado ou quaisquer saldos de contas. Isto assegura o anonimato do utilizador e garante que cada unidade do Monero mantém o seu valor inerente, independentemente da sua história.

Intercambiável, o que significa que cada Monero tem um valor idêntico, sem nenhum registro passado único associado a ele.

Como o Monero garante transações privadas?

Monero utiliza métodos distintos para garantir transações confidenciais, vamos explorar estes métodos:

Assinaturas de anel: combina a assinatura da transação de um usuário com outras para ofuscar a verdadeira origem.

Exemplo de código:

importar aleatoriamente
# Lista de chaves públicas para participantes
participantes = [“Alice”, “Bob”, “Charlie”, “ Dave”]

# Escolha um participante aleatório como o “remetente”
sender = random.choice(participants)

# Misturando a assinatura do remetente com outros
mixed_signatures = random.sample(participants, len(participants))

print(“Ring Signature Group:”, mixed_signatures )
print(“Remetente (oculto):”, remetente)

Endereços de transação exclusivos: gera endereços distintos e únicos para cada transação, garantindo a confidencialidade ao manter o endereço do destinatário da transação conhecido apenas pelo remetente e pelo destinatário.

Ring Confidential Transactions (RingCT): oculta o valor da transação para impedir que entidades externas conectem transações.

  • Leia também:
  •   Dimensionamento de Blockchain simplificado: um guia para soluções eficientes de camada 1 e camada 2
  •   ,

Zcash 

Zcash, representado como ZEC, é uma moeda digital que utiliza a estrutura subjacente do código-fonte do Bitcoin. Semelhante ao Bitcoin, facilita transações abertas e claras. No entanto, o que o diferencia é a capacidade de realizar transações confidenciais, conhecidas como transações protegidas, além das regulares transparentes.

Transação protegida: transações protegidas no Zcash são transações privadas que usam um método criptográfico chamado zk-SNARKs (Argumentos de conhecimento sucintos e não interativos de conhecimento zero) para manter os detalhes da transação totalmente confidenciais.

Consequentemente, o Zcash facilita transações abertas e privadas usando o que chamamos de endereços T (semelhantes aos endereços padrão do Bitcoin para transações transparentes) e endereços Z (que ocultam detalhes da transação para transações seguras e protegidas).

As transações protegidas da Zcash são particularmente adequadas para situações que exigem confidencialidade, como transações business-to-business (B2B) na gestão da cadeia de abastecimento, onde a manutenção da privacidade dos dados é vital.

Configuração

# Instale o cliente Zcash
sudo apt-get update && sudo apt-get install zcash
# Crie um endereço protegido
zcash-cli z_getnewaddress
# Envie para o endereço protegido
zcash-cli z_sendmany

Criptografia homomórfica e seu papel no Blockchain 

A criptografia homomórfica (HE) é um método de criptografia de dados que permite que cálculos sejam realizados diretamente nas informações criptografadas, sem a necessidade de descriptografia durante o processo. Em outras palavras, os dados criptografados podem ser manipulados como se estivessem em seu estado original e não criptografado. Quando você finalmente decide descriptografar os resultados, é como se você tivesse realizado os cálculos diretamente nos dados de texto simples (não criptografados).

Este método revela-se particularmente benéfico para manter a privacidade, uma vez que permite o armazenamento e processamento de informações confidenciais em servidores remotos (como os da nuvem), ocultando-as assim da exposição direta.

Existem dois tipos principais de técnicas de criptografia homomórfica:

  • Criptografia parcialmente homomórfica (PHE):  A HE parcial permite apenas operações específicas nos dados, por exemplo, adição e multiplicação.
  • Criptografia Totalmente Homomórfica (FHE): FHE suporta operações arbitrárias em dados criptografados. Mas é intensivo em recursos

Código de exemplo:

from seal import EncryptionParameters, SEALContext, IntegerEncoder
# Definir parâmetros de criptografia
parms = EncryptionParameters(scheme_type.BFV)< br/>parms.set_poly_modulus_degree(1024)
parms.set_coeff_modulus(coeff_modulus_128(1024))

# Exemplo de adição criptografada
encrypted_sum = add_encrypted_values(enc1, enc2)
print(“Encrypted Sum:”,crypted_sum)

Conclusão

A integração de tecnologias como Provas de Conhecimento Zero (ZKPs), zk-SNARKs, moedas de privacidade e criptografia homomórfica em sistemas blockchain está remodelando o cenário ao atingir um equilíbrio crucial entre confidencialidade e abertura. Essa mudança apresenta perspectivas emocionantes para os desenvolvedores. Ao incorporar esses elementos de privacidade em aplicativos descentralizados, os desenvolvedores podem atender setores como finanças, saúde e IoT, onde manter a privacidade das informações é vital.

Continue aprendendo e boa codificação!!

2024-11-02 03:38