Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança

Aumentando a Segurança em Ambientes de Execução Confiáveis

Este artigo explora a programação indiferente a dados como uma solução para a segurança de TEE.

― 7 min ler


Proteger TEEs ContraProteger TEEs ContraAtaquessensíveis.de dados pra proteger aplicaçõesExplorando programação que não depende
Índice

Ambientes de Execução Confiáveis (TEEs) são áreas seguras especiais nos processadores modernos. Eles permitem que os usuários rodem aplicativos sensíveis de uma maneira que mantenha seus dados protegidos de alterações e espionagem por usuários não autorizados, mesmo que o sistema operacional principal ou máquinas virtuais estejam comprometidos. Os provedores de serviços de nuvem estão cada vez mais oferecendo TEEs para os usuários que querem usar seus serviços sem confiar totalmente nas medidas de segurança do provedor.

A ideia principal por trás dos TEEs é garantir que os dados sensíveis e o código dentro do TEE, conhecidos como enclave, fiquem protegidos de ataques externos. Mesmo que o sistema do provedor de nuvem seja hackeado, os atacantes não conseguem acessar os dados dentro do enclave. Grandes empresas de tecnologia como Intel e AMD integraram TEEs em seus designs de processadores recentes para oferecer melhores opções de segurança para a computação em nuvem.

Ataques de canal lateral em TEEs

Apesar das medidas de segurança robustas, os TEEs não são totalmente imunes a ataques. Uma ameaça potencial vem dos ataques de canal lateral, que são um tipo de ataque que coleta informações da implementação física de um sistema de computador ao invés de explorar diretamente vulnerabilidades de software. Por exemplo, os atacantes podem observar quanto tempo leva para executar instruções, consumo de energia, ou até mesmo vazamentos eletromagnéticos para inferir dados sensíveis.

Os ataques de canal lateral podem ser categorizados em dois tipos: ataques direcionados à memória/cache e ataques de nível de microarquitetura. Nos ataques direcionados à memória/cache, o atacante pode observar como o TEE interage com memória não confiável para identificar padrões de acesso que podem revelar informações sensíveis. Ataques de nível de microarquitetura aproveitam o design da CPU e podem extrair segredos diretamente de um aplicativo TEE.

Desconsideração de Dados como Solução

Uma abordagem promissora para combater esses ataques de canal lateral é o desenvolvimento de programas desconsiderados em dados. Um programa desconsiderado em dados roda de tal maneira que sua execução não revela informações sobre os dados de entrada utilizados. Por exemplo, não importa quais dados sejam processados, os passos tomados pelo programa permanecem os mesmos. Isso significa que os atacantes não podem inferir nenhuma informação com base em diferentes caminhos de execução ou padrões de acesso a dados.

A desconsideração de dados pode ajudar a proteger contra ataques direcionados à memória e baseados em cache. Ao remover a dependência da execução do programa em relação à entrada, a ideia é que os atacantes de canal lateral terão dificuldade em obter insights úteis sobre os dados que estão sendo processados.

Desafios na Criação de Soluções Desconsideradas em Dados

Apesar dos benefícios da desconsideração de dados, criar tais programas não é simples. Os desenvolvedores enfrentam desafios significativos, incluindo:

  1. Complexidade: Um desenvolvedor precisa ter um entendimento sólido das partes do programa que podem vazar informações através de padrões de acesso. Saber como converter esses segmentos para serem desconsiderados em dados requer expertise na área.

  2. Trabalho Manual: A composição manual de programas desconsiderados muitas vezes exige atenção meticulosa aos detalhes. Os desenvolvedores podem precisar analisar cuidadosamente o código para garantir que todos os padrões de acesso sensíveis estejam efetivamente ocultos.

  3. Soluções Automatizadas: Embora existam algumas abordagens automatizadas para converter programas normais em desconsiderados em dados, a praticidade pode variar. Em muitos casos, a qualidade desses códigos gerados automaticamente pode não ser aceitável.

Diferentes Abordagens para a Desconsideração de Dados

Existem várias estratégias que os desenvolvedores podem usar para criar programas desconsiderados em dados, cada uma com suas vantagens e desvantagens:

1. Composição Manual

Na abordagem de composição manual, os desenvolvedores analisam seu código para identificar qualquer parte que possa vazar informações sensíveis. Eles então substituem essas partes por alternativas desconsideradas. Essa abordagem é muitas vezes trabalhosa e requer um forte entendimento tanto do código quanto dos modelos de ameaça subjacentes.

2. Abordagens de Compilador

As abordagens baseadas em compilador visam automatizar a geração de código desconsiderado. Essas podem reduzir a carga de trabalho dos desenvolvedores ao detectar automaticamente partes sensíveis do código e aplicar técnicas desconsideradas adequadas. No entanto, o desempenho do código gerado pode nem sempre atender às expectativas.

3. Abordagens de Circuito

Usar circuitos pode ser uma maneira eficiente de implementar soluções desconsideradas. Circuitos realizam cálculos de uma forma que esconde inerentemente os padrões de acesso, já que todos os caminhos são executados independentemente dos valores de entrada. No entanto, a eficiência desse método pode variar dependendo do problema específico a ser abordado.

4. Abordagens de Framework

As abordagens de framework aproveitam frameworks de software existentes para ajudar os desenvolvedores a criar aplicativos desconsiderados em dados. Usando um framework projetado especificamente para desenvolver programas desconsiderados, os desenvolvedores podem simplificar seu trabalho e reduzir o tempo necessário para implementar soluções desconsideradas em dados.

Avaliando o Desempenho de Soluções Desconsideradas

Para determinar como essas diferentes abordagens funcionam, é essencial avaliar seu desempenho usando aplicações de benchmark. Essa avaliação deve levar em conta vários tipos de cargas de trabalho, incluindo tarefas que exigem muita computação e operações intensivas em dados.

Cargas de Trabalho Intensivas em Computação

Cargas de trabalho intensivas em computação envolvem menos dados, mas exigem considerável poder de processamento. Avaliar o desempenho das soluções desconsideradas nesse contexto ajuda a identificar como diferentes métodos se saem sob computação pesada.

Cargas de Trabalho Intensivas em Dados

Cargas de trabalho intensivas em dados envolvem o processamento de grandes quantidades de dados, o que pode ser particularmente desafiador para soluções desconsideradas. Nesse caso, as avaliações de desempenho devem se concentrar em quão eficientemente diferentes métodos desconsiderados lidam com grandes conjuntos de dados.

Resumo das Descobertas

Após avaliar várias abordagens desconsideradas, vários pontos principais emergem:

  1. Composição Manual: Embora essa abordagem possa oferecer o melhor desempenho, ela requer um esforço significativo do desenvolvedor. Uma compreensão profunda do código e dos riscos envolvidos é crítica.

  2. Abordagens de Compilador: Essas abordagens podem reduzir significativamente a carga de trabalho, mas podem não produzir desempenho ótimo consistentemente.

  3. Abordagens de Circuito: Embora ofereçam uma vantagem teórica ao fornecer desconsideração de forma inerente, muitas vezes resultam em um overhead significativo de desempenho, tornando-as menos práticas para muitos cenários.

  4. Abordagens de Framework: Essas podem simplificar o processo de desenvolvimento enquanto proporcionam um bom desempenho, especialmente para aplicações intensivas em dados.

Conclusão e Direções Futuras

Programação desconsiderada em dados é uma área vital para melhorar a segurança de aplicativos rodando em TEEs. Embora criar soluções efetivas desconsideradas em dados apresente desafios, várias abordagens podem ajudar os desenvolvedores nessa busca. Os insights obtidos a partir da avaliação dessas abordagens podem guiar pesquisas e desenvolvimentos futuros voltados a melhorar as medidas de segurança disponíveis para aplicativos sensíveis em ambientes não confiáveis.

No futuro, pesquisadores e desenvolvedores podem explorar tecnologias de compilador aprimoradas que ajudem a automatizar a geração de código desconsiderado sem sacrificar o desempenho. Além disso, criar bibliotecas e frameworks especificamente para programação desconsiderada em dados poderia reduzir significativamente as barreiras para os desenvolvedores que buscam melhorar a segurança de suas aplicações.

Fonte original

Título: Making Your Program Oblivious: a Comparative Study for Side-channel-safe Confidential Computing

Resumo: Trusted Execution Environments (TEEs) are gradually adopted by major cloud providers, offering a practical option of \emph{confidential computing} for users who don't fully trust public clouds. TEEs use CPU-enabled hardware features to eliminate direct breaches from compromised operating systems or hypervisors. However, recent studies have shown that side-channel attacks are still effective on TEEs. An appealing solution is to convert applications to be \emph{data oblivious} to deter many side-channel attacks. While a few research prototypes on TEEs have adopted specific data oblivious operations, the general conversion approaches have never been thoroughly compared against and tested on benchmark TEE applications. These limitations make it difficult for researchers and practitioners to choose and adopt a suitable data oblivious approach for their applications. To address these issues, we conduct a comprehensive analysis of several representative conversion approaches and implement benchmark TEE applications with them. We also perform an extensive empirical study to provide insights into their performance and ease of use.

Autores: AKM Mubashwir Alam, Keke Chen

Última atualização: 2023-08-11 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2308.06442

Fonte PDF: https://arxiv.org/pdf/2308.06442

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.

Artigos semelhantes