Criptografia para dispositivos iOS

Secure Enclave, Data Protection e muito mais

Postado por Vinícius Mangueira em 13 de Fevereiro, 2019

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 aqui na 3xbit Academy.

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. Lembrando se você chegou até aqui e ainda não sabe como a criptografia no modo geral funciona acesse 3xbit Academy.

Secure Enclave

Você já ouviu falar do Secure Enclave? Temos certeza que sim, pois há poucos 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
 
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

ENCRY

ENCRY. GitHub Gist: instantly share code, notes, and snippets.

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.

encry

encry. GitHub Gist: instantly share code, notes, and snippets.

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.