Biometria

A biometria oferece uma maneira mais conveniente, mas potencialmente menos segura, de confirmar sua identidade com um dispositivo. No modelo de autenticação em camadas, a autenticação principal (ou seja, modalidades baseadas em conhecimento, como PIN, padrão e senha) oferece o maior nível de segurança. A biometria está no nível secundário de autenticação, oferecendo um equilíbrio entre conveniência e segurança. O CDD do Android define três classes de força biométrica: Classe 3 (antes forte), Classe 2 (antes fraca) e Classe 1 (antes conveniência). Cada classe tem um conjunto de pré-requisitos, privilégios e restrições. Consulte a CDD acima para mais detalhes. Todas as três classes podem ser integradas à tela de bloqueio, mas somente os autenticadores fortes e fracos podem ser integrados às APIs android.hardware.biometrics. Esta tabela descreve cada autenticador e as funcionalidades compatíveis.

Autenticador Tela de bloqueio Integração do BiometricPrompt Keystore (chave baseada em tempo) Keystore (chave baseada em operação)
BIOMETRIC_STRONG (Classe 3) Sim Sim Sim Sim
BIOMETRIC_WEAK (Classe 2) Sim Sim Não Não
BIOMETRIC_CONVENIENCE
(Classe 1)
Sim Não Não Não
DEVICE_CREDENTIAL Sim Sim Sim Sim

O framework do Android oferece suporte à autenticação biométrica facial e de impressão digital. O Android pode ser personalizado para oferecer suporte a outras modalidades biométricas (como a íris). No entanto, a integração biométrica vai depender da segurança biométrica, não da modalidade. Para mais detalhes sobre as especificações de segurança biométrica, consulte Como medir a segurança de desbloqueio biométrico.

Origem

Android 12

  • Introdução da API BiometricManager.Strings, que fornece strings localizadas para apps que usam o BiometricPrompt para autenticação. Essas strings são compatíveis com o dispositivo e fornecem mais especificidade sobre quais tipos de autenticação podem ser usados.
  • Inclui suporte para o sensor de impressão digital sob a tela (UDFPS).

Android 11

  • Introduz a interface BiometricManager.Authenticators, que fornece constantes que os desenvolvedores podem usar para especificar os tipos de autenticação aceitos pelos apps.
  • Adição da ação de intent ACTION_BIOMETRIC_ENROLL, que os desenvolvedores podem usar para direcionar o usuário a registrar um método de autenticação que atenda aos requisitos dos apps.
  • Foi adicionado o método AuthenticationResult#getAuthenticationType(), que os desenvolvedores podem usar para verificar se o usuário foi autenticado usando uma credencial biométrica ou de dispositivo.
  • Oferece suporte adicional para chaves de autenticação ao uso na classe BiometricPrompt.

Android 10

  • A classe BiometricManager é introduzida. Ela pode ser usada pelos desenvolvedores para consultar a disponibilidade de autenticação biométrica.
  • Inclui integração de impressão digital e autenticação facial para BiometricPrompt

Android 9

  • Inclui a integração de impressão digital apenas para BiometricPrompt.
  • A classe FingerprintManager foi descontinuada. Se os apps agrupados e do sistema usarem essa classe, atualize-os para usar BiometricPrompt e BiometricManager.
  • Atualizamos os testes do verificador do CTS FingerprintManager para testar BiometricPrompt usando BiometricPromptBoundKeysTest.

Implementação

Para garantir que os usuários e desenvolvedores tenham uma experiência biométrica perfeita, integre sua pilha biométrica com as APIs BiometricPrompt, BiometricManager e ACTION_BIOMETRIC_ENROLL. Os dispositivos com sensores biométricos precisam obedecer a esses requisitos de força.Além disso, todas as implementações precisam passar no módulo CTS CtsBiometricsTestCases.

Para integrar sua pilha biométrica à API ACTION_BIOMETRIC_ENROLL:

  1. Modifique a BiometricEnrollActivity para apresentar seu fluxo de registro. Sua biometria só pode ser apresentada se atender ao nível de segurança solicitado. Se o dispositivo oferecer suporte a mais de um, essa ação vai apresentar uma lista para o usuário escolher.
Arquitetura do BiometricPrompt
Figura 1. Arquitetura do BiometricPrompt

Diretrizes de implementação do HAL

Siga estas diretrizes do HAL biométrico para garantir que os dados biométricos não sejam vazados e remova-os quando um usuário for removido de um dispositivo:

  • Verifique se os dados biométricos brutos ou derivados (como modelos) nunca são acessíveis fora do ambiente isolado seguro (como o TEE ou o elemento seguro). Todos os dados armazenados precisam ser criptografados com uma chave específica do dispositivo conhecida apenas pelo TEE (Ambiente de execução confiável). Se o hardware oferecer suporte, limite o acesso do hardware ao ambiente isolado seguro e proteja-o com uma política do SELinux. Faça com que o canal de comunicação (por exemplo, SPI, I2C) seja acessível apenas ao ambiente isolado seguro com uma política SELinux explícita em todos os arquivos do dispositivo.
  • A aquisição, a inscrição e o reconhecimento biométricos precisam ocorrer dentro do ambiente isolado seguro para evitar violações de dados e outros ataques. Esse requisito se aplica apenas à biometria Classe 3 (anteriormente forte) e Classe 2 (anteriormente fraca).
  • Para se proteger contra ataques de repetição, assine modelos biométricos com uma chave privada específica do dispositivo. Para o padrão de criptografia avançada (AES), no mínimo, assine um modelo com o caminho absoluto do sistema de arquivos, o grupo e o ID biométrico, para que os arquivos de modelo não funcionem em outro dispositivo ou para qualquer pessoa que não seja o usuário que os registrou no mesmo dispositivo. Por exemplo, impedir a cópia de dados biométricos de outro usuário no mesmo dispositivo ou em outro.
  • Se você precisar armazenar dados fora do TEE, use o caminho do sistema de arquivos fornecido pelo setActiveUser() HIDL method ou forneça outra maneira de apagar todos os dados do modelo de usuário quando o usuário for removido. O motivo é proteger o vazamento de dados do usuário. Os dispositivos que não usam esse caminho precisam limpar o caminho depois que o usuário é removido. O CDD exige que os dados biométricos e arquivos derivados sejam armazenados criptografados, especialmente se não estiverem no TEE. Se isso for inviável devido aos requisitos de armazenamento do ambiente isolado seguro, adicione ganchos para garantir a remoção dos dados quando o usuário for removido ou o dispositivo for apagado. Consulte LockSettingsService.removeBiometricsForUser()

Personalização

Se o dispositivo oferecer suporte a várias biometrias, o usuário poderá especificar um padrão nas configurações. A implementação de BiometricPrompt precisa preferir a biometria Classe 3 (anteriormente forte) como padrão, a menos que o usuário a substitua explicitamente. Nesse caso, uma mensagem de aviso precisa ser exibida explicando os riscos associados à biometria (por exemplo, uma foto sua pode desbloquear seu dispositivo).

Strings de autenticação específicas do dispositivo

A partir do Android 12, as strings de autenticação contextual são disponibilizadas para os desenvolvedores pela API BiometricManager.Strings. É possível personalizar os valores de recursos retornados por essa API para implementar strings específicas do dispositivo. Se você fizer isso, verifique se todas as novas strings são traduzidas para todas as localidades com suporte do dispositivo. Além disso, verifique se as propriedades a seguir são preservadas:


Método

Finalidade da string

Tipos de autenticação a serem incluídos

Se a biometria e o bloqueio de tela forem possíveis

getButtonLabel()

Rótulo de um botão que aciona o BiometricPrompt

Somente tipos cadastrados (se possível) que atendam aos requisitos do autenticador

Use a string somente biométrica (por exemplo, "Use impressão digital")

getPromptMessage()

Mensagem mostrada no BiometricPrompt durante a autenticação

Somente tipos cadastrados (se possível) que atendam aos requisitos do autenticador

Use a string de bloqueio de tela e biometria combinada (por exemplo, "Use sua impressão digital ou PIN para continuar").

getSettingName()

Nome de uma configuração que ativa o BiometricPrompt para autenticação.

Todos os tipos com suporte do dispositivo (mesmo que não estejam registrados) que atendam aos requisitos do autenticador

Use a string de bloqueio de tela e biometria combinada (por exemplo, "Use impressão digital ou bloqueio de tela")

Por exemplo, considere um dispositivo com um sensor de reconhecimento facial de classe 2 com uma face registrada, um PIN registrado e um sensor de impressão digital de classe 3 sem impressões digitais registradas. A tabela a seguir mostra exemplos de strings para cada combinação de autenticadores permitidos e método BiometricManager.Strings invocado:


Autenticadors permitidos

getButtonLabel()

getPromptMessage()

getSettingName()

Biometria de classe 3 (BIOMETRIC_STRONG)

"Use impressão digital"
(Apenas a impressão digital atende aos requisitos do autenticador)

"Use a impressão digital para continuar"
(Apenas a impressão digital atende aos requisitos do autenticador)

"Use impressão digital"
(Apenas a impressão digital atende aos requisitos do autenticador)

Biometria de classe 2 (BIOMETRIC_WEAK)

"Usar rosto"
(a face e a impressão digital atendem aos requisitos; apenas a face está registrada)

"Use seu rosto para continuar"
(requisitos de rosto e impressão digital atendidos; apenas o rosto está registrado)

"Usar rosto ou impressão digital"
(o rosto e a impressão digital atendem aos requisitos; o dispositivo oferece suporte a ambos)

Bloqueio de tela (DEVICE_CREDENTIAL)

"Usar PIN"
(qualquer bloqueio de tela atende aos requisitos; o PIN está registrado)

"Digite seu PIN para continuar"
(qualquer bloqueio de tela atende aos requisitos; o PIN está registrado)

"Use bloqueio de tela"
(qualquer bloqueio de tela atende aos requisitos)

Bloqueio de tela biométrico OU de classe 3

"Usar PIN"
(a impressão digital e qualquer bloqueio de tela atendem aos requisitos; apenas o PIN está registrado)

"Digite seu PIN para continuar"
(a impressão digital e qualquer bloqueio de tela atendem aos requisitos; apenas o PIN está registrado)

"Usar impressão digital ou bloqueio de tela"
(a impressão digital e qualquer bloqueio de tela atendem aos requisitos)

Desbloqueio de tela biométrico OU de classe 2

"Usar o rosto"
(o rosto, a impressão digital e qualquer bloqueio de tela atendem aos requisitos; o rosto é registrado e substitui o PIN)

"Use seu rosto ou PIN para continuar"
(O rosto, a impressão digital e qualquer bloqueio de tela atendem aos requisitos. O rosto e o PIN estão registrados)

"Usar biometria ou bloqueio de tela"
(desbloqueio facial, impressão digital e qualquer bloqueio de tela atendem aos requisitos)

Validação

A implementação biométrica precisa passar nos seguintes testes:

Além disso, se o dispositivo oferecer suporte a uma biometria com um HIDL do AOSP (fingerprint@2.1, fingerprint@2.2, face1.0), ele precisa passar no teste VTS relevante (fingerprint, face).