O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Segurança do sistema e do kernel

No nível do sistema operacional, a plataforma Android fornece a segurança do kernel Linux, bem como um recurso de comunicação entre processos (IPC) para permitir a comunicação segura entre aplicativos em execução em diferentes processos. Esses recursos de segurança no nível do sistema operacional garantem que mesmo o código nativo seja restringido pelo Application Sandbox. Este código é o resultado do comportamento do aplicativo incluído ou da exploração de uma vulnerabilidade do aplicativo, o sistema foi projetado para impedir que o aplicativo invasor prejudique outros aplicativos, o sistema Android ou o próprio dispositivo. Consulte Configuração do kernel para obter as medidas que você pode tomar para fortalecer o kernel em seus dispositivos. Consulte o CDD (Android Compatibility Definition Document) para obter as configurações necessárias.

Segurança Linux

A base da plataforma Android é o kernel do Linux. O kernel do Linux tem sido amplamente utilizado por anos e é usado em milhões de ambientes sensíveis à segurança. Através de sua história de ser constantemente pesquisado, atacado e corrigido por milhares de desenvolvedores, o Linux se tornou um núcleo estável e seguro, confiável por muitas empresas e profissionais de segurança.

Como base para um ambiente de computação móvel, o kernel Linux fornece ao Android vários recursos importantes de segurança, incluindo:

  • Um modelo de permissões com base no usuário
  • Isolamento do processo
  • Mecanismo extensível para IPC seguro
  • A capacidade de remover partes desnecessárias e potencialmente inseguras do kernel

Como sistema operacional multiusuário, um objetivo fundamental de segurança do kernel Linux é isolar os recursos do usuário um do outro. A filosofia de segurança do Linux é proteger os recursos do usuário um do outro. Assim, Linux:

  • Impede que o usuário A leia os arquivos do usuário B
  • Garante que o usuário A não esgote a memória do usuário B
  • Garante que o usuário A não esgote os recursos da CPU do usuário B
  • Garante que o usuário A não esgote os dispositivos do usuário B (por exemplo, telefonia, GPS e Bluetooth)

A Sandbox do aplicativo

A segurança de aplicativos do Android é imposta pela caixa de proteção de aplicativos, que isola aplicativos um do outro e protege aplicativos e o sistema de aplicativos maliciosos. Para mais detalhes, consulte Sandbox de Aplicativos .

Partição do sistema e modo de segurança

A partição do sistema contém o kernel do Android, bem como as bibliotecas do sistema operacional, o tempo de execução do aplicativo, a estrutura e os aplicativos. Esta partição está definida como somente leitura. Quando um usuário inicializa o dispositivo no Modo de Segurança, aplicativos de terceiros podem ser iniciados manualmente pelo proprietário do dispositivo, mas não são iniciados por padrão.

Permissões do sistema de arquivos

Em um ambiente de estilo UNIX, as permissões do sistema de arquivos garantem que um usuário não possa alterar ou ler os arquivos de outro usuário. No caso do Android, cada aplicativo é executado como seu próprio usuário. A menos que o desenvolvedor compartilhe arquivos explicitamente com outros aplicativos, os arquivos criados por um aplicativo não poderão ser lidos ou alterados por outro aplicativo.

Linux com segurança aprimorada

O Android usa Linux com segurança aprimorada (SELinux) para aplicar políticas de controle de acesso e estabelecer controle de acesso obrigatório (mac) nos processos. Consulte Linux com segurança aprimorada no Android para obter detalhes.

Inicialização verificada

O Android 6.0 e versões posteriores são compatíveis com inicialização verificada e verificador de mapeador de dispositivos. A inicialização verificada garante a integridade do software do dispositivo, desde uma raiz de confiança do hardware até a partição do sistema. Durante a inicialização, cada estágio verifica criptograficamente a integridade e a autenticidade do próximo estágio antes de executá-lo.

O Android 7.0 e posterior oferecem suporte à inicialização verificada rigorosamente aplicada, o que significa que os dispositivos comprometidos não podem inicializar.

Consulte Inicialização verificada para obter mais detalhes.

Criptografia

O Android fornece um conjunto de APIs criptográficas para uso dos aplicativos. Isso inclui implementações de primitivas criptográficas padrão e comumente usadas, como AES, RSA, DSA e SHA. Além disso, as APIs são fornecidas para protocolos de nível superior, como SSL e HTTPS.

O Android 4.0 introduziu a classe KeyChain para permitir que os aplicativos usem o armazenamento de credenciais do sistema para chaves privadas e cadeias de certificados.

Enraizamento de dispositivos

Por padrão, no Android, apenas o kernel e um pequeno subconjunto dos aplicativos principais são executados com permissões de root. O Android não impede que um usuário ou aplicativo com permissões de raiz modifique o sistema operacional, o kernel ou qualquer outro aplicativo. Em geral, o root tem acesso total a todos os aplicativos e todos os dados do aplicativo. Os usuários que alteram as permissões em um dispositivo Android para conceder acesso raiz a aplicativos aumentam a exposição de segurança a aplicativos maliciosos e possíveis falhas de aplicativos.

A capacidade de modificar um dispositivo Android que eles possuem é importante para os desenvolvedores que trabalham com a plataforma Android. Em muitos dispositivos Android, os usuários podem desbloquear o gerenciador de inicialização para permitir a instalação de um sistema operacional alternativo. Esses sistemas operacionais alternativos podem permitir que um proprietário obtenha acesso root para fins de depuração de aplicativos e componentes do sistema ou para acessar recursos não apresentados aos aplicativos pelas APIs do Android.

Em alguns dispositivos, uma pessoa com controle físico de um dispositivo e um cabo USB pode instalar um novo sistema operacional que fornece privilégios de root ao usuário. Para proteger qualquer dado de usuário existente de comprometer o mecanismo de desbloqueio do carregador de inicialização, é necessário que ele apague todos os dados existentes do usuário como parte da etapa de desbloqueio. O acesso root obtido através da exploração de um bug do kernel ou de uma falha de segurança pode ignorar essa proteção.

Criptografar dados com uma chave armazenada no dispositivo não protege os dados do aplicativo dos usuários root. Os aplicativos podem adicionar uma camada de proteção de dados usando criptografia com uma chave armazenada fora do dispositivo, como em um servidor ou em uma senha de usuário. Essa abordagem pode fornecer proteção temporária enquanto a chave não estiver presente, mas em algum momento a chave deve ser fornecida ao aplicativo e, em seguida, torna-se acessível aos usuários root.

Uma abordagem mais robusta para proteger os dados dos usuários root é através do uso de soluções de hardware. Os OEMs podem optar por implementar soluções de hardware que limitam o acesso a tipos específicos de conteúdo, como DRM para reprodução de vídeo ou armazenamento confiável relacionado à NFC para a carteira do Google.

No caso de um dispositivo perdido ou roubado, a criptografia completa do sistema de arquivos nos dispositivos Android usa a senha do dispositivo para proteger a chave de criptografia, portanto, modificar o gerenciador de inicialização ou o sistema operacional não é suficiente para acessar os dados do usuário sem a senha do dispositivo do usuário.

Recursos de segurança do usuário

Criptografia do sistema de arquivos

O Android 3.0 e posterior fornece criptografia completa do sistema de arquivos, para que todos os dados do usuário possam ser criptografados no kernel.

O Android 5.0 e posterior suporta criptografia de disco completo . A criptografia de disco completo usa uma única chave - protegida com a senha do dispositivo do usuário - para proteger toda a partição de dados do usuário do dispositivo. Na inicialização, os usuários devem fornecer suas credenciais antes que qualquer parte do disco esteja acessível.

O Android 7.0 e posterior oferecem suporte à criptografia baseada em arquivo . A criptografia baseada em arquivo permite que arquivos diferentes sejam criptografados com chaves diferentes que podem ser desbloqueadas independentemente.

Mais detalhes sobre a implementação da criptografia do sistema de arquivos estão disponíveis na seção Criptografia .

Proteção de senha

O Android pode ser configurado para verificar uma senha fornecida pelo usuário antes de fornecer acesso a um dispositivo. Além de impedir o uso não autorizado do dispositivo, essa senha protege a chave criptográfica para a criptografia completa do sistema de arquivos.

O uso de uma senha e / ou regras de complexidade de senha pode ser exigido pelo administrador do dispositivo.

Administração de dispositivos

O Android 2.2 e posterior fornecem a API de administração de dispositivos Android, que fornece recursos de administração de dispositivos no nível do sistema. Por exemplo, o aplicativo Android Email interno usa as APIs para melhorar o suporte do Exchange. Por meio do aplicativo Email, os administradores do Exchange podem aplicar políticas de senha - incluindo senhas alfanuméricas ou PINs numéricos - em todos os dispositivos. Os administradores também podem limpar remotamente (ou seja, restaurar os padrões de fábrica) os aparelhos perdidos ou roubados.

Além de serem usadas em aplicativos incluídos no sistema Android, essas APIs estão disponíveis para fornecedores de soluções de gerenciamento de dispositivos. Detalhes sobre a API são fornecidos em Administração de dispositivos .