Segurança moderna no Android
Em primeiro lugar, vamos falar sobre por que a segurança dentro dos smartphones é tão importante, nos anos 90 a televisão era o que o celular é hoje, todo mundo tem um, mesmo se você fosse de classe média você tem uma televisão, então imagine todas as pessoas que têm um telefone Android agora, esse número vai para mais de 2,5 bilhões de telefones ativos, é nosso trabalho como desenvolvedores estarmos cientes do perigo lá fora, precisamos ser cuidadosos em favor da empresa em que trabalhamos, mas principalmente devemos ser cuidado com o gerenciamento dos dados que nossos usuários nos fornecem.
Dentro do Google, a equipe do Android tem trabalhado mais do que nunca para gerenciar um sistema operacional mais seguro.
Em 2018 o Android tinha 0 vulnerabilidades de segurança e temos quase 84% dos dispositivos com atualizações de segurança, mas ainda temos problemas, pois nem todos os telefones recebem atualizações, pois dependemos das operadoras para fazer atualizações e, portanto, representa um dos maiores problemas em O Android, basicamente, é o nosso trabalho para fazer isso direito, no final do dia, temos usuários que não são tecnológicos e tudo bem, precisamos começar a pensar em nossos usuários como uma pessoa do outro lado da tela .
A primeira vez que ouvimos sobre criptografia ficamos todos tontos, porque pensamos que isso vai ser muito difícil de lidar, mas na realidade, as coisas são completamente diferentes, vamos ver este esquema:
Temos nossos dados que queremos criptografar, pode ser o token do nosso servidor, informações importantes para o nosso usuário ou algum outro token que desejamos manter privado. Esses dados passam por um algoritmo, esse algoritmo cria uma chave de criptografia e acabamos com nossos dados cifrados.
O que é Cipher, Mac, Signature e MessageDigest?
Nesta postagem, cobrimos apenas o Cipher, porque é um dos mais comuns no Android, e todos os outros funcionam quase da mesma forma, leve em consideração que todos esses métodos são algoritmos que descriptografam e criptografam dados. Normalmente, no Mobile, precisamos usar uma combinação de um esquema de criptografia, um modo e preenchimento para criar uma cifra. Por exemplo:
O esquema pode ser:
Padrão de criptografia avançada (AES) ou Rivest – Shamir – Adleman (RSA)
O modo pode ser:
Simétrico ou não simétrico, geralmente deve ser um CBG ou GCM com chaves de 256 bits
Esquema de preenchimento:
É a parte da criptografia que pode te ajudar a economizar dados maiores que sua chave, basicamente, eles colocam informações não relevantes dependendo dos seus dados.
No Android existe uma classe Cipher, onde você pode criar seu esquema Cipher, não criar seu próprio sistema de criptografia, é desnecessário e incrivelmente perigoso, então, por favor, não faça isso, no segundo post deste tópico de histórias, irei mostrar você como fazer isso.
Você pode ver todos os algoritmos suportados pelo Android e versões do Android aqui
Todos os telefones possuem sistema de criptografia?
A resposta curta é não, porque quando falamos de criptografia, também estamos falando de hardware.
Provavelmente você viu esta opção em seu manifesto acelerado por hardware é usado para muitas coisas, está tudo bem se você estiver usando para fazer animações extravagantes, na verdade, você pode colocá-lo em todo o seu aplicativo, em apenas uma atividade ou até mesmo um exibição específica, mas também é totalmente necessária para criptografia. No passado, especificamente, antes do Android 6.0, a implementação de criptografia era baseada no destino dm-crypt device-mapper, que realiza operações criptográficas por meio das interfaces fornecidas pelo kernel Linux com API de criptografia. Mas agora, as coisas mudaram, nossos novos telefones podem ter criptografia de disco que pode ser acelerada porque os provedores adicionaram um driver de API de criptografia de kernel que aproveita o hardware criptográfico do SoC. Isso permite que a criptografia de bloco seja descarregada da CPU principal e melhora os tempos de acesso ao disco.
Criptografia de dados
O futuro já mudou, no Android 7.0 e superior suporta criptografia baseada em arquivo (FBE). A criptografia baseada em arquivo permite que arquivos diferentes sejam criptografados com chaves diferentes que podem ser desbloqueadas independentemente, sem vazar sua chave no aplicativo.
O Google está trabalhando em uma nova biblioteca que será entregue no Android Jetpack: androidx.security:security-crypto:1.1.0-alpha02
Os arquivos e dados de seu aplicativo serão protegidos por permissões de usuário do sistema Linux, o que impede o acesso de outros aplicativos ou invasores em dispositivos sem acesso root. Ter um cuidado especial em uma mistura de bom desempenho e segurança forte, usando Keystore apoiado por hardware e presença do usuário para fornecer acesso à chave, então isso vai ficar divertido.
Vamos falar um pouco mais sobre essa biblioteca na próxima parte deste artigo, mas antes de terminar, precisamos falar sobre a limitação, a biblioteca está em Alpha, então leve isso em consideração, a segunda coisa que resta em A tabela, é que, devido à dependência da biblioteca de criptografia do Google Tink, vamos exigir um SDK23 mínimo para as operações do Android Keystore, mas o Google está trabalhando para torná-la uma biblioteca de suporte completo, portanto, o suporte para Android 23 e versões anteriores está chegando.
Obrigado por gastar seu tempo lendo este artigo. Compartilhe se você gostou!
Aqui está a lista dos blogs desta série:
Parte 1 – Criptografia Vol 1
Parte 2 – Criptografia Vol 2
Parte 3 – Criptografia Vol 3
Parte 4 – Biométrica como Autorização Local
Parte 5 – Módulos de código nativo
Parte 6 – SSL, TLS, camada de dados segura