Criptografia para dispositivos iOS

Vinicius Mangueira
7 min readJun 19, 2020

--

Introdução a criptografia para dispositivos iOS.

Sumário

Neste post nós vamos discutir sobre:

  • Segurança dos Sistemas APPLE.
  • Secure Enclave.
  • Aplicaremos conceitos no iOS.
  • Data Protection.
  • Demonstração do Data Protection trabalhando com arquivos.

Introdução

É de senso comum que a Apple é uma das empresas que mais investiram em segurança e criptografia desde sua existência. É notório que os dispositivos que possuem o iOS são seguros, e isso foi sempre um ponto positivo e sempre citado entre a comunidade. Essas afirmações são verdadeiras? Por qual motivo as pessoas sempre falaram isso dos produtos Apple ? Como funciona o sistema de criptografia e segurança da empresa? Todos estes tópicos serão abordados aqui, se você tiver alguma dúvida sobre criptografia ou outra questão sobre esses tópicos pode sana-las nos comentários.

Segurança dos Sistemas Apple

A segurança do sistema é projetada para que o software e que o hardware sejam seguros em todos os principais componentes de qualquer dispositivo iOS, incluindo todos os processos, isso inclui as atualizações de software, a inicialização do sistema e o próprio Secure Enclave que será abordado posteriormente. Como a Apple é responsável pelo criação do produto desde a fase inicial até a distribuição assegura uma forte integração entre hardware e software e até próprios serviços nos dispositivos iOS que são fiscalizados e gerenciados pela própria empresa, isso garante que cada componente do sistema seja confiável e dessa forma podendo validar o sistema como um todo. Desde a inicialização ás atualizações de software até mesmo a instalação de aplicativos de terceiros, todas essas etapas são analisadas várias vezes para garantir que o Hardware e Software em conjunto, assim podendo utilizar cada recurso adequadamente.

Então com isso podemos responder nossa primeira pergunta, ou se você não lembra: “Os dispositivos com iOS são realmente seguros?”. Podemos dizer até aqui que sim, com os motivos apresentados acima, só que como estamos aqui para falar de criptografia e segurança da informação, nem tudo ou quase tudo sempre são um mar de flores, vamos explorar mais esse mundo posteriormente.

Secure Enclave

Você já ouviu falar do Secure Enclave? Temos certeza que sim, pois há pouco falamos disso. Na definição formal o Secure Enclave é um coprocessador que tem fabricação em chip(SoC). Ele usa memória criptografada e inclui no hardware um algoritmo gerador de números aleatórios. O Secure Enclave fornece todas as criptografias possíveis já usadas para gerenciamento de chaves do Data Protection e mantém a integridade da Proteção de Dados, mesmo se até o kernel for comprometido.

Para isso o Secure Enclave inclui-se a uma ROM de inicialização dedicada para o mesmo, tendo assim um código imutável no Firmware, assinado pela Apple.

Quando o dispositivo é iniciado, uma chave de proteção de memória efêmera é criada pela ROM de inicialização do Secure Enclave, enredado com o dispositivo.
O UID, é usado para criptografar a parte do Secure Enclave do dispositivo
espaço de memória. Exceto no Apple A7, a memória Secure Enclave é
também autenticado com a chave de proteção de memória. Na A11 e mais recente e S4 SoCs, uma árvore de integridade é usada para impedir a reprodução de ameaças críticas.
Memória Secure Enclave, autenticada pela chave de proteção de memória e
depois armazenados em SRAM no chip.
Os dados salvos no sistema de arquivos pelo Secure Enclave são criptografados com uma chave enredada com o UID e um contador anti-replay. O anti-replay écontador é armazenado em um circuito integrado de memória não volátil dedicado (IC).
Nos dispositivos com SoCs A12 e S4, o Secure Enclave é emparelhado com
circuito integrado de armazenamento seguro (IC) para armazenamento anti-replay contador. O armazenamento seguro IC é projetado com código ROM imutável, um hardware
gerador de números aleatórios, mecanismos de criptografia e adulteração física detecção. Para ler e atualizar contadores, o Secure Enclave e o IC de armazenamento empregam um protocolo seguro que garante acesso exclusivo aos contadores.
Os serviços anti-replay no Secure Enclave são usados ​​para a revogação de
dados sobre eventos que marcam limites anti-replay incluindo, mas não
limitado a:
• Mudança de senha
• Ativar / desativar ID de Toque ou ID Rosto
• Impressão digital adicionar / excluir
• Redefinição da ID de rosto
• Cartão de pagamento da Apple adicionar / remover
• Apague todo o conteúdo e configurações
O Secure Enclave também é responsável por processar impressões digitais e
dados de rosto dos sensores Touch ID e Face ID, determinando se há
uma correspondência e, em seguida, ativar o acesso ou compras em nome do usuário.
Ou seja tudo relacionado a segurança como já citado acima, passa pelo Secure Enclave, como já citado o Touch ID, uma sacada genial da empresa.

Touch ID, Used Secure Enclave

Aplicação:

O sensor de impressões digitais está ativo se e somente se houver um toque de um dedo, que assim desencadeia a matriz de imagem avançada para digitalizar o dedo, transformar em imagem para que possa realizar a tarefa do processamento digital de imagem(Para saber um pouco mais de processamento digital de imagem: Machine Learning e PDI), depois disso encaminha os dados para o Secure Enclave, mas não consegue lê-los de forma ativa pois já estão Encriptados assim autenticando com a chave enviada para cada sensor do Touch ID.

Criptografe seus App’s

Agora… Já sei um pouco mais sobre segurança nos dispositivos iOS, mas e aí? Sou um desenvolvedor iOS, tem como aplicar alguma técnica, ou tem alguma classe, API, biblioteca ou Etc que possa nos auxiliar no desenvolvimento de um APP? A resposta de imediato é, sim… Mas como? Abaixo vamos um pouco dessa criptografia trabalhando com arquivos.

Data Protection

O Data Protection é um recurso do sistema iOS que é usado para proteger os arquivos do sistema e impedir o acesso sem autorização desses arquivos. A proteção de dados é ativada automaticamente quando o usuário define uma senha que está para o dispositivo, você pode ler e gravar seus arquivos manualmente como em qualquer outro sistema, porém com o esquema de criptografia por chaves, ele criptografa e descriptografa automaticamente pelo uso do Secure Enclave.

Você pode especificar o tipo de proteção que deseja aplicar a cada um dos seus arquivos. Incialmente existem quatro níveis de proteção disponíveis, cada um basicamente define como será o seu acesso aquele determinado arquivo no Device. Se você não especificar esse nível de proteção quando criar o arquivo o próprio sistema vai atribuir a proteção de arquivos padrão do sistema que chamaremos de Default que será explicado logo abaixo juntamente aos demais níveis de proteção:

  • No Protection: Como o próprio nome sugestivo já diz… O arquivo não terá nenhum tipo de restrição de segurança podendo ser acessível a todo momento.
  • Default ou Complete until first user authentication: O arquivo está sempre inacessível até que a primeira autenticação do usuário seja usada, seja por Face ID, Touch ID e etc. Ou seja depois do primeiro desbloqueio do Device, até que o desligue ou reinicialize o arquivo está acessível.
  • Complete unless open: Você pode abrir arquivos existentes somente quando o dispositivo esteja desbloqueado. Porém se você já estiver com um arquivo aberto poderá acessa-lo enquanto o dispositivo estiver desbloqueado ou não
  • Complete: É modo com maior restrição possível a nível de device. O arquivo só está acessível de qualquer forma, se o dispositivo estiver desbloqueado.

Na prática

Para criar e criptografar um novo arquivo em uma etapa, construa um objeto com o conteúdo do arquivo que deseja e invoque o método da classe URLFileProtection, ao chamar o método você deve especificar a opção de proteção, que listamos e aprendemos acima.

Abaixo mostraremos um exemplo básico de como gravar o conteúdo de uma instância de um arquivo e assim criptografa-lo usando o último nível de proteção mostrado: Complete

Exemplo de criação com FileProtection

Com isso você conseguiu criar o arquivo tratado com a opção completa de proteção, ou seja o usuário só tem acesso a esse arquivo quando o dispositivo estiver desbloqueado. E para modificar um arquivo já existente, passar um nível de proteção para ele?

Abaixo você pode ver um exemplo, onde ao chamar o método, você pode atribuir uma nova opção de Data Protection, com a chave do recurso logicamente.

Exemplo de criptografia e modificação de chave de recurso

Agora sim, somos capazes de entender um pouco mais sobre criptografia nos dispositivos iOS, sabemos como funciona por debaixo dos panos, e além disso conseguimos responder e justificar nossas primeiras perguntas, sobre a notoriedade da segurança dos dispositivos iOS,e porque as pessoas sempre falam sobre esse ponto positivo dos produtos Apple.

Se tiver alguma dúvida, pode nos contactar por:

Linkedln: Vinicius Mangueira Correia

Git Hub: ViniciusDeep

--

--

Vinicius Mangueira

I'm Mobile developer who loves to learn about new web and mobile technologies. I combine my Computer Science studies with my soft skils