Guardiões da nuvem pública: como implementamos os enclaves Intel SGX para proteger dados confidenciais

Como dissipar os preconceitos do usuário em potencial sobre a segurança da nuvem pública? A Tecnologia Intel Software Guard Extensions (Intel SGX) vem para o resgate. Contaremos como o implementamos em nossa nuvem e quais benefícios a Aggregion recebeu de nossa solução.










Intel SGX em resumo e seu papel na nuvem



As extensões Intel Software Guard (Intel SGX) são um conjunto de instruções da CPU que criam áreas protegidas privadas (enclaves) no espaço de endereço de um aplicativo onde o código de nível de usuário está localizado. A tecnologia garante a confidencialidade e integridade dos dados sensíveis. Ao isolá-los em um enclave, eles ganham proteção adicional contra acesso externo não autorizado, incluindo do provedor de nuvem, e ameaças internas, incluindo ataques de software privilegiado.



Princípios de trabalho.A tecnologia Intel SGX aloca uma memória reservada do processador (PRM) para armazenar o código e os dados do enclave. A CPU o protege de todas as chamadas externas, incluindo kernel e acesso ao hipervisor. O PRM contém um Enclave Page Cache (EPC) de blocos de página de 4 KiB, cada página deve pertencer a apenas um enclave e seu estado é capturado nos Metadados de Cache de Página do Enclave (EPCM) e monitorado pela CPU.



A segurança do EPC é garantida pelo Memory Encryption Engine (MEE), que gera chaves de criptografia armazenadas na CPU. Presume-se que as páginas só podem ser descriptografadas dentro do núcleo do processador físico.



Benefícios.Intel SGX ajuda a aumentar o nível de confiança na nuvem pública por parte das organizações que usam dados confidenciais em seu trabalho (senhas, chaves de criptografia, identificação, dados biométricos, médicos, bem como informações relacionadas à propriedade intelectual). Estamos falando de representantes de uma ampla variedade de setores - o setor financeiro, medicina e saúde, varejo, desenvolvimento de jogos, telecomunicações, mídia.



Nossa abordagem para implementar o Intel SGX



Para possibilitar a alocação de máquinas virtuais com enclaves Intel SGX na nuvem pública do G-Core Labs, tivemos que ir desde a compilação do kernel KVM e QEMU corrigido até a gravação de scripts Python nos serviços OpenStack Nova. Decidimos definir os nós de computação que foram planejados para serem usados ​​para alocar máquinas virtuais de alta segurança em um agregador separado - um tipo de recurso computacional que requer configuração adicional. Em tais nós, era necessário:



  • Ative o suporte Intel SGX BIOS.
  • Instale o QEMU / KVM corrigido.


Inicialmente, não tínhamos o entendimento de como isso deveria funcionar e o que no final teríamos que aparafusar para obter a VM com a configuração desejada. Parte do Intel Developer Guide ajudou a resolver isso . Com sua ajuda, aprendemos como preparar um nó computacional para trabalhar com SGX e quais parâmetros adicionais o arquivo de configuração XML de uma máquina virtual deve ter. Aqui encontramos informações abrangentes sobre como criar uma máquina convidada usando Intel SGX usando virtualização KVM. Para garantir que éramos capazes de fornecer suporte para essa tecnologia, usamos dois métodos:



  • Verificada a seção / dev / sgx / virt_epc no arquivo / proc / $ PID / smaps:



    [root@compute-sgx ~]# grep -A22 epc /proc/$PID/smaps
    7f797affe000-7f797b7fe000 rw-s 00000000 00:97 57466526		/dev/sgx/virt_epc
    Size:               8192 kB
    KernelPageSize:        4 kB
    MMUPageSize:           4 kB
    Rss:                   0 kB
    Pss:                   0 kB
    Shared_Clean:          0 kB
    Shared_Dirty:          0 kB
    Private_Clean:         0 kB
    Private_Dirty:         0 kB
    Referenced:            0 kB
    Anonymous:             0 kB
    LazyFree:              0 kB
    AnonHugePages:         0 kB
    ShmemPmdMapped:        0 kB
    FilePmdMapped:         0 kB
    Shared_Hugetlb:        0 kB
    Private_Hugetlb:       0 kB
    Swap:                  0 kB
    SwapPss:               0 kB
    Locked:                0 kB
    THPeligible:	0
    VmFlags: rd wr sh mr mw me ms pf io dc dd hg
          
          



  • E usamos este script de shell, após instalar o driver SGX (todas as ações foram realizadas dentro da VM):



    [root@sgx-vm ~]# cat check_sgx.sh
    #!/bin/bash
    
    METRICS="sgx_nr_total_epc_pages \
        sgx_nr_free_pages \
        sgx_nr_low_pages \
        sgx_nr_high_pages \
        sgx_nr_marked_old \
        sgx_nr_evicted \
        sgx_nr_alloc_pages \
        "
    MODPATH="/sys/module/isgx/parameters/"
    
    for metric in $METRICS ; do
        echo "$metric= `cat $MODPATH/$metric`"
    done
    
    [root@sgx-vm ~]# curl -fsSL https://raw.githubusercontent.com/scontain/SH/master/install_sgx_driver.sh | bash -s - install -p metrics -p page0
    
    [root@sgx-vm ~]# ./check_sgx.sh
    sgx_nr_total_epc_pages= 2048
    sgx_nr_free_pages= 2048
    sgx_nr_low_pages= 32
    sgx_nr_high_pages= 64
    sgx_nr_marked_old= 0
    sgx_nr_evicted= 0
    sgx_nr_alloc_pages= 0
    
          
          





    Deve-se ter em mente que, se uma página tiver 4 KiB, 2048 páginas exigirão 8 MiB (2048 x 4 = 8192).


Dificuldades de desenvolvimento e superação



A falta de qualquer documentação técnica para integrar o Intel SGX ao OpenStack foi nossa principal dificuldade no momento da implementação. A pesquisa nos levou a um artigo do projeto SecureCloud, que apresentou uma forma de gerenciar máquinas virtuais com enclaves SGX.



As informações encontradas ajudaram a entender o que exatamente temos que trabalhar. Como resultado, formamos as seguintes tarefas:



  1. Obtenha o serviço OpenStack Nova para gerar um arquivo XML com parâmetros adicionais para máquinas virtuais com suporte Intel SGX.
  2. Grave um filtro do planejador OpenStack Nova para determinar a memória disponível para enclaves em nós de computação e execute algumas outras verificações.


Sua execução foi suficiente para integrar o Intel SGX em nossa nuvem pública.



Além disso, adicionamos a coleção de estatísticas levando em consideração o EPC:



# openstack usage show
Usage from 2020-11-04 to 2020-12-03 on project a968da75bcab4943a7beb4009b8ccb4a:
+---------------+--------------+
| Field         | Value        |
+---------------+--------------+
| CPU Hours     | 47157.6      |
| Disk GB-Hours | 251328.19    |
| EPC MB-Hours  | 26880.02     |
| RAM MB-Hours  | 117222622.62 |
| Servers       | 23           |
+---------------+--------------+
      
      







Ambiente seguro para executar aplicativos em contêineres







Depois de aprender como provisionar máquinas virtuais habilitadas para Intel SGX, usamos a plataforma SCONE da Scontain para garantir que os aplicativos em contêineres possam ser executados com segurança no caso de ameaças de software com privilégios. Com esta solução para proteção transparente do sistema de arquivos em ambientes Docker, Kubernetes e Rancher, um processador habilitado para Intel SGX e um driver Linux SGX são suficientes.



O lançamento de cada um dos containers só é possível se houver um arquivo de configuração criado pela extensão cliente da plataforma SCONE. Ele contém chaves de criptografia, argumentos de aplicativo e variáveis ​​de ambiente. Arquivos, tráfego de rede e fluxos de E / S padrão (stdin / stdout) são criptografados de forma transparente e inacessíveis até mesmo para usuários root.



A plataforma SCONE possui um serviço integrado de atestado e configuração que valida os aplicativos em relação a uma política de segurança estabelecida. Ele gera chaves privadas e certificados que devem estar disponíveis apenas no enclave. A confidencialidade e integridade dos dados no processo da sua transferência é assegurada pelo protocolo criptográfico TLS.



O driver SGX reserva até 64 GB de memória para cada enclave no espaço de endereço virtual. A plataforma SCONE oferece suporte às linguagens de programação C / C ++ / C # / Rust / Go / Python / Java. Devido ao compilador especial, o código-fonte é automaticamente (sem a necessidade de modificações adicionais) preparado para uso em conjunto com o Intel SGX.



Caso de agregação



Tendo concluído todo o trabalho necessário na integração do Intel SGX, conectamos a plataforma de gerenciamento de dados distribuídos Aggregion à nossa nuvem pública.



Destina-se à implementação de projetos conjuntos de marketing por representantes de diversos setores - serviços financeiros e de seguros, governo, telecomunicações, varejo. Os parceiros analisam o comportamento do consumidor, desenvolvem promoção direcionada de bens e serviços, desenvolvem programas de fidelidade exigidos, trocam e processam conjuntos de dados anônimos na plataforma Aggregion. Como o vazamento de informações confidenciais é altamente indesejável e ameaça sérios riscos à reputação, a empresa dá atenção especial às questões de segurança.



O software Aggregion está totalmente integrado ao provedor de dados, o que significa que possui uma infraestrutura com suporte Intel SGX à sua disposição. Os clientes da empresa agora podem considerar a conexão com nossa nuvem pública como uma alternativa para alugar ou comprar servidores físicos.



Princípios de trabalho seguro na plataforma Aggregion. No loop de cada fornecedor, os dados confidenciais são isolados em enclaves Intel SGX, que na verdade são caixas pretas: o que acontece lá dentro não está disponível para ninguém, incluindo o provedor de infraestrutura em nuvem. A verificação do estado inicial do enclave e da possibilidade de sua utilização para armazenamento de informações confidenciais é realizada por meio de atestado remoto, quando MrEnclavedefine um valor hash.



Benefício potencial para o cliente. Combinar bancos de dados de vários fornecedores pode melhorar a eficácia das campanhas publicitárias conjuntas. Quando o público-alvo é alocado de acordo com os parâmetros especificados, a correspondência (correspondência) de segmentos é realizada diretamente dentro de contêineres com suporte para enclaves Intel SGX. Apenas o resultado final é exibido fora dos limites: por exemplo, o número de usuários que correspondem aos atributos selecionados. A eficácia das campanhas é avaliada de maneira semelhante: dados sobre impressões de anúncios e vendas concluídas são carregados para enclaves para calcular o aumento nas compras do grupo-alvo em relação ao grupo de controle, que é então enviado para uso posterior.







conclusões



Entendemos que Intel SGX não é uma panacéia para proteção de dados e você pode encontrar uma série de artigos condenando essa tecnologia, inclusive no Habré. Periodicamente, há relatórios de ataques capazes de extrair dados confidenciais de enclaves: por exemplo, Meltdown e Spectre em 2018 abriram buracos de SGX e SGAxe e CrossTalk em 2020. Por sua vez, a Intel está abordando as vulnerabilidades identificadas por meio de atualizações do microcódigo do processador.



Por que decidimos implementar essa tecnologia? Vemos o uso do Intel SGX como uma oportunidade para reduzir a área potencial de ataques cibernéticos, criando um loop de proteção adicional para a infraestrutura de nuvem do G-Core Labs junto com as tecnologias de segurança da informação já utilizadas e, assim, aumentando a confiança de nossos usuários no armazenamento e processamento de dados confidenciais. Esperamos que, no futuro, ainda tenhamos de compartilhar com você casos de clientes de sucesso, embora não nos comprometamos a afirmar que nossos artigos não serão baseados em histórias de descoberta e eliminação de novas vulnerabilidades. Nesse ínterim, convidamos você a compartilhar seus métodos para proteger dados confidenciais nos comentários.



All Articles