Segurança em dispositivos Android

Adobe AIR 2.5 e posterior

No Android, como em todos os dispositivos de computação, o AIR se conforma com o modelo de segurança nativo. Ao mesmo tempo, o AIR mantém suas próprias regras de segurança, que se destinam a facilitar aos desenvolvedores a programação de aplicativos seguros conectados à Internet.

Visto que aplicativos AIR no Android usam o formato de pacote do Android, a instalação se ajusta ao modelo de segurança do Android. O instalador de aplicativo do AIR não é usado.

O modelo de segurança do Android tem três aspectos principais:

  • Permissões

  • Assinaturas do aplicativo

  • IDs de usuário do aplicativo

Permissões do Android

Muitos recursos do Android são protegidos pelo mecanismo de permissões do sistema operacional. A fim de usar um recurso protegido, o descritor do aplicativo do AIR precisa declarar que o aplicativo requer a permissão necessária. Quando um usuário tenta instalar o aplicativo, o sistema operacional Android exibe todas as permissões solicitadas ao usuário antes de continuar com a instalação.

A maioria dos aplicativos AIR precisam especificar as permissões do Android no descritor do aplicativo. Por padrão, nenhuma permissão é incluída. As seguintes permissões são necessárias para recursos protegidos do Android expostos pelo tempo de execução do AIR:

ACCESS_COARSE_LOCATION
Permite ao aplicativo acessar dados de local de rede WIFI e celular por meio da classe Geolocation.

ACCESS_FINE_LOCATION
Permite ao aplicativo acessar dados GPS por meio da classe Geolocation.

ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
Permite ao aplicativo acessar informações de rede por meio da classe NetworkInfo.

CAMERA
Permite ao aplicativo acessar a câmera.

INTERNET
Permite ao aplicativo fazer solicitações de rede, além de permitir a depuração remota.

READ_PHONE_STATE
Permite ao tempo de execução do AIR silenciar o áudio quando uma chamada é recebida.

RECORD_AUDIO
Permite ao aplicativo acessar o microfone.

WAKE_LOCK e DISABLE_KEYGUARD
Permite ao aplicativo impedir que o dispositivo entre no modo de suspensão por meio do uso das configurações da classe SystemIdleMode.

WRITE_EXTERNAL_STORAGE
Permite ao aplicativo gravar no cartão de memória externo no dispositivo.

Assinaturas do aplicativo

Todos os pacotes de aplicativos criados para a plataforma Android precisam ser assinados. Visto que os aplicativos AIR no Android são empacotados no formato APK nativo do Android, eles são assinados de acordo com as convenções do Android, e não com as convenções do AIR. Embora o Android e o AIR usem a assinatura de código de forma semelhante, há três diferenças significativas:

  • No Android, a assinatura verifica se o desenvolvedor está de posse da chave privada, mas não é usada para verificar a identidade do desenvolvedor.

  • Para aplicativos enviados ao Android Market, o certificado precisa ser válido por pelo menos 25 anos.

  • O Android não oferece suporte a migração da assinatura do pacote para outro certificado. Se uma atualização for assinada por um certificado diferente, os usuários precisam instalar o aplicativo original para poderem instalar o aplicativo atualizado.

  • Dois aplicativos assinados com o mesmo certificado podem especificar uma ID compartilhada que permita a eles acessar o cache e os arquivos de dados um do outro. (Esse compartilhamento não é facilitado pelo AIR. )

IDs de usuário do aplicativo

O Android usa um núcleo do Linux. A cada aplicativo instalado é atribuída uma ID de usuário do tipo do Linux que determina suas permissões para operações como acesso a arquivos. Os arquivos no aplicativo, o armazenamento do aplicativo e os diretórios temporários são protegidos contra o acesso por permissões do sistema de arquivos. Arquivos programados para armazenamento externo (em outras palavras, o cartão SD) podem ser lidos, modificados ou excluídos por outros aplicativos ou pelo usuário quando o cartão SD é montado como dispositivo de armazenamento em massa em um computador.

Cookies recebidos com solicitações da Internet não são compartilhados entre aplicativos AIR.

Privacidade da imagem do fundo

Quando um usuário envia um aplicativo para o fundo, algumas versões do Android capturam a tela que ele usa como uma miniatura na lista de aplicativos recentes. Essa captura de tela é armazenada na memória do dispositivo e pode ser acessada por um invasor que tenha o controle físico do dispositivo.

Se seu aplicativo exibir informações confidenciais, você deve se proteger contra a captura dessas informações por meio da captura de tela da imagem de fundo. O evento deactivate despachado pelo objeto NativeApplication sinaliza que um aplicativo está prestes a alternar para a imagem de fundo. Use esse evento para limpar ou ocultar quaisquer informações confidenciais.

Dados criptografados no Android

Aplicativos AIR no Android podem usar as opções de criptografia disponíveis no banco de dados SQL incorporado para salvar dados criptografados. Para otimizar a segurança, posicione a chave de criptografia sobre uma senha digitada pelo usuário que é digitada sempre que o aplicativo está em execução. Uma chave de criptografia ou uma senha armazenada localmente é difícil ou impossível de ser "ocultada" de um hacker que tenha acesso aos arquivos do aplicativo. Caso o hacker consiga salvar a chave , então a criptografia dos dados não oferecerá a proteção adicional além do sistema de arquivos de segurança baseado no ID do usuário fornecido pelo sistema Android.

A classe EncryptedLocalStore pode ser usada para salvar dados, mas esses dados não serão criptografados nos dispositivos do Android. Em vez disso, o modelo de segurança do Android confia no ID de usuário do aplicativo para proteger os dados de outros aplicativos. Os aplicativos que utilizam um ID de usuário compartilhado e que são assinados com o mesmo certificado de assinatura de código utilizam o mesmo armazenamento local criptografado.

Importante: Em um telefone enraizado, qualquer aplicativo em execução com privilégios de raiz pode acessar os arquivos de qualquer outro aplicativo. Dessa forma, os dados armazenados que utilizam o armazenamento local criptografado não estão seguros em um dispositivo enraizado.