Trusty TEE

O Trusty é um sistema operacional (SO) seguro que oferece um ambiente de execução confiável (TEE) para Android. O Trusty OS é executado no mesmo processador do 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 ao poder total do processador principal e da memória de um dispositivo, mas está completamente isolado. O isolamento do Trusty protege o app de apps maliciosos instalados pelo usuário e de possíveis vulnerabilidades que podem ser descobertas 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 ambiente de execução seguro e confiável. Um suporte semelhante também está disponível em plataformas Intel x86 que usam a tecnologia de virtualização da Intel.

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

O Trusty consiste em:

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

Observação:o Trusty e a API Trusty estão sujeitos a mudanças. Para saber mais sobre a API Trusty, consulte a Referência da API.

Por que o Trusty?

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

O Android oferece suporte a várias implementações de TEE. Portanto, você não precisa usar o Trusty. Cada SO TEE tem uma maneira exclusiva de implantar aplicativos 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. O uso do Trusty como padrão ajuda os desenvolvedores de aplicativos a criar e implantar aplicativos com facilidade, sem considerar a fragmentação de vários sistemas de TEE. O Trusty TEE oferece aos desenvolvedores e parceiros transparência, colaboração, capacidade de inspeção do código e facilidade de depuração. Os desenvolvedores de aplicativos confiáveis podem convergir em torno de ferramentas e APIs comuns para reduzir o risco de introduzir vulnerabilidades de segurança. Esses desenvolvedores terão a confiança de que podem desenvolver um aplicativo e reutilizá-lo em vários dispositivos sem precisar de mais desenvolvimento.

Aplicativos e serviços

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

Figura 2. Visão geral do aplicativo Trusty.

Aplicativos confiáveis de terceiros

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

Usos e exemplos

Os ambientes de execução confiáveis estão se tornando rapidamente um padrão em dispositivos móveis. Os usuários estão cada vez mais dependentes dos dispositivos móveis no dia a dia, e a necessidade de segurança está sempre aumentando. Os dispositivos móveis com TEE são mais seguros do que os dispositivos sem TEE.

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

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

Há muitos outros usos para um TEE, como pagamentos móveis, serviços bancários seguros, autenticação multifator, proteção de redefinição de dispositivo, armazenamento persistente protegido contra repetição, processamento seguro de PIN e impressão digital e até mesmo a detecção de malware.