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