Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Segurança do sistema e kernel

No nível do sistema operacional, a plataforma Android fornece a segurança do kernel Linux, bem como um recurso de comunicação segura 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 SO garantem que até mesmo o código nativo seja restringido pelo Application Sandbox. Quer esse código seja o resultado do comportamento do aplicativo incluído ou uma exploração de uma vulnerabilidade do aplicativo, o sistema é projetado para impedir que o aplicativo nocivo danifique outros aplicativos, o sistema Android ou o próprio dispositivo. Veja Configuração do Kernel para medidas que você pode tomar para fortalecer o kernel em seus dispositivos. Consulte o Android Compatibility Definition Document (CDD) para as configurações necessárias.

Segurança Linux

A base da plataforma Android é o kernel 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 consertado por milhares de desenvolvedores, o Linux se tornou um kernel estável e seguro em que muitas empresas e profissionais de segurança confiam.

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

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

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

  • Evita 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 do aplicativo Android é reforçada pela caixa de proteção do aplicativo, que isola os aplicativos uns dos outros e protege os aplicativos e o sistema de aplicativos maliciosos. Para obter mais detalhes, consulte Application Sandbox .

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, tempo de execução do aplicativo, estrutura do aplicativo e 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 no 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 explicitamente os arquivos com outros aplicativos, os arquivos criados por um aplicativo não podem ser lidos ou alterados por outro aplicativo.

Linux com segurança aprimorada

O Android usa Security-Enhanced Linux (SELinux) para aplicar políticas de controle de acesso e estabelecer controle de acesso obrigatório (mac) nos processos. Consulte Security-Enhanced Linux in Android para obter detalhes.

Inicialização verificada

O Android 6.0 e posterior oferece suporte para inicialização verificada e verificação do mapeador de dispositivos. A inicialização verificada garante a integridade do software do dispositivo a partir de uma raiz de hardware confiável até a partição do sistema. Durante a inicialização, cada estágio verifica criptograficamente a integridade e autenticidade do próximo estágio antes de executá-lo.

O Android 7.0 e posterior oferece suporte à inicialização verificada estritamente 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 por aplicativos. Isso inclui implementações de primitivas criptográficas padrão e comumente usadas, como AES, RSA, DSA e SHA. Além disso, 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.

Rooting of Devices

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 root modifique o sistema operacional, 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 root a aplicativos aumentam a exposição de segurança a aplicativos maliciosos e possíveis falhas de aplicativo.

A capacidade de modificar um dispositivo Android de sua propriedade é importante para os desenvolvedores que trabalham com a plataforma Android. Em muitos dispositivos Android, os usuários têm a capacidade de desbloquear o bootloader 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 a aplicativos por 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 do comprometimento, o mecanismo de desbloqueio do carregador de inicialização requer que o carregador de inicialização apague todos os dados de usuário existentes como parte da etapa de desbloqueio. O acesso root obtido através da exploração de um bug do kernel ou falha de segurança pode contornar essa proteção.

A criptografia de dados com uma chave armazenada no dispositivo não protege os dados do aplicativo de usuários raiz. 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 uma senha de usuário. Essa abordagem pode fornecer proteção temporária enquanto a chave não está presente, mas em algum ponto a chave deve ser fornecida ao aplicativo e então se torna acessível aos usuários root.

Uma abordagem mais robusta para proteger dados de usuários raiz é por meio 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 a NFC para carteira do Google.

No caso de um dispositivo perdido ou roubado, a criptografia completa do sistema de arquivos em dispositivos Android usa a senha do dispositivo para proteger a chave de criptografia, portanto, modificar o carregador 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, de modo que todos os dados do usuário podem ser criptografados no kernel.

Android 5.0 e posterior oferece suporte à 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 de um dispositivo. Na inicialização, os usuários devem fornecer suas credenciais antes que qualquer parte do disco seja acessível.

Android 7.0 e posterior suporta criptografia baseada em arquivo . A criptografia baseada em arquivo permite que diferentes arquivos sejam criptografados com diferentes chaves 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 prevenir o uso não autorizado do dispositivo, esta senha protege a chave criptográfica para criptografia completa do sistema de arquivos.

O uso de uma senha e / ou regras de complexidade de senha pode ser exigido por um administrador de 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 de e-mail Android integrado usa as APIs para melhorar o suporte ao Exchange. Por meio do aplicativo de e-mail, 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) aparelhos perdidos ou roubados.

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