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 primária (ou seja, modalidades baseadas em fatores de conhecimento, como PIN, padrão e senha) fornece o mais alto nível de segurança. A biometria está na camada secundária de autenticação, oferecendo um equilíbrio entre conveniência e segurança. O Android CDD define três classes de força biométrica: Classe 3 (anteriormente Forte), Classe 2 (anteriormente Fraca) e Classe 1 (anteriormente Conveniência). Cada classe tem um conjunto de pré-requisitos, privilégios e restrições – consulte o CDD acima para obter mais detalhes. Todas as três classes podem ser integradas à tela de bloqueio, mas apenas autenticadores fortes e fracos podem ser integrados às APIs android.hardware.biometrics. Esta tabela descreve cada autenticador e a funcionalidade que eles suportam.

Autenticador Tela de bloqueio Integração BiometricPrompt Keystore (chave baseada em tempo) Keystore (chave baseada em operação)
BIOMÉTRICO_FORTE (Classe 3) Sim Sim Sim Sim
BIOMÉTRICO_FRACO (Classe 2) Sim Sim Não Não
BIOMÉTRICA_CONVENIÊNCIA
(Classe 1)
Sim Não Não Não
DEVICE_CREDENTIAL Sim Sim Sim Sim

A estrutura Android inclui suporte para autenticação biométrica facial e de impressão digital. O Android pode ser personalizado para suportar outras modalidades biométricas (como Iris). No entanto, a integração biométrica dependerá da segurança biométrica e não da modalidade. Para obter mais detalhes sobre especificações de segurança biométrica, consulte Medindo a segurança do desbloqueio biométrico .

Fonte

Andróide 12

  • Apresenta a API BiometricManager.Strings , que fornece strings localizadas para aplicativos que usam BiometricPrompt para autenticação. Essas strings têm como objetivo reconhecer o dispositivo e fornecer mais especificidade sobre quais tipos de autenticação podem ser usados.
  • Inclui suporte para sensor de impressão digital sob display (UDFPS).

Android 11

  • Apresenta a interface BiometricManager.Authenticators , que fornece constantes que os desenvolvedores podem usar para especificar os tipos de autenticação aceitos por seus aplicativos.
  • Adiciona aação de intenção 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 de seus aplicativos.
  • Adiciona o método AuthenticationResult #getAuthenticationType () , que os desenvolvedores podem usar para verificar se o usuário se autenticou usando uma credencial biométrica ou uma credencial de dispositivo.
  • Fornece suporte adicional para chaves de autenticação por uso na classe BiometricPrompt.

Android 10

  • Apresenta a classe BiometricManager que os desenvolvedores podem usar para consultar a disponibilidade da autenticação biométrica.
  • Inclui integração de impressão digital e autenticação facial para BiometricPrompt

Android 9

  • Inclui integração de impressão digital apenas para BiometricPrompt .
  • Descontinua a classe FingerprintManager. Se seus aplicativos empacotados e de sistema usarem essa classe, atualize-os para usar BiometricPrompt e BiometricManager .
  • Atualizados os testes do verificador FingerprintManager CTS para testar BiometricPrompt usando BiometricPromptBoundKeysTest .

Implementação

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

Para integrar sua pilha biométrica com a API ACTION_BIOMETRIC_ENROLL:

  1. Modifique BiometricEnrollActivity para apresentar seu fluxo de inscrição. Observe que sua biometria só poderá ser apresentada se atender à robustez solicitada. Se o seu dispositivo suportar mais de um, esta ação deverá apresentar uma lista que o usuário pode escolher.
Arquitetura BiometricPrompt
Figura 1. Arquitetura BiometricPrompt

Diretrizes de implementação HAL

Siga estas diretrizes HAL biométricas para garantir que os dados biométricos não vazem e sejam removidos quando um usuário é removido de um dispositivo:

  • Certifique-se de que os dados biométricos brutos ou derivados (como modelos) nunca sejam acessíveis de fora do ambiente isolado e seguro (como o TEE ou o Elemento Seguro). Todos os dados armazenados devem ser criptografados com uma chave específica do dispositivo conhecida apenas pelo TEE (Trusted Execution Environment). Se o hardware suportar, limite o acesso do hardware ao ambiente isolado seguro e proteja-o com uma política SELinux. Torne o canal de comunicação (por exemplo, SPI, I2C) acessível apenas ao ambiente isolado e seguro com uma política SELinux explícita em todos os arquivos do dispositivo.
  • A aquisição, registro e reconhecimento biométrico devem ocorrer dentro de um ambiente isolado e seguro para evitar violações de dados e outros ataques. Este 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 Advanced Encryption Standard (AES), no mínimo assine um modelo com o caminho absoluto do sistema de arquivos, grupo e ID biométrico, de forma que os arquivos do modelo fiquem inoperáveis ​​em outro dispositivo ou para qualquer pessoa que não seja o usuário que os registrou no mesmo dispositivo . Por exemplo, evite copiar dados biométricos de um usuário diferente no mesmo dispositivo ou de outro dispositivo.
  • 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 do 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 deverão ser limpos após a remoção do usuário. É exigido pelo CDD 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 e seguro, adicione ganchos para garantir a remoção dos dados quando o usuário ou o dispositivo for removido é apagado. Consulte LockSettingsService.removeBiometricsForUser()

Costumização

Se o seu dispositivo suportar múltiplas biometrias, o usuário poderá especificar um padrão nas configurações. Sua implementação BiometricPrompt deve preferir a biometria Classe 3 (anteriormente Strong) como padrão, a menos que o usuário a substitua explicitamente, então 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 aos desenvolvedores por meio da API BiometricManager.Strings . Você pode personalizar os valores de recursos retornados por esta API para implementar strings específicas do dispositivo. Se fizer isso, certifique-se de que todas as novas cadeias de caracteres sejam traduzidas para todas as localidades suportadas pelo dispositivo. Além disso, certifique-se de que as seguintes propriedades sejam preservadas:


Método

Finalidade da string

Tipo(s) 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 BiometricPrompt

Somente tipos registrados (se possível) que atendem aos requisitos do autenticador

Use string somente biométrica (como "Usar impressão digital")

getPromptMessage()

Mensagem mostrada no BiometricPrompt durante a autenticação

Somente tipos registrados (se possível) que atendem aos requisitos do autenticador

Use uma sequência combinada de biometria e bloqueio de tela (por exemplo, "Use sua impressão digital ou PIN para continuar")

getSettingName()

Nome de uma configuração que habilita BiometricPrompt para autenticação

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

Use uma sequência combinada de biometria e bloqueio de tela (como "Usar impressão digital ou bloqueio de tela")

Por exemplo, considere um dispositivo que possui um sensor facial de Classe 2 com um rosto registrado , um PIN registrado e um sensor de impressão digital de Classe 3 sem impressões digitais registradas . A tabela a seguir fornece sequências de amostra para cada combinação de autenticadores permitidos e método BiometricManager.Strings invocado:


Autenticadores permitidos

getButtonLabel()

getPromptMessage()

getSettingName()

Biométrico Classe 3 ( BIOMETRIC_STRONG )

"Usar impressão digital"
(Apenas a impressão digital satisfaz os requisitos do autenticador)

"Use sua impressão digital para continuar"
(Apenas a impressão digital satisfaz os requisitos do autenticador)

"Usar impressão digital"
(Apenas a impressão digital satisfaz os requisitos do autenticador)

Biométrico classe 2 ( BIOMETRIC_WEAK )

"Usar rosto"
(Rosto e impressão digital atendem aos requisitos; apenas o rosto está registrado)

"Use seu rosto para continuar"
(Rosto e impressão digital atendem aos requisitos; apenas o rosto está registrado)

"Usar rosto ou impressão digital"
(Rosto e impressão digital atendem aos requisitos; o dispositivo suporta 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)

"Usar bloqueio de tela"
(Qualquer bloqueio de tela atende aos requisitos)

Bloqueio de tela OU biométrico classe 3

"Usar PIN"
(Impressão digital e qualquer bloqueio de tela atendem aos requisitos; apenas o PIN é registrado)

"Digite seu PIN para continuar"
(Impressão digital e qualquer bloqueio de tela atendem aos requisitos; apenas o PIN é registrado)

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

Bloqueio de tela OU biométrico classe 2

"Usar rosto"
(Rosto, 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"
(Rosto, impressão digital e qualquer bloqueio de tela atendem aos requisitos; rosto e PIN estão registrados)

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

Validação

Sua implementação biométrica deve passar nos seguintes testes:

  • Gerente Biométrico CTS
  • CTS BiometricPrompt (sanidade, testes aprofundados dependem do verificador)
  • Seção de teste biométrico CtsVerifier: deve passar individualmente com cada modalidade que o dispositivo suporta

Além disso, se o seu dispositivo suportar uma biometria que tenha um AOSP HIDL ( impressão digital@2.1 , impressão digital@2.2 , face1.0 ), ele deverá passar no teste VTS relevante ( impressão digital , face )