Skip to content

Autenticação Local no iOS

Visão Geral

Durante a autenticação local, um aplicativo autentica o usuário em relação às credenciais armazenadas localmente no dispositivo. Em outras palavras, o usuário "desbloqueia" o aplicativo ou alguma camada interna de funcionalidade fornecendo um PIN, senha válida ou características biométricas como rosto ou impressão digital, que são verificadas por referência a dados locais. Geralmente, isso é feito para que os usuários possam retomar com mais conveniência uma sessão existente com um serviço remoto ou como meio de autenticação escalonada para proteger alguma função crítica.

Como afirmado anteriormente no capítulo "Arquiteturas de Autenticação em Aplicativos Móveis": O testador deve estar ciente de que a autenticação local deve sempre ser aplicada em um endpoint remoto ou com base em uma primitiva criptográfica. Os invasores podem facilmente contornar a autenticação local se nenhum dado for retornado do processo de autenticação.

Existem vários métodos disponíveis para integrar a autenticação local em aplicativos. O framework Local Authentication fornece um conjunto de APIs para que os desenvolvedores estendam uma caixa de diálogo de autenticação ao usuário. No contexto de conexão com um serviço remoto, é possível (e recomendado) aproveitar o keychain para implementar a autenticação local.

A autenticação por impressão digital no iOS é conhecida como Touch ID. O sensor de ID de impressão digital é operado pelo coprocessador de segurança SecureEnclave e não expõe dados de impressão digital para nenhuma outra parte do sistema. Além do Touch ID, a Apple introduziu o Face ID: que permite a autenticação baseada no reconhecimento facial. Ambos usam APIs semelhantes em nível de aplicativo, sendo o método real de armazenamento e recuperação dos dados (por exemplo, dados faciais ou dados relacionados à impressão digital) diferente.

Os desenvolvedores têm duas opções para incorporar a autenticação Touch ID/Face ID:

  • LocalAuthentication.framework é uma API de alto nível que pode ser usada para autenticar o usuário via Touch ID. O aplicativo não pode acessar nenhum dado associado à impressão digital cadastrada e é notificado apenas se a autenticação foi bem-sucedida.
  • Security.framework é uma API de nível mais baixo para acessar serviços de keychain. Esta é uma opção segura se seu aplicativo precisar proteger alguns dados secretos com autenticação biométrica, já que o controle de acesso é gerenciado em nível de sistema e não pode ser facilmente contornado. Security.framework possui uma API em C, mas existem vários wrappers de código aberto disponíveis, tornando o acesso ao keychain tão simples quanto ao NSUserDefaults. Security.framework é a base do LocalAuthentication.framework; a Apple recomenda usar as APIs de nível mais alto sempre que possível.

Esteja ciente de que usar o LocalAuthentication.framework ou o Security.framework será um controle que pode ser contornado por um invasor, pois retorna apenas um booleano e nenhum dado para prosseguir. Consulte Don't touch me that way, by David Lindner et al para mais detalhes.

Knowledge Articles

ID Name Platform
MASTG-KNOW-0057 Serviços Keychain platform:ios
MASTG-KNOW-0056 Framework de Autenticação Local platform:ios