Trusty TEE

O Trusty é um sistema operacional (SO) seguro que oferece um ambiente de execução confiável (TEE) para o Android. O SO Trusty é executado no mesmo processador que o SO Android, mas é isolado do restante do sistema por hardware e software. O Trusty e o Android são executados em paralelo. O Trusty tem acesso a toda a capacidade do processador principal e da memória de um dispositivo, mas é completamente isolado. O isolamento do Trusty protege contra apps maliciosos instalados pelo usuário e possíveis vulnerabilidades no Android.

O Trusty é compatível com processadores ARM e Intel. Em sistemas ARM, o Trusty usa o TrustZone do ARM para virtualizar o processador principal e criar um TEE seguro. Um suporte semelhante também está disponível em plataformas Intel x86 usando a tecnologia de virtualização da Intel.

Diagrama de visão geral do Trusty

Figura 1. Diagrama de visão geral do Trusty.

O Trusty consiste em:

  • Um pequeno kernel do SO derivado do Little Kernel
  • Um driver de kernel do Linux para transferir dados entre o ambiente seguro e o Android
  • Uma biblioteca de espaço do usuário do Android para se comunicar com apps confiáveis (ou seja, tarefas e serviços seguros) pelo driver do kernel.

Observação:o Trusty e a API Trusty estão sujeitos a mudanças. Para informações sobre a API Trusty, consulte a referência da API Trusty.

Vantagens do Trusty

Outros sistemas operacionais de TEE são tradicionalmente fornecidos como blobs binários por fornecedores terceirizados ou desenvolvidos internamente. Desenvolver sistemas TEE internos ou licenciar um TEE de terceiros pode ser caro para fornecedores de system-on-a-chip (SoC) e OEMs. O custo financeiro combinado com sistemas terceirizados não confiáveis cria um ecossistema instável para o Android. O Trusty é fornecido aos parceiros como uma alternativa confiável e sem custo financeiro de código aberto para o TEE. O Trusty oferece um nível de transparência que não é possível com sistemas de código fechado.

O Android é compatível com várias implementações de TEE, então você não precisa usar o Trusty. Cada SO TEE tem uma maneira exclusiva de implantar apps confiáveis. Essa fragmentação pode ser um problema para desenvolvedores de apps confiáveis que tentam garantir que os apps funcionem em todos os dispositivos Android. Usar o Trusty como padrão ajuda os desenvolvedores de apps a criar e implantar aplicativos sem considerar a fragmentação de vários sistemas TEE. O Trusty TEE oferece aos desenvolvedores e parceiros transparência, colaboração, capacidade de inspeção do código e depuração direta. Os desenvolvedores de apps confiáveis podem usar ferramentas e APIs comuns para reduzir o risco de introduzir vulnerabilidades de segurança. Esses desenvolvedores têm confiança para criar um app e reutilizá-lo em vários dispositivos sem precisar de mais desenvolvimento.

Apps e serviços

Um app Trusty é um conjunto de arquivos binários (executáveis e de recursos), um manifesto binário e uma assinatura criptográfica. No tempo de execução, os apps do Trusty são executados como processos isolados no modo sem privilégios no kernel do Trusty. Cada processo é executado em uma sandbox de memória virtual usando os recursos da unidade de gerenciamento de memória do processador TEE. A build do hardware muda o processo exato seguido pelo Trusty, mas, por exemplo, o kernel agenda esses processos usando um planejador round-robin baseado em prioridade e controlado por um tick de timer seguro. Todos os apps do Trusty compartilham a mesma prioridade.

Visão geral do app Trusty

Figura 2. Visão geral do app Trusty.

Apps Trusty de terceiros

Todos os apps do Trusty são desenvolvidos por uma única parte e empacotados com a imagem do kernel do Trusty. Toda a imagem é assinada e verificada pelo carregador de inicialização durante a inicialização. O desenvolvimento de apps de terceiros não é compatível com o Trusty. Embora o Trusty permita o desenvolvimento de novos apps, faça isso com muito cuidado. Cada novo app aumenta a área da base de computação confiável (TCB) do sistema. Os apps confiáveis podem acessar segredos do dispositivo e realizar cálculos ou transformações de dados usando esses segredos. A capacidade de desenvolver novos apps que são executados no TEE abre muitas possibilidades de inovação. No entanto, devido à própria definição de um TEE, esses apps não podem ser distribuídos sem alguma forma de confiança anexada. Isso é feito na forma de uma assinatura digital de uma entidade confiável para o usuário do produto em que o app é executado.

Usos e exemplos

Os TEEs estão se tornando um padrão em dispositivos móveis. Os usuários estão confiando mais nos dispositivos móveis para o dia a dia, e a necessidade de segurança está crescendo. Dispositivos móveis com um TEE são mais seguros do que aqueles sem um TEE.

Em dispositivos com uma implementação de TEE, o processador principal geralmente é chamado de *não confiável*, o que significa que ele não pode acessar determinadas áreas da RAM, registros de hardware e fusíveis de gravação única em que dados secretos (como chaves criptográficas específicas do dispositivo) são armazenados pelo fabricante. O software em execução no processador principal delega ao processador TEE todas as operações que exigem o uso de dados secretos.

O exemplo mais conhecido disso no ecossistema Android é o framework de DRM para conteúdo protegido. O software em execução no processador TEE pode acessar as chaves específicas do dispositivo necessárias para descriptografar conteúdo protegido. O processador principal só consegue ver o conteúdo criptografado, proporcionando um alto nível de segurança e proteção contra ataques de software.

O TEE tem outros usos, como pagamentos móveis, bancos seguros, autenticação multifator, proteção contra redefinição de dispositivo, armazenamento persistente protegido contra repetição, processamento seguro de PIN e impressão digital e até mesmo detecção de malware.