Extending Layered Attestation into ARM Application Run-Times
Este artigo apresenta o ARA, uma âncora de tempo de execução de aplicação baseada em ARM que estende a atestação baseada em hardware do tempo de carregamento para a execução, ao aproveitar as Extensões de Sobreposição de Permissões para criar um domínio atestado e protegido para verificação de integridade em tempo de execução e proteção de segredos com overhead de desempenho mínimo.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
No mundo da computação moderna, a confiança é frequentemente estabelecida no exato momento em que um programa inicia. Quando você abre um aplicativo em seu telefone, o dispositivo verifica para garantir que o software é genuíno e não foi adulterado antes mesmo de começar a rodar. Esse processo, conhecido como atestação, baseia-se em uma "raiz de confiança" baseada em hardware, uma fundação segura construída no próprio chip que verifica a identidade do software. No entanto, uma vez que essa verificação inicial é superada e o aplicativo começa seu trabalho, esse alto nível de segurança muitas vezes desaparece. O dispositivo assume que o programa está se comportando corretamente, deixando uma lacuna onde atores maliciosos poderiam potencialmente alterar o comportamento do app, roubar segredos ou manipular dados sem que o sistema perceba. Durante anos, a solução para este problema envolveu mover tarefas sensíveis para ambientes separados e isolados, mas fazer isso exigia que o computador alternasse constantemente de marcha entre diferentes zonas de segurança, um processo que era lento e consumia a bateria.
Uma equipe de pesquisadores da Universidade de Zurique e da Huawei desenvolveu uma nova abordagem para preencher essa lacuna, permitindo que a segurança persista durante toda a vida de um aplicativo sem o pesado custo de desempenho. Eles criaram um sistema chamado ARA, que estabelece uma zona segura e protegida diretamente dentro do próprio espaço de memória do aplicativo. Ao utilizar um recurso de hardware recentemente introduzido em processadores ARM modernos, os pesquisadores permitiram que o aplicativo hospede seu próprio guarda de segurança confiável que pode vigiar as ações do programa e proteger chaves sensíveis em tempo real. O trabalho deles demonstra que é possível manter um alto nível de segurança e verificar se um app está se comportando corretamente enquanto ele exece, tudo isso operando quase na mesma velocidade de um aplicativo não protegido.
O desafio central que os pesquisadores enfrentaram foi como manter um sistema de segurança confiável isolado de um aplicativo potencialmente comprometido sem forçá-los a conversar através de uma fronteira lenta e distante. Os métodos tradicionais dependem de executar o serviço de segurança em um processo completamente separado ou em um enclave de hardware especializado. Embora esses métodos sejam seguros, eles exigem que o computador interrompa o aplicativo principal, mude o contexto e se comunique através de barreiras complexas toda vez que uma verificação de segurança é necessária. Essa alternância constante cria um atraso significativo, tornando impraticável para tarefas que exigem decisões rápidas e de milissegundos, como monitorar cada passo de um programa ou descriptografar uma transmissão de vídeo em tempo real. Os pesquisadores perceberam que a solução residia em um novo recurso de hardware chamado Extensões de Sobreposição de Permissão (Permission Overlay Extensions), que permite que um único programa divida sua própria memória em salas distintas e isoladas com diferentes regras de acesso, todas gerenciadas pelo próprio processador.
Usando essa tecnologia, a equipe construiu o ARA para agir como uma âncora segura dentro do espaço de endereçamento do aplicativo. Quando o aplicativo é lançado, um carregador confiável primeiro configura o ambiente, dividindo a memória em três áreas distintas: uma para o código não confiável do aplicativo, uma para um ponto de entrada controlado e uma para os serviços de segurança seguros. O processador é então instruído a aplicar regras estritas nessas áreas. O aplicativo principal pode ler e escrever seus próprios dados, mas é completamente impedido de tocar a memória onde os serviços de segurança residem. Crucialmente, o aplicativo não pode alterar essas regras por conta própria. Mesmo que um hacker consiga injetar código malicioso no aplicativo, esse código é fisicamente incapaz de alcançar a área segura ou alterar as permissões que a mantêm segura. A única maneira de o aplicativo interagir com os serviços de segurança é através de uma porta específica e pré-aprovada que o sistema de segurança controla.
Os pesquisadores testaram este sistema com dois cenários distintos para ver como ele se comportava no mundo real. No primeiro caso, eles simularam um serviço de streaming de mídia que precisava descriptografar conteúdo de vídeo usando uma chave secreta. Eles compararam seu novo sistema com o método padrão de usar um processo separado para a descriptografia. Os resultados mostraram que o novo sistema era dramaticamente mais rápido. Para um arquivo de vídeo de duas horas, o método tradicional adicionou vários segundos de atraso devido à constante alternância entre processos, enquanto o novo sistema adicionou apenas uma fração de segundo. No segundo caso, eles testaram um sistema que monitora constantemente o comportamento do aplicativo para garantir que ele está seguindo o caminho correto, uma tarefa que exige milhares de verificações de segurança por segundo. Aqui, o novo sistema foi aproximadamente trinta a cinquenta e cinco vezes mais rápido que o método tradicional. O ganho de velocidade veio da eliminação da necessidade de alternar entre diferentes processos ou pedir ajuda ao sistema operacional; as verificações de segurança aconteciam diretamente dentro do fluxo do próprio aplicativo, protegidas pelo hardware.
O estudo também abordou como este sistema se encaixa no cenário de segurança existente dos dispositivos móveis. Os telefones modernos já utilizam hardware para verificar se um app é legítimo quando é instalado ou lançado pela primeira vez. Os pesquisadores projetaram seu sistema para estender essa cadeia de confiança existente. Quando o app inicia, o dispositivo verifica os serviços de segurança seguros da mesma forma que verifica o próprio app. Isso significa que um servidor remoto pode ter confiança de que as verificações de segurança que ocorrem dentro do app são genuínas e não foram adulteradas. O sistema também inclui um método para entregar chaves secretas de forma segura ao aplicativo. Um servidor pode enviar uma chave criptografada que apenas a instância específica e verificada do aplicativo pode desbloquear, garantindo que, mesmo que o aplicativo esteja rodando em um dispositivo comprometido, o segredo permaneça seguro dentro da zona de memória protegida.
Embora o sistema mostre grande promessa, os pesquisadores observaram que o recurso de hardware necessário ainda não está disponível em nenhum dispositivo comercial. Eles construíram seu protótipo usando um ambiente simulado e um processador físico modificado para provar que o conceito funciona. Eles também reconheceram que seu design atual assume que o aplicativo roda em uma única thread, e suportar múltiplas threads simultâneas exigiria engenharia adicional para garantir que as regras de segurança sejam mantidas corretamente para cada thread. Apesar dessas limitações, o trabalho fornece um roteiro prático para um futuro onde aplicativos podem ser tanto rápidos quanto seguros. Ele sugere que o antigo compromisso entre desempenho e proteção não é inevitável e que, com o suporte de hardware adequado, podemos ter aplicativos que protegem seus próprios segredos e verificam sua própria integridade sem diminuir a experiência do usuário.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.