Computação Confidencial: É possível que você a esteja utilizando sem saber. E isso é um sinal de que ela está funcionando direito! Neste artigo Adriano Cansian comenta sobre a nova tecnologia de nuvem que isola dados confidenciais em uma região específica da CPU, de forma que eles fiquem protegidos durante o processamento.
Por Adriano Cansian – Conselheiro da Resh Pentest Experts, PhD, Professor Associado e Pesquisador na UNESP.
Utilizando computação confidencial
É bem possível que, agora mesmo, você esteja utilizando computação confidencial e nunca se tenha se dado conta disso. Além disso, a computação confidencial é um novo paradigma da computação e uma nova tecnologia
Chama-se “enclave” a essa região específica onde ficam armazenados os dados e as técnicas usadas para processá-los. O conteúdo do enclave só pode ser acessado pelo código de programação autorizado a fazê-lo, de forma que ele se torna invisível e desconhecido para qualquer aplicação, pessoa ou entidade, até mesmo para o provedor de nuvem ou operador da CPU.
Estamos habituados a dados estarem criptografados quando estão armazenados na forma estacionária, seja em um dispositivo de armazenamento ou em nuvem. Da mesma forma, isso ocorre quando estão em trânsito pela rede ou entre aplicações. Mas isso não é verdade enquanto estão em uso na memória. Na computação tradicional de arquitetura, de Von Neumann, os dados e as aplicações precisam estar decriptados na memória, para que o computador possa utilizá-los e operar sobre eles. Ou seja, quando estão sendo processados, seja na CPU, na GPU ou na memória RAM, os dados estão abertos e desprotegidos.
Infraestrutura
Assim, na infraestrutura de computação convencional, a capacidade de proteger dados e códigos durante o uso é limitada. Visto que, esse é um ponto fraco explorado por atacantes que buscam vulnerabilidades em sistemas, pelo menos nas últimas duas décadas. Uma vez que um atacante consiga uma maneira de ler os dados que estejam em memória RAM ou na CPU, ele poderá acessar informações potencialmente sigilosas, como senhas e chaves criptográficas. Usualmente isso é conseguido por intermédio de uma falha ou condição crítica numa aplicação, ou em um sistema, que leva a exposição dos dados sendo processados e é comum em aplicações que não foram testadas adequadamente.
De uma maneira simplificada podemos dizer que a computação confidencial visa eliminar as vulnerabilidades de segurança de dados quando eles estão sendo processados. A computação confidencial usa técnicas baseadas em hardware e software para isolar dados, funções ou mesmo um aplicativo inteiro, do sistema operacional, do hypervisor ou gerenciador de máquina virtual, ou outros processos privilegiados.
Como funciona a computação confidencial
Como explicado anteriormente, antes que um computador ou um aplicativo possa rodar e processar dados para operar, estes precisam estar decriptados na memória RAM. Portanto, a computação confidencial visa resolver esse problema se valendo de um Ambiente de Execução Confiável, baseado em hardware, ou Trusted Execution Environment (TEE), o enclave seguro dentro de uma CPU [1].
Tecnicamente falando, o TEE é um ambiente de processamento inviolável em hardware, sendo assim executado em um kernel apartado. Assim, garante a autenticidade e a confidencialidade dos dados sendo processados, do código executado. Ainda assim, garante também a integridade dos estados de tempo de execução, tais como, registros de CPU, memória e entrada e saída sensíveis.
O TEE é protegido por meio de chaves de criptografia incorporadas ao processo. Além disso, os mecanismos de certificados integrados garantem que as chaves sejam acessíveis apenas ao código de aplicativo autorizado. Se um malware, ou outro código não autorizado, tentar acessar as chaves — ou se o código autorizado for hackeado ou alterado de alguma forma — o TEE nega o acesso às chaves e cancela o processamento.
Dessa forma, os dados confidenciais podem permanecer protegidos na memória até que o aplicativo diga ao TEE para descriptografá-los para processamento. Enquanto os dados são descriptografados, e durante todo o processo de computação, eles são invisíveis para o sistema operacional ou para o hypervisor em uma máquina virtual, para outros recursos da pilha de computação, para o provedor de nuvem, e para humanos de forma geral.
CPUs de Empresas
Atualmente as CPUs de empresas como Intel e AMD permitem a criação de TEEs, que podem isolar um processo ou uma máquina virtual (VM) inteira, eliminando efetivamente o sistema operacional hospedeiro e o hypervisor do limite de confiança (*).
(*) Um “limite de confiança” (Trust Boundaryď) é um ponto em uma rede ou sistema onde a confiança é transferida de um nível para outro. Em outras palavras, é o ponto onde a segurança de uma rede ou sistema é considerada suficientemente confiável para permitir o acesso a dados sensíveis ou confidenciais.
Produção de GPUS
Empresas que produzem GPUS, como, por exemplo, a NVIDIA, estão avançando para estender esse limite de confiança para as GPUs, permitindo que um código em execução no TEE da CPU transfira com segurança os cálculos e os dados para as GPUs, e vice-versa.
A computação confidencial exige ampla colaboração entre fornecedores de hardware e software para que aplicativos e dados possam funcionar com TEEs. Nesse sentido, o Open Portable Trusted Execution Environment (OP-TEE) [2] é um TEE projetado para Kernels Linux não seguros rodando em núcleos Arm Cortex-A. Além disso, o Virtual Secure Mode [3] da Microsoft é um TEE baseado em software, implementado pelo Hyper-V no Windows 10 e no Windows Server 2016.
Atualmente, servidores Intel (como a linha Xeon) com Intel Software Guard Extensions (SGX) executam uma parte significativa da computação confidencial, isolando códigos e dados de aplicativos específicos para execução em regiões privadas de memória. Por exemplo, a Figura 1 apresenta um isolamento de código usando Intel Software Guard Extension (SGX).
A aplicação é criada com partes confiáveis e não confiáveis. A execução ocorre, em suma, da seguinte forma, que pode ser acompanhada na figura:
- A aplicação não confiável inicia sua execução;
- A aplicação cria o Enclave, que fica localizado na memória confiável;
- A função confiável chama a execução e transaciona para o Enclave. Os dados que estavam cifrados no armazenamento estacionário são transferidos para o Enclave e abertos apenas lá.
- O Enclave visualiza todos os dados em aberto (sem cifragem), assim, não permite nenhum acesso externo ao enclave.
- A função confiável devolve o resultado do processamento para a aplicação, e a execução retoma ao normal. Os dados do Enclave permanecem na memória segura e os dados voltam cifrados para o armazenamento estacionário
- A execução retorna ao normal.
O Consórcio de Computação Confidencial
É interessante dizer que os conceitos tratados aqui não são recentes. Os primeiros artigos discutindo sobre TEE, base da Computação Confidencial, datam de 2003 [4], e a definição mais formal da arquitetura de TEE surge em 2011 [5]. Em 2019, um grupo de fabricantes de CPU, provedores de nuvem e empresas de software — Alibaba, AMD, Baidu, Fortanix, Google, IBM/Red Hat, Intel, Microsoft, Oracle, Swisscom, Tencent e VMware — formaram o Consórcio de Computação Confidencial (CCC) [8], sob os auspícios da The Linux Foundation.
O CCC reúne fornecedores de hardware, provedores de nuvem e desenvolvedores de software para acelerar a adoção de tecnologias e padrões de TEE. Além disso, os objetivos do CCC são definir padrões de toda a indústria para Computação Confidencial e promover o desenvolvimento de ferramentas de Computação Confidencial de código aberto.
Dois dos primeiros projetos de código aberto do Consórcio, o Open Enclave SDK e o Red Hat Enarx, permitem que os desenvolvedores criem e rodem aplicativos nas plataformas TEE, sem modificações ou esforços significativos.
O Consórcio de Computação Confidencial está crescendo. Um estudo de mercado do Everest Group e do Consórcio [6] previu em 2021 que a indústria de computação confidencial crescerá para US$ 54 bilhões até 2026.
Onde a Computação Confidencial está presente
A Computação Confidencial já vem sendo utilizada há algum tempo e pode ser que o leitor já tenha utilizado seus recursos, mesmo sem saber. Alguns exemplos são:
Google Cloud
O Google Cloud usa máquinas virtuais confidenciais com extensão de virtualização criptografada segura, suportada por CPUs AMD EPYC de 3ª geração e processos de computação em nuvem. Além disso, os dados permanecem criptografados na memória com chaves dedicadas específicas do nó, geradas e gerenciadas pelo processador durante a criação do nó. A partir desse ponto, as chaves nunca saem daquele hardware.
IBM
A IBM está na quarta geração de seus produtos de computação confidencial, começando com o Hyper Protect Services e o Data Shield da IBM Cloud em 2018. Em um lugar de destaque com os serviços Hyper Protect, vem um módulo de segurança de hardware em nuvem com certificação FIPS 140–2 Nível 4. Ambos os produtos atendem às regulamentações como HIPAA, GDPR, ISO 27000 e outras. Disponível desde 2020, o IBM Secure Execution for Linux oferece um ambiente de execução confiável a fim de permitir aos clientes isolar um grande número de cargas de trabalho com granularidade e escala, projetado para proteger contra ameaças internas e externas numa nuvem híbrida.
Amazon AWS
O Nitro System da Amazon AWS sustenta seus serviços Elastic Cloud Compute, um serviço de infraestrutura sob demanda que, por natureza, exige bloqueios e permissões entre a Amazon AWS e o cliente que usa os serviços. Ademais, criam bloqueios e permissões de várias maneiras. Um deles é o Nitro System, que possui um chip de segurança proprietário com o propósito de medir e validar criptograficamente o sistema.
Intel
As extensões de proteção de software da Intel contribuem para a segurança baseada em hardware desta empresa. Em 2021, eles se concentraram em fornecer serviços de ETE sob medida para saúde, finanças e governo.
Microsoft Azure
O Microsoft Azure também oferece máquinas virtuais confidenciais, bem como contêineres Kubernetes confidenciais. Além disso, seus TEEs formam um pool de dados inviolável e não estruturado verificado usando blockchain. Uma raiz de confiança de hardware fornece uma assinatura digital em cada transação na camada confidencial. As autorizações baseadas em certificado também garantem que os provedores de nuvem não possam ver os dados hospedados lá.
Onipresença
Como dissemos no início, é possível que você esteja utilizando computação confiável sem saber. E isso é um sinal de que ela está funcionando direito. Portanto, existem vários tipos diferentes de aplicação de computação confiável, incluindo computação segura e computação verificável, projetadas para oferecer confiabilidade e segurança aos sistemas e dados.
Uma das maneiras mais comuns de encontrar computação confiável é procurando por sistemas e serviços que ofereçam segurança de alta qualidade e que tenham sido projetados para lidar com ameaças cibernéticas. Isso pode incluir serviços de nuvem segura, sistemas de gerenciamento de acesso e outras soluções de segurança de informação.
Muitas vezes, as empresas usam essas tecnologias em segundo plano, e os usuários finais não conseguem vê-las nem estar cientes de que estão sendo utilizadas. No entanto, isso não significa que a computação confiável não esteja sendo eficaz em proteger os sistemas e dados.
Referências:
[1] M. Sabt, M. Achemlal and A. Bouabdallah, “Trusted Execution Environment: What It is, and What It is Not,” 2015 IEEE Trustcom/BigDataSE/ISPA, 2015, pp. 57–64, doi:10.1109/Trustcom.2015.357. — https://ieeexplore.ieee.org/document/7345265
[2] Open Portable Trusted Execution Environment — https://www.op-tee.org/
[3] Microsoft Virtual Secure Mode (VSM) — https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/vsm
[4] T. Garfinkel, B. Pfaff, J. Chow, M. Rosenblum and D. Boneh, “Terra: a virtual machine-based platform for trusted computing”, SIGOPS Oper. Syst. Rev, vol. 37, no. 5, pp. 193–206, Oct. 2003.
[5] GlobalPlatform, 2011. “The TEE is an execution environment that runs alongside but isolated from the device main operating system. It protects its assets against general software attacks. It can be implemented using multiple technologies, and its level of security varies accordingly.” — “GlobalPlatform”, TEE system architecture, 2011, [online] Available: http://www.globalplatform.org/specificationsdevice.asp.
[6] Everest Group, 2021. “Confidential Computing Market Could Reach US$54 Billion in 2026 https://www.prnewswire.com/news-releases/confidential-computing-market-could-reach-us54-billion-in-2026-301407273.html
[7] Microsoft. “Enclave Aware Containers with Intel SGX”. 27/maio/2022. https://learn.microsoft.com/en-us/azure/confidential-computing/enclave-aware-containers
https://www.ibm.com/cloud/learn/confidential-computing[8] Confidential Computing Consortium (CCC) — https://confidentialcomputing.io/