Dispositivos móveis: Smartphones
Considerados dispositivos pessoais
Frequentemente utilizados para autenticação 2 fatores
Podem fazer uso do cartão SIM ou de outro Hardware
SIM é vendido a um sujeito identificado
Acesso ao SIM é protegido por um PIN
Pode fazer uso de variados métodos de autenticação
Senhas, PINs, Padrões, Biometria
Composto por vários elementos distintos
REE: corre aplicações instalados pelos utilizadores
Baseband: executa código para comunicação
SIM: autentica o utilizador
TEE: Armazena chaves/realiza operações criptográficas
Android
Trusted Execution Environment (TEE)
Executa um SO distinto: TrustyOS, Kinibi, QSEE
Implementado num sub-sistema isolado ou virtualizado
Composto por Trustlets (pequenas aplicações)
Gateways de Segurança
Gatekeeper: para PINs/Passwords e Padrões
Fingerprint: para impressões digitais
Credenciais associadas a um sujeito
Fornecimento de credenciais desbloqueia as chaves
Android - Gatekeeper
Necessário aprovisionamento inicial
Identidade mais umas credenciais
User Secure ID (SID): 64 bits aleatórios
Identificam o utilizador
Servem de contexto para o material criptográfico
Gatekeeperd (no REE)
Envia credenciais para o gatekeeper (no TEE)
Obtém um AuthToken para o SID, com HMAC
chave do HMAC é temporária e serve de autenticação
Usa o AuthToken para aceder ao Keystore
Keystore verifica que o AuthToken é recente e válido
Fingerprintd (no REE)
Age de forma semelhante mas com um modelo
Authn
PIN: Introdução direta de dígitos
Tipicamente 4, mas podem ser até 16
Vulnerável a ataques por força bruta e canais paralelos
Senha: Introdução direta de vários carateres
Frequentemente limitada a 16
Mesmos problemas que o PIN, mas mais seguro
Padrão: Introdução direta de um padrão
Potencialmente muito menos seguro que o PIN
Armazenado como um SHA-1 (sem sal)
Vulnerável a ataques “sobre o ombro”, marcas dos dedos
Android - Keymaster
Fornece acesso ao armazenamento (keystore)
Baseado em chamadas de API (não é um acesso RW)
Só fornece acesso mediante AuthTokens válidos
Keymaster 1: Android 6
API de assinatura (assinar, verificar, importar chaves)
Keymaster 2: Android 7
Suporte para AES e HMAC
Key Attestation: certifica chaves (origem, propriedades, utilização)
Version Binding: associa chaves a versões do TEE
Keymaster Key Attestation
Objetivo
Garantir que as chaves provêm do TEE implementado em hardware e são autênticas
Outras garantias:
Que foram geradas no TEE atual (baseado num ID)
Que são associadas à aplicação que faz o pedido
Que o dispositivo iniciou de forma segura
Resultado
Um certificado X.509
assinado por um certificado raiz para este uso
com uma extensão que contém o resultado
Keymaster 3: Android 8
ID Attestation: Validação que as chaves estão associadas ao dispositivo
IMEI, Número de Série, Identificadores do hardware
Mecanismos semelhante ao Key Attestation (baseado em X.509)
Keymaster 4: Android 9
Suporte para Elementos Embutidos de Segurança
Integração de elementos seguros dentro do TEE
Last updated