TEE confiável

Trusty é um sistema operacional (SO) seguro que fornece um ambiente de execução confiável (TEE) para Android. O Trusty OS é executado no mesmo processador que o Android OS, mas o Trusty é isolado do resto do sistema por hardware e software. Trusty e Android são executados em paralelo. O Trusty tem acesso a todo o poder do processador principal e da memória de um dispositivo, mas é completamente isolado. O isolamento do Trusty o protege de aplicativos maliciosos instalados pelo usuário e potenciais vulnerabilidades que podem ser descobertas no Android.

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 confiável e seguro. Suporte semelhante também está disponível em plataformas Intel x86 usando a tecnologia de virtualização da Intel.

Figura 1 . Diagrama de visão geral confiável.

Trusty consiste em:

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

Observação: o Trusty e a API Trusty estão sujeitos a alterações. Para obter informações sobre a API Trusty, consulte a Referência da API .

Por que confiável?

Outros sistemas operacionais 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 e OEMs de System-on-Chip (SoC). O custo monetário combinado com sistemas de terceiros não confiáveis ​​cria um ecossistema instável para o Android. A Trusty está sendo fornecida a seus parceiros como uma alternativa de código aberto confiável e gratuita para seu Ambiente de Execução Confiável. Trusty oferece um nível de transparência que simplesmente não é possível com sistemas de código fechado.

O Android suporta várias implementações de TEE para que você não fique restrito ao uso do Trusty. Cada TEE OS tem sua própria maneira exclusiva de implantar aplicativos confiáveis. Essa fragmentação pode ser um problema para desenvolvedores de aplicativos confiáveis ​​que tentam garantir que seus aplicativos 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 levar em conta a fragmentação de vários sistemas TEE. O Trusty TEE fornece aos desenvolvedores e parceiros transparência, colaboração, inspeção de código e facilidade de depuração. Desenvolvedores de aplicativos confiáveis ​​podem convergir em torno de ferramentas e APIs comuns para reduzir o risco de introdução de 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 desenvolvimento adicional.

Aplicativos e serviços

Um aplicativo Trusty é definido como uma coleção de arquivos binários (executáveis ​​e arquivos de recursos), um manifesto binário e uma assinatura criptográfica. Em tempo de execução, os aplicativos Trusty são executados como processos isolados no modo sem privilégios no kernel Trusty. Cada processo é executado em sua própria caixa de proteção de memória virtual, utilizando os recursos da unidade de gerenciamento de memória do processador TEE. A construção do hardware altera o processo exato que o Trusty segue, mas, por exemplo, o kernel agenda esses processos usando um agendador round-robin baseado em prioridade, acionado por um timer seguro. Todos os aplicativos Trusty compartilham a mesma prioridade.

Figura 2 . Visão geral do aplicativo confiável.

Aplicativos confiáveis ​​de terceiros

Atualmente, todos os aplicativos Trusty são desenvolvidos por uma única parte e empacotados com a imagem do kernel Trusty. A imagem inteira é assinada e verificada pelo bootloader durante a inicialização. O desenvolvimento de aplicativos de terceiros não é suportado no Trusty no momento. Embora o Trusty permita o desenvolvimento de novos aplicativos, isso deve ser feito com extremo cuidado; cada novo aplicativo aumenta a área da base de computação confiável (TCB) do sistema. Aplicativos confiáveis ​​podem acessar segredos de dispositivos 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 vem na forma de uma assinatura digital por uma entidade confiável pelo usuário do produto no qual o aplicativo é executado.

Usos e exemplos

Ambientes de execução confiáveis ​​estão rapidamente se tornando um padrão em dispositivos móveis. Os usuários estão confiando cada vez mais em seus dispositivos móveis para suas vidas cotidianas e a necessidade de segurança está sempre crescendo. Dispositivos móveis com TEE são mais seguros do que dispositivos sem TEE.

Em dispositivos com uma implementação TEE, o processador principal é muitas vezes referido como “não confiável”, o que significa que ele não pode acessar certas áreas de RAM, registros de hardware e fusíveis de gravação única onde dados secretos (como chaves criptográficas específicas do dispositivo) são armazenado pelo fabricante. O software em execução no processador principal delega quaisquer operações que exijam o uso de dados secretos ao processador TEE.

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

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