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 do sistema operacional Android, mas o Trusty é isolado do resto do sistema por hardware e software. Trusty e Android funcionam paralelamente. Trusty tem acesso a toda a potência do processador principal e da memória de um dispositivo, mas está completamente isolado. O isolamento do Trusty o protege de aplicativos maliciosos instalados pelo usuário e de possíveis vulnerabilidades que podem ser descobertas no Android.
Trusty é compatível com processadores ARM e Intel. Em sistemas ARM, a Trusty usa o Trustzone™ da ARM para virtualizar o processador principal e criar um ambiente de execução seguro e confiável. Suporte semelhante também está disponível em plataformas Intel x86 usando a tecnologia de virtualização da Intel.
Confiável consiste em:
- Um pequeno kernel de sistema operacional derivado de 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
Nota: Trusty e a API Trusty estão sujeitas a alterações. Para obter informações sobre a API confiável, 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. O desenvolvimento de sistemas TEE internos ou o licenciamento de 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 Android. Trusty está sendo fornecido aos seus parceiros como uma alternativa confiável e gratuita de código aberto 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 oferece suporte a várias implementações de TEE para que você não fique restrito ao uso do Trusty. Cada sistema operacional TEE 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. Usar o Trusty como padrão ajuda os desenvolvedores de aplicativos a criar e implantar aplicativos facilmente, sem levar em conta a fragmentação de vários sistemas TEE. O Trusty TEE oferece aos desenvolvedores e parceiros transparência, colaboração, inspecionabilidade de 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 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 confiável é 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 em modo sem privilégios no kernel Trusty. Cada processo é executado em sua própria área restrita 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 tique de cronômetro seguro. Todos os aplicativos Trusty compartilham a mesma prioridade.
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 é compatível com o Trusty no momento. Embora o Trusty possibilite o desenvolvimento de novas aplicações, isso deve ser feito com extremo cuidado; cada nova aplicação 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 novas aplicações que rodem no TEE abre muitas possibilidades de inovação. No entanto, devido à própria definição de TEE, estas aplicações não podem ser distribuídas sem alguma forma de confiança associada. Normalmente, isso vem na forma de uma assinatura digital de uma entidade confiável para o usuário do produto no qual o aplicativo é executado.
Usos e exemplos
Ambientes de execução confiáveis estão se tornando rapidamente um padrão em dispositivos móveis. Os usuários dependem cada vez mais de seus dispositivos móveis para o dia a dia 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 implementação TEE, o processador principal é frequentemente referido como “não confiável”, o que significa que não pode acessar certas áreas da 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 executado 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 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 multifatorial, proteção contra redefinição de dispositivos, armazenamento persistente protegido contra reprodução, processamento seguro de PIN e impressão digital e até mesmo detecção de malware.