zk-SNARKs e considerações de segurança na combinação com Blockchain
zk-SNARKs(ZKP) como uma tecnologia criptográfica avançada, está se fundindo profundamente com a tecnologia Blockchain. Com o crescente número de protocolos Layer 2 e cadeias públicas especiais adotando ZKP, sua complexidade também trouxe novos desafios de segurança. Este artigo abordará, a partir da perspectiva de segurança, as vulnerabilidades potenciais do ZKP em aplicações Blockchain, fornecendo referências para a proteção de segurança de projetos relacionados.
Características principais do ZKP
Antes de analisar a segurança do sistema ZKP, precisamos entender suas três características principais:
Completude: para declarações verdadeiras, o provador consegue sempre demonstrar ao verificador a sua correção.
Confiabilidade: em relação a declarações incorretas, os provadores maliciosos não conseguem enganar os validadores.
Prova de zero conhecimento: durante o processo de verificação, o verificador não obterá nenhuma informação sobre os dados originais.
Estas três características são a base para garantir a segurança e eficácia dos sistemas ZKP. Se alguma dessas características for comprometida, pode levar ao colapso da segurança do sistema. Por exemplo, a falta de completude pode resultar em negação de serviço; a falta de confiabilidade pode ser explorada por atacantes para criar provas falsas; a deterioração da zero-knowledge pode resultar na divulgação de informações sensíveis. Portanto, na avaliação de segurança, é essencial dar ênfase à implementação dessas características.
Preocupações de segurança em projetos de Blockchain ZKP
Para projetos de blockchain baseados em ZKP, é necessário prestar atenção às seguintes questões de segurança:
1. zk-SNARKs circuito
Os circuitos ZKP são o núcleo de todo o sistema, e sua segurança afeta diretamente a confiabilidade do projeto. Os principais pontos de foco incluem:
Erro de design de circuito: pode levar a um processo de prova que não cumpre as propriedades de segurança. Por exemplo, o Zcash descobriu em 2018, durante a atualização Sapling, um erro de design de circuito que poderia levar à falsificação ilimitada de tokens.
Erro na implementação de primitivas criptográficas: se houver falhas nas primitivas criptográficas subjacentes, isso pode levar ao colapso de todo o sistema. Esse tipo de problema não é raro, como o caso da ponte cross-chain da BNB Chain, que sofreu grandes perdas devido a um erro na implementação da verificação da árvore Merkle.
Falta de aleatoriedade: O sistema ZKP depende de números aleatórios de alta qualidade, e problemas na geração de números aleatórios podem comprometer a segurança da prova. Por exemplo, a Dfinity descobriu uma vulnerabilidade na geração de números aleatórios que poderia comprometer as características de zero conhecimento.
2. Segurança de contratos inteligentes
Para projetos de moedas privadas baseados em Layer 2 ou contratos inteligentes, a segurança do contrato é crucial. Além das vulnerabilidades comuns, como reentrância e estouro, é necessário prestar atenção especial à validação de mensagens entre cadeias e à validação de provas, pois isso pode afetar diretamente a confiabilidade do sistema. Por exemplo, a vulnerabilidade do contrato Verify da Circom permitiu que atacantes realizassem um double spend através de um pseudônimo.
3. Disponibilidade de dados
Garantir o acesso seguro e a validação eficaz dos dados off-chain é crucial para projetos de Layer 2. Em 2019, a Plasma Chain enfrentou interrupções nas transações e retiradas devido à incapacidade dos validadores de acessar dados off-chain. Além de adotar provas de disponibilidade de dados, deve-se também reforçar a proteção do host e o monitoramento do estado dos dados.
4. Mecanismos de incentivos econômicos
Um mecanismo de incentivo razoável é crucial para manter a segurança e a estabilidade do sistema. É necessário avaliar se o design do modelo de incentivos, a distribuição de recompensas e o mecanismo de penalização podem efetivamente incentivar todos os participantes.
5. Proteção de Privacidade
Para projetos que envolvem proteção de privacidade, é necessário revisar a implementação de suas soluções de privacidade. Garantir que os dados dos usuários estejam plenamente protegidos durante todo o processo, ao mesmo tempo em que se assegura a disponibilidade e a confiabilidade do sistema. É possível avaliar se há risco de vazamento de privacidade analisando o fluxo de comunicação do protocolo.
6. Otimização de desempenho
Avaliar as estratégias de otimização de desempenho do projeto, incluindo a velocidade de processamento de transações e a eficiência do processo de validação, entre outros. Rever as medidas de otimização na implementação do código, garantindo que atendam aos requisitos de desempenho.
7. Mecanismos de tolerância a falhas e recuperação
Estratégias de resposta a situações imprevistas, como falhas de rede e ataques maliciosos, enfrentadas pelos projetos de auditoria. Garantir que o sistema tenha a capacidade de recuperação automática e de manter o funcionamento normal.
8. Qualidade do código
Auditar a qualidade do código do projeto de forma abrangente, focando na legibilidade, manutenibilidade e robustez. Avaliar se existem práticas de programação não conformes, código redundante ou erros potenciais.
Serviços de Segurança e Soluções de Proteção
Para proteger completamente a segurança do projeto ZKP, podem ser tomadas as seguintes medidas:
Auditoria de código em todas as áreas: inclui auditoria de contratos inteligentes, lógica de codificação de circuitos, condições de restrição e geração de testemunhas em todas as etapas.
Testes automatizados: Realização de testes Fuzz e testes de segurança para o código Sequencer/Prover e contratos de verificação.
Monitorização em tempo real: Implementar um sistema de monitorização de segurança em blockchain, permitindo a perceção, alerta e rastreio de riscos em tempo real.
Proteção do Host: utilizar produtos de segurança de host com capacidades CWPP e ASA, garantindo a operação segura e confiável do servidor.
Simulação de Ataques: Testar vários cenários de ataque simulando logicamente testemunhos personalizados montados manualmente.
Em suma, a proteção de segurança dos projetos ZKP precisa ser direcionada para seus cenários de aplicação específicos, considerando de forma abrangente todos os aspectos, desde a criptografia de base até as aplicações de nível superior. Somente garantindo a completude, confiabilidade e zero conhecimento do ZKP é que se pode construir um sistema verdadeiramente seguro e confiável.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
22 Curtidas
Recompensa
22
5
Compartilhar
Comentário
0/400
fork_in_the_road
· 07-20 04:34
Vale a pena estudar e pesquisar em profundidade
Ver originalResponder0
WinterWarmthCat
· 07-17 12:05
A segurança deve ser sólida para ser confiável
Ver originalResponder0
BottomMisser
· 07-17 05:25
A segurança é a verdadeira produtividade.
Ver originalResponder0
DegenRecoveryGroup
· 07-17 05:23
A segurança em primeiro lugar, as regras acima de tudo.
Ver originalResponder0
NFTFreezer
· 07-17 05:10
Vale a pena uma profundidade de estudo a este artigo.
As 8 principais vulnerabilidades de segurança e estratégias de proteção em projetos de Blockchain com zk-SNARKs
zk-SNARKs e considerações de segurança na combinação com Blockchain
zk-SNARKs(ZKP) como uma tecnologia criptográfica avançada, está se fundindo profundamente com a tecnologia Blockchain. Com o crescente número de protocolos Layer 2 e cadeias públicas especiais adotando ZKP, sua complexidade também trouxe novos desafios de segurança. Este artigo abordará, a partir da perspectiva de segurança, as vulnerabilidades potenciais do ZKP em aplicações Blockchain, fornecendo referências para a proteção de segurança de projetos relacionados.
Características principais do ZKP
Antes de analisar a segurança do sistema ZKP, precisamos entender suas três características principais:
Completude: para declarações verdadeiras, o provador consegue sempre demonstrar ao verificador a sua correção.
Confiabilidade: em relação a declarações incorretas, os provadores maliciosos não conseguem enganar os validadores.
Prova de zero conhecimento: durante o processo de verificação, o verificador não obterá nenhuma informação sobre os dados originais.
Estas três características são a base para garantir a segurança e eficácia dos sistemas ZKP. Se alguma dessas características for comprometida, pode levar ao colapso da segurança do sistema. Por exemplo, a falta de completude pode resultar em negação de serviço; a falta de confiabilidade pode ser explorada por atacantes para criar provas falsas; a deterioração da zero-knowledge pode resultar na divulgação de informações sensíveis. Portanto, na avaliação de segurança, é essencial dar ênfase à implementação dessas características.
Preocupações de segurança em projetos de Blockchain ZKP
Para projetos de blockchain baseados em ZKP, é necessário prestar atenção às seguintes questões de segurança:
1. zk-SNARKs circuito
Os circuitos ZKP são o núcleo de todo o sistema, e sua segurança afeta diretamente a confiabilidade do projeto. Os principais pontos de foco incluem:
Erro de design de circuito: pode levar a um processo de prova que não cumpre as propriedades de segurança. Por exemplo, o Zcash descobriu em 2018, durante a atualização Sapling, um erro de design de circuito que poderia levar à falsificação ilimitada de tokens.
Erro na implementação de primitivas criptográficas: se houver falhas nas primitivas criptográficas subjacentes, isso pode levar ao colapso de todo o sistema. Esse tipo de problema não é raro, como o caso da ponte cross-chain da BNB Chain, que sofreu grandes perdas devido a um erro na implementação da verificação da árvore Merkle.
Falta de aleatoriedade: O sistema ZKP depende de números aleatórios de alta qualidade, e problemas na geração de números aleatórios podem comprometer a segurança da prova. Por exemplo, a Dfinity descobriu uma vulnerabilidade na geração de números aleatórios que poderia comprometer as características de zero conhecimento.
2. Segurança de contratos inteligentes
Para projetos de moedas privadas baseados em Layer 2 ou contratos inteligentes, a segurança do contrato é crucial. Além das vulnerabilidades comuns, como reentrância e estouro, é necessário prestar atenção especial à validação de mensagens entre cadeias e à validação de provas, pois isso pode afetar diretamente a confiabilidade do sistema. Por exemplo, a vulnerabilidade do contrato Verify da Circom permitiu que atacantes realizassem um double spend através de um pseudônimo.
3. Disponibilidade de dados
Garantir o acesso seguro e a validação eficaz dos dados off-chain é crucial para projetos de Layer 2. Em 2019, a Plasma Chain enfrentou interrupções nas transações e retiradas devido à incapacidade dos validadores de acessar dados off-chain. Além de adotar provas de disponibilidade de dados, deve-se também reforçar a proteção do host e o monitoramento do estado dos dados.
4. Mecanismos de incentivos econômicos
Um mecanismo de incentivo razoável é crucial para manter a segurança e a estabilidade do sistema. É necessário avaliar se o design do modelo de incentivos, a distribuição de recompensas e o mecanismo de penalização podem efetivamente incentivar todos os participantes.
5. Proteção de Privacidade
Para projetos que envolvem proteção de privacidade, é necessário revisar a implementação de suas soluções de privacidade. Garantir que os dados dos usuários estejam plenamente protegidos durante todo o processo, ao mesmo tempo em que se assegura a disponibilidade e a confiabilidade do sistema. É possível avaliar se há risco de vazamento de privacidade analisando o fluxo de comunicação do protocolo.
6. Otimização de desempenho
Avaliar as estratégias de otimização de desempenho do projeto, incluindo a velocidade de processamento de transações e a eficiência do processo de validação, entre outros. Rever as medidas de otimização na implementação do código, garantindo que atendam aos requisitos de desempenho.
7. Mecanismos de tolerância a falhas e recuperação
Estratégias de resposta a situações imprevistas, como falhas de rede e ataques maliciosos, enfrentadas pelos projetos de auditoria. Garantir que o sistema tenha a capacidade de recuperação automática e de manter o funcionamento normal.
8. Qualidade do código
Auditar a qualidade do código do projeto de forma abrangente, focando na legibilidade, manutenibilidade e robustez. Avaliar se existem práticas de programação não conformes, código redundante ou erros potenciais.
Serviços de Segurança e Soluções de Proteção
Para proteger completamente a segurança do projeto ZKP, podem ser tomadas as seguintes medidas:
Auditoria de código em todas as áreas: inclui auditoria de contratos inteligentes, lógica de codificação de circuitos, condições de restrição e geração de testemunhas em todas as etapas.
Testes automatizados: Realização de testes Fuzz e testes de segurança para o código Sequencer/Prover e contratos de verificação.
Monitorização em tempo real: Implementar um sistema de monitorização de segurança em blockchain, permitindo a perceção, alerta e rastreio de riscos em tempo real.
Proteção do Host: utilizar produtos de segurança de host com capacidades CWPP e ASA, garantindo a operação segura e confiável do servidor.
Simulação de Ataques: Testar vários cenários de ataque simulando logicamente testemunhos personalizados montados manualmente.
Em suma, a proteção de segurança dos projetos ZKP precisa ser direcionada para seus cenários de aplicação específicos, considerando de forma abrangente todos os aspectos, desde a criptografia de base até as aplicações de nível superior. Somente garantindo a completude, confiabilidade e zero conhecimento do ZKP é que se pode construir um sistema verdadeiramente seguro e confiável.