5.2 Auditor: atestación local/remota y qué información aporta
En GrapheneOS, la atestación de claves criptográficas desempeña un papel fundamental para garantizar la integridad del dispositivo, la procedencia del sistema operativo y el cumplimiento de las políticas de seguridad. El auditor, ya sea local o remoto, valida de forma confiable que las claves generadas y almacenadas en el módulo de seguridad (TEE o Secure Element) obedecen a las propiedades esperadas y no han sido manipuladas. A continuación, describimos en detalle los dos modos de atestación disponibles y el conjunto de datos que proporcionan.
1. Introducción a la atestación de claves
La atestación es un mecanismo criptográfico que vincula una clave generada en hardware seguro con metadatos sobre el dispositivo y su estado. Utiliza firmas digitales emitidas por la autoridad de certificación del fabricante o proveedor del SoC, garantizando que:
- La clave es legítima y fue creada en un entorno aislado.
- El sistema operativo y el arranque seguro no han sido comprometidos.
- Se cumple la política de uso de la clave (por ejemplo, no exportable, solo uso de firma).
2. Atestación local
La atestación local se realiza íntegramente en el dispositivo, sin comunicarse con servidores externos. Emplea la clave de atestación primaria almacenada en el TEE y devuelve un certificado X.509 firmado internamente.
- Procedimiento:
- Generación de la clave con
KeyGenParameterSpec
indicandosetAttestationChallenge()
. - El TEE responde con un chain de certificados que incluye la atestación.
- El auditor local valida la firma y extrae los metadatos.
- Generación de la clave con
- Ventajas:
- No requiere conexión de red.
- Respuesta inmediata para comprobaciones offline.
- Limitaciones:
- El certificado raíz de atestación debe estar preinstalado.
- Menor flexibilidad para revocación o actualización de CA.
3. Atestación remota
La atestación remota involucra un servidor de confianza (puede ser Google, GrapheneOS o un servicio privado) que valida el certificado entregado por el dispositivo y genera un informe adicional firmado.
- Procedimiento:
- El dispositivo solicita la atestación local y recibe el certificado X.509.
- El certificado se envía al servidor remoto junto con un nonce para prevenir ataques de repetición.
- El servidor comprueba la cadena de confianza, el estado de revocación y devuelve un token JWT firmado con metadatos aprobados.
- Ventajas:
- Control centralizado de revocaciones y actualizaciones de CA.
- Historial y auditoría de solicitudes.
- Validación cruzada de políticas organizativas.
- Limitaciones:
- Necesita conectividad.
- Introducción de latencia y posibles puntos de fallo externos.
4. Información aportada por la atestación
Tanto en el modo local como en el remoto, la atestación proporciona un conjunto detallado de atributos que permiten al auditor evaluar el nivel de confianza:
Campo | Descripción |
Attestation Challenge | Nonce enviado por el auditor para vincular la respuesta a la petición. |
Keymaster Version | Versión de la HAL de Keymaster utilizada en el TEE. |
Attestation Security Level | Nivel de seguridad (TEE o StrongBox) donde se generó la clave. |
Boot State | Indica si el arranque es seguro, verificado o fallido. |
OS Version / Patch Level | Versión del sistema operativo Android y fecha del último parche de seguridad. |
Vendor Patch Level | Fecha del último parche proporcionado por el fabricante del SoC. |
Key Origin | Método de generación de la clave (GENERATED, IMPORTED, etc.). |
Key Usage | Operaciones permitidas (sign, encrypt, decrypt, etc.). |
Public Key | Material público de la clave para verificar firmas o cifrado. |
Con estos metadatos, el auditor puede concluir si el dispositivo cumple las políticas de seguridad definidas y si la clave es fiable para usos críticos (autenticación, firma de documentos, intercambio cifrado, etc.).
Casos de uso típicos
- Autenticación fuerte para acceso a sistemas corporativos.
- Firma de transacciones financieras con garantías hardware-backed.
- Validación de integridad en procesos de DevSecOps.
Consideraciones finales
La combinación de atestación local y remota en GrapheneOS proporciona flexibilidad y robustez. Un auditor avanzado debe conocer los detalles de cada modo, entender cómo interpretar los metadatos y configurar adecuadamente tanto el TEE como el servidor de atestación remota para adaptarse a requisitos de seguridad y privacidad.
Profundizando sobre: 5.2 Auditor: atestación local/remota y qué información aporta
Libros recomendados
- Android Security Internals: An In-Depth Guide to Android’s Security Architecture de Nikolay Elenkov – Capítulos sobre TrustZone y atestación de claves.
- Embedded Security in the Internet of Things de Cedric Halbronn y Jean-Philippe Aumasson – Secciones dedicadas a atestación local y remota en entornos IoT, aplicables a GrapheneOS.
- Practical Cryptography in Python de Seth James Nielson y Christopher K. Monson – Capítulo sobre esquemas de firma y certificación remota útiles para entender mecanismos de atestación.
Recursos en línea
- Documentación oficial de GrapheneOS: Auditor – Explica flujo de atestación local (Trusty/TEE) y remota (servidor de verificación) y la información que expone.
- Android Keystore Attestation (Android Open Source Project) – Descripción detallada de certificados de atestación y metadatos generados por el hardware.
- Android Developers: Key Attestation – Guía paso a paso para solicitar y validar atestaciones remotas.
- Linux TEE Subsystem (Kernel Documentation) – Información técnica sobre interfaces de Trusted Execution Environment usadas en GrapheneOS para atestación local.
- ParagonIE Blog: Safe API Key Storage – Artículo práctico sobre uso de atestación y TEE para proteger credenciales en clientes móviles.
- Google Trust Token API – Ejemplo de implementación de atestación remota basada en tokens de confianza.
Deja una respuesta