# Software Guard Extensions

O SGX ( Software Security Guard Extensions ) da Intel é um conjunto de códigos de instruções relacionados à segurança incorporados em algumas unidades de processamento central (CPUs) modernas da Intel . Eles permitem que o código do sistema operacional e do usuário definam regiões privadas da memória, denominadas enclaves, cujo conteúdo é protegido e não pode ser lido ou salvo por qualquer processo fora do próprio enclave, incluindo processos executados em níveis de privilégios mais altos . O SGX está desativado por padrão e deve ser aceito pelo usuário por meio de suas configurações de BIOS em um sistema suportado.
O SGX envolve criptografia pela CPU de uma parte da memória. O enclave é descriptografado em tempo real apenas dentro da própria CPU e, mesmo assim, apenas para código e dados em execução dentro do próprio enclave. O processador, portanto, protege o código de ser "espiado" ou examinado por outro código. O código e os dados no enclave utilizam um modelo de ameaça no qual o enclave é confiável, mas nenhum processo fora dele (incluindo o próprio sistema operacional e qualquer hypervisor ) pode ser confiável e todos são tratados como potencialmente hostis. O conteúdo do enclave não pode ser lido por nenhum código fora do enclave, exceto em sua forma criptografada.
O SGX foi projetado para ser útil do desenvolvimento de computação remota segura, navegação segura na Web e gerenciamento de direitos digitais (DRM). Outras aplicações incluem a ocultação de algoritmos proprietários e de chaves de criptografia .

## Detalhes

O suporte para SGX na CPU é indicado em CPUID no recurso "Structured Extended", EBX bit 02, mas sua disponibilidade para aplicativos requer suporte a BIOS de ativação que não é refletida em bits de CPUID. Isso complica a lógica de detecção de recursos para aplicativos.
A emulação de SGX foi adicionada a uma versão experimental do emulador do sistema QEMU em 2014. Em 2015, pesquisadores do Instituto de Tecnologia da Geórgia lançaram um simulador de código aberto conhecido como OpenSGX.
Foi lançado em 2015 com a sexta geração de microprocessadores Intel Core baseados na microarquitetura Skylake .
Um exemplo de SGX usado em segurança foi um aplicativo de demonstração do wolfSSL usando-o para algoritmos de criptografia.
A microarquitetura Intel Goldmont Plus (Gemini Lake) também adicionará suporte ao Intel SGX.

## Ataque Prime + Probe

Em 27 de março de 2017, pesquisadores da Graz University of Technology da Áustria desenvolveram uma prova de conceito que pode pegar chaves RSA de enclaves SGX rodando no mesmo sistema dentro de cinco minutos usando certas instruções da CPU em vez de um temporizador refinado para explorar o cache. Canais laterais DRAM . Uma contramedida para este tipo de ataque foi apresentada e publicada por Daniel Gruss |numero-autores=et al. no USENIX Security Symposium em 2017. Entre outras contramedidas publicadas, uma contramedida a esse tipo de ataque foi publicada em 28 de setembro de 2017, uma ferramenta baseada em compilador, a DR. SGX, que afirma ter desempenho superior com a eliminação da complexidade de implementação de outras soluções propostas.

## Ataque do tipo Spectre

O grupo LSDS do Imperial College London mostrou uma prova de conceito de que a vulnerabilidade de segurança de execução especulativa do Specter pode ser adaptada para atacar o enclave seguro. O ataque Foreshadow, divulgado em agosto de 2018, combina execução especulativa e estouro de buffer para contornar o SGX.

## Ataque de enclave

Em 8 de fevereiro de 2019, pesquisadores da Universidade de Tecnologia de Graz, na Áustria, publicaram descobertas, que mostraram que, em alguns casos, é possível executar códigos maliciosos dentro do próprio enclave. A exploração envolve a varredura através da memória de processo, a fim de reconstruir uma carga útil, que pode então executar código no sistema. O documento afirma que, devido à natureza confidencial e protegida do enclave, é impossível que o software antivírus detecte e remova os malwares que residem nele. No entanto, como as soluções antimalware e antivírus modernas monitoram as chamadas do sistema e a interação do aplicativo com o sistema operacional, deve ser possível identificar os enclaves maliciosos por seu comportamento, e é provável que esse problema não seja uma preocupação para o estado. os antivírus da arte. A Intel divulgou um comunicado afirmando que esse ataque está fora do modelo de ameaça do SGX, que eles não podem garantir que o código executado pelo usuário venha de fontes confiáveis e pediu aos consumidores que executem apenas códigos confiáveis.

## Extração da chave privada

A assinatura de código é gerada com uma chave privada que só existe no enclave. A chave privada é codificada através de elementos “fusíveis” no chip. No processo, os bits são queimados, dando-lhes o valor binário 0. Esta chave privada não pode ser extraída porque está codificada no hardware. Mark Ermolov, Maxim Goryachy e Dmitry Sklyarov refutaram a afirmação de que o conceito SGX é fiável em https://github.com/chip-red-pill/glm-ucode#.