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
eBiometricManager
. - Atualizados os testes do verificador
FingerprintManager
CTS para testarBiometricPrompt
usandoBiometricPromptBoundKeysTest
.
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:
- 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](https://source.android.com/static/docs/security/images/biometric-stack.png?authuser=5&hl=pt)
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 )