Uma Nova Abordagem para Computação Multipartidária Segura em C
Este artigo apresenta um modelo formal para computações seguras na linguagem C.
― 6 min ler
Índice
- Por Que Usar C para SMC
- Desafios em SMC
- Visão Geral da Nossa Contribuição
- Trabalhos Relacionados
- O Básico da Computação Segura Multipartidária
- Trabalhando com C: Recursos Chave para SMC
- Formalização do Modelo SMC
- Modelo de Ambiente e Memória
- Gerenciamento de Memória: Alocação e Desalocação
- Operações em Ponteiros
- Manipulação de Arrays: Operações Seguras e Inseguras
- Não-Interferência como Propriedade de Segurança
- Avaliação de Desempenho
- Conclusão
- Trabalho Futuro
- Fonte original
- Ligações de referência
A Computação Segura Multipartidária (SMC) permite que várias pessoas computem juntas usando suas informações privadas, mantendo esses dados em segredo umas das outras. Esse processo tem se tornado mais importante em áreas como saúde, militar e finanças. Porém, escrever aplicações SMC pode ser complicado, pois precisam de técnicas de codificação avançadas para garantir segurança e correção.
Enquanto muitos pesquisadores têm trabalhado para facilitar o uso de SMC com métodos formais, a maioria das soluções se concentrou apenas em linguagens de programação específicas projetadas para SMC. Este artigo explora uma abordagem geral que pode ser aplicada a programas escritos em C, uma linguagem popular em criptografia. O objetivo é criar um modelo que mantenha os recursos principais do C enquanto garante a segurança das computações multipartidárias.
Por Que Usar C para SMC
C é amplamente considerado uma boa escolha porque permite programação de baixo nível. É a única linguagem de propósito geral com compiladores SMC existentes. Isso significa que muitos desenvolvedores já conhecem C, facilitando a escrita de programas multipartidários seguros. Nossa abordagem foca em constructos importantes do C, como ramificações condicionais baseadas em dados privados e ponteiros.
Desafios em SMC
Os desenvolvedores enfrentam vários desafios ao tentar manter segurança e correção. Técnicas de baixo nível para implementar SMC, como compartilhamento secreto ou circuitos embaralhados, podem levar a códigos complicados. Simplificar SMC enquanto garante que as propriedades de segurança e correção sejam preservadas é a principal motivação por trás deste artigo.
Visão Geral da Nossa Contribuição
Nosso estudo apresenta um modelo formal que suporta os principais aspectos da linguagem C para SMC. Pretendemos:
- Modelar sistemas SMC para C, incluindo ramificações privadas, arrays mutáveis e ponteiros para dados privados.
- Criar provas formais mostrando que as técnicas SMC estabelecidas garantem correção e forte não-interferência, ou seja, nenhuma informação privada é vazada durante as computações.
- Desenvolver uma implementação deste modelo formal dentro do compilador SMC PICCO existente e relatar seu desempenho por meio de testes.
Trabalhos Relacionados
A área de compiladores SMC existe desde 2004. Muitas ferramentas foram desenvolvidas para computações de duas partes e multipartidárias, mas muitas vezes dependem de linguagens customizadas, o que pode limitar sua usabilidade. Existem algumas exceções, como o compilador CBMC-GC, que suporta programas gerais em C, mas carece de uma verificação formal completa de seu sistema de tipos. Nossa pesquisa visa preencher essa lacuna fornecendo um modelo formal para compiladores SMC de uso geral.
O Básico da Computação Segura Multipartidária
SMC permite que grupos de participantes colaborem em computações sem revelar suas entradas privadas uns para os outros. Esse processo geralmente depende de várias técnicas para garantir que mesmo que alguns participantes cooperem para obter informações, eles ainda não aprendam sobre os dados privados dos outros. Esses métodos incluem compartilhamento secreto, circuitos embaralhados e criptografia homomórfica.
Trabalhando com C: Recursos Chave para SMC
A linguagem C inclui recursos como:
- Ponteiros: que permitem referenciar e manipular locais de memória.
- Ramificações Condicionais: como declarações if-else.
- Arrays Mutáveis: que permitem a criação e manipulação de estruturas de dados dinâmicas.
Esses recursos são cruciais para permitir computações privadas enquanto asseguram correção.
Formalização do Modelo SMC
Para formalizar nosso modelo, definimos um estado onde vários componentes, como memória e variáveis, interagem sob regras específicas. Cada participante em uma computação operará dentro de seu próprio ambiente e memória. À medida que os participantes se envolvem na computação, eles avaliarão uma série de transformações com base na semântica definida pelo nosso modelo.
Modelo de Ambiente e Memória
Em nosso modelo, usamos um ambiente para acompanhar variáveis e suas localizações de memória correspondentes. Blocos de memória armazenam dados, e cada bloco tem metadados, como informações de tipo e permissões. Essa estrutura ajuda a manter a privacidade enquanto permite um processamento eficiente de dados.
Gerenciamento de Memória: Alocação e Desalocação
O gerenciamento dinâmico de memória é crucial. Quando a memória é alocada, pode ser especificamente designada para dados privados. Funções como malloc para dados públicos e pmalloc para dados privados atendem a esses requisitos. Se uma localização de memória não for mais necessária, pode ser liberada usando free e pfree, garantindo que nenhuma informação privada remanescente possa ser acessada.
Operações em Ponteiros
Ponteiros trazem complexidade. Eles referenciam locais de memória e podem ser modificados. No nosso modelo, acompanhamos mudanças nos ponteiros para manter a privacidade dos dados. Isso garante que, quando as localizações dos ponteiros mudam, a verdadeira localização permaneça oculta, evitando assim o vazamento de informações sobre dados privados.
Manipulação de Arrays: Operações Seguras e Inseguras
Arrays devem ser manipulados com cuidado, especialmente quando contêm dados privados. Nosso modelo estabelece regras que controlam como os arrays podem ser acessados e modificados. Por exemplo, escrever além dos limites de um array (acesso fora dos limites) pode levar a um comportamento indefinido. Nossa formalização garante que tais operações sejam gerenciadas de forma a não comprometer a segurança.
Não-Interferência como Propriedade de Segurança
A não-interferência é essencial para garantir que dados privados não influenciem saídas públicas. Em nosso modelo formal, mostramos especificamente que mudanças em dados privados não vazam informações sobre esses dados para resultados públicos. Essa propriedade é crítica para manter a confidencialidade das entradas privadas ao longo da computação.
Avaliação de Desempenho
Depois que o modelo foi implementado no compilador PICCO, realizamos testes de desempenho usando vários benchmarks para avaliar a eficiência. Observamos que, minimizando o número de comunicações necessárias entre os participantes, o novo modelo poderia melhorar significativamente o tempo de execução para computações seguras.
Conclusão
Neste artigo, introduzimos um modelo formal para computação segura multipartidária que se integra efetivamente com a linguagem de programação C. Nosso modelo permite todos os recursos do C enquanto garante que as propriedades de segurança sejam preservadas. A pesquisa destaca a necessidade de abordagens mais generalizadas em SMC para preencher a lacuna existente entre soluções de linguagem específicas e programação de propósito geral.
Trabalho Futuro
Melhorias futuras em nosso modelo poderiam incluir suporte para desclassificação explícita de dados, onde dados privados podem ser marcados para acesso público sob condições controladas. Planejamos expandir nossas semânticas para acomodar esse recurso, enriquecendo ainda mais as capacidades das computações seguras multipartidárias.
Ao abordar essas áreas, pretendemos contribuir para o crescente campo da computação segura, tornando-a mais acessível e prática para uma ampla gama de aplicações no mundo orientado a dados de hoje.
Título: A Formal Model for Secure Multiparty Computation
Resumo: Although Secure Multiparty Computation (SMC) has seen considerable development in recent years, its use is challenging, resulting in complex code which obscures whether the security properties or correctness guarantees hold in practice. For this reason, several works have investigated the use of formal methods to provide guarantees for SMC systems. However, these approaches have been applied mostly to domain specific languages (DSL), neglecting general-purpose approaches. In this paper, we consider a formal model for an SMC system for annotated C programs. We choose C due to its popularity in the cryptographic community and being the only general-purpose language for which SMC compilers exist. Our formalization supports all key features of C -- including private-conditioned branching statements, mutable arrays (including out of bound array access), pointers to private data, etc. We use this formalization to characterize correctness and security properties of annotated C, with the latter being a form of non-interference on execution traces. We realize our formalism as an implementation in the PICCO SMC compiler and provide evaluation results on SMC programs written in C.
Autores: Amy Rathore, Marina Blanton, Marco Gaboardi, Lukasz Ziarek
Última atualização: 2023-05-31 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2306.00308
Fonte PDF: https://arxiv.org/pdf/2306.00308
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.