Verificación de pares de claves respaldados por hardware con certificación de claves

La certificación de claves te brinda la confianza de que las claves que usas en tu app se conservan en el almacén de claves respaldado por hardware del dispositivo. En las siguientes secciones se describe cómo verificar las propiedades de las claves guardadas en hardware e interpretar los datos de extensión de las certificaciones.

Antes de comenzar, asegúrate de que tu dispositivo admita la certificación de claves a nivel del hardware

Antes de verificar las propiedades de las claves guardadas en hardware de un dispositivo en un entorno de producción, debes asegurarte de que el dispositivo admita certificación de claves a nivel del hardware. Para ello, debes comprobar que la cadena de certificación contenga un certificado raíz firmado por la clave raíz de certificación de Google y que el elemento attestationSecurityLevel dentro de la estructura de datos de la descripción de la clave se configure a nivel de seguridad de TrustedEnvironment o a nivel de seguridad de StrongBox.

Además, es importante verificar las firmas en la cadena de certificados y comprobar que ninguna de las claves de esta se haya revocado. Para ello, debes revisar la Lista de estado de revocación de certificados. A menos que todas sean válidas y que la raíz sea la clave raíz de Google, no confíes completamente en la certificación.

Recuperación y verificación de un par de claves guardado en hardware

Durante la certificación de claves, se especifica el alias de un par de claves y se recupera su cadena de certificados, que puedes usar para verificar las propiedades de ese par de claves.

Si el dispositivo admite certificación de claves a nivel del hardware, el certificado raíz de esta cadena se firma con una clave raíz de certificación que se aprovisiona de forma segura en el almacén de claves respaldado por hardware del dispositivo.

Para implementar la certificación de claves, haz lo siguiente:

  1. Usa el método getCertificateChain() de un objeto KeyStore para obtener una referencia a la cadena de certificados X.509 asociada con el almacén de claves guardadas en hardware.
  2. Envía los certificados a otro servidor de confianza para la validación.

    Precaución: No completes el siguiente proceso de validación en el mismo dispositivo. Si el sistema Android de ese dispositivo está comprometido, es posible que el proceso de validación confíe en algo que no es confiable.

  3. Obtén la referencia a la biblioteca de validación y análisis de la cadena de certificados X.509 que sea más adecuada para tu conjunto de herramientas. Verifica que el certificado público raíz sea confiable y que cada certificado firme el siguiente de la cadena.

  4. Comprueba el estado de revocación de cada certificado para asegurarte de que no se haya revocado ninguno.

  5. De manera opcional, inspecciona la extensión del certificado de información de aprovisionamiento que solo está presente en las cadenas de certificados más nuevas.

    Obtén la referencia a la biblioteca de analizadores CBOR que sea más adecuada para tu conjunto de herramientas. Encuentra el certificado más cercano a la raíz que contiene la extensión del certificado de información de aprovisionamiento. Usa el analizador para extraer los datos de extensión del certificado de información de aprovisionamiento de ese certificado.

    Consulta la sección sobre la extensión de información de aprovisionamiento para obtener más detalles.

  6. Obtén la referencia a la biblioteca de analizadores de ASN.1 que sea más adecuada para tu conjunto de herramientas. Encuentra el certificado más cercano a la raíz que contiene la extensión del certificado de certificación de claves. Si la extensión del certificado de información de aprovisionamiento estaba presente, la extensión del certificado de certificación de claves debe estar en el certificado inmediatamente posterior. Usa el analizador para extraer los datos de extensión del certificado de certificación de claves de ese certificado.

    Precaución: No des por sentado que la extensión del certificado de certificación de claves se encuentra en el certificado de entidad final de la cadena. Solo se puede confiar en la primera instancia de extensión de la cadena. El hardware seguro no emitió otras instancias de la extensión, y es posible que las haya emitido un atacante que extendió la cadena mientras intentaba crear certificaciones falsas para claves que no son de confianza.

    En el ejemplo de certificación de claves, se usa el analizador ASN.1 de Bouncy Castle para extraer los datos de extensión de la certificación. Puedes usar este ejemplo como referencia para crear tu propio analizador.

    Consulta la sección sobre el esquema de datos de extensión de certificación de claves para obtener más información.

  7. Verifica la coherencia de los datos de extensión que recuperaste en los pasos anteriores y compáralos con el conjunto de valores que esperas que contenga la clave guardada en hardware.

Certificados raíz

El nivel de confianza de la certificación depende del certificado raíz de la cadena. Los dispositivos Android que hayan pasado la prueba necesaria para tener el conjunto de apps de Google, incluido Google Play, y que se hayan lanzado con Android 7.0 (nivel de API 24) o versiones posteriores deberían usar las claves firmadas por el certificado raíz de certificación de Google. Ten en cuenta que no se requirió la certificación hasta Android 8.0 (nivel de API 26). El conjunto de certificados raíz válidos se puede descargar como un array con formato JSON.

Certificados raíz

Los siguientes dos certificados raíz se deben usar como anclajes de confianza cuando se verifica una cadena de certificados de certificación de claves.

-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIJAPHBcqaZ6vUdMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjIwMzIwMTgwNzQ4WhcNNDIwMzE1MTgw
NzQ4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQB8cMqTllHc8U+qCrOlg3H7
174lmaCsbo/bJ0C17JEgMLb4kvrqsXZs01U3mB/qABg/1t5Pd5AORHARs1hhqGIC
W/nKMav574f9rZN4PC2ZlufGXb7sIdJpGiO9ctRhiLuYuly10JccUZGEHpHSYM2G
tkgYbZba6lsCPYAAP83cyDV+1aOkTf1RCp/lM0PKvmxYN10RYsK631jrleGdcdkx
oSK//mSQbgcWnmAEZrzHoF1/0gso1HZgIn0YLzVhLSA/iXCX4QT2h3J5z3znluKG
1nv8NQdxei2DIIhASWfu804CA96cQKTTlaae2fweqXjdN1/v2nqOhngNyz1361mF
mr4XmaKH/ItTwOe72NI9ZcwS1lVaCvsIkTDCEXdm9rCNPAY10iTunIHFXRh+7KPz
lHGewCq/8TOohBRn0/NNfh7uRslOSZ/xKbN9tMBtw37Z8d2vvnXq/YWdsm1+JLVw
n6yYD/yacNJBlwpddla8eaVMjsF6nBnIgQOf9zKSe06nSTqvgwUHosgOECZJZ1Eu
zbH4yswbt02tKtKEFhx+v+OTge/06V+jGsqTWLsfrOCNLuA8H++z+pUENmpqnnHo
vaI47gC+TNpkgYGkkBT6B/m/U01BuOBBTzhIlMEZq9qkDWuM2cA5kW5V3FJUcfHn
w1IdYIg2Wxg7yHcQZemFQg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICIjCCAaigAwIBAgIRAISp0Cl7DrWK5/8OgN52BgUwCgYIKoZIzj0EAwMwUjEc
MBoGA1UEAwwTS2V5IEF0dGVzdGF0aW9uIENBMTEQMA4GA1UECwwHQW5kcm9pZDET
MBEGA1UECgwKR29vZ2xlIExMQzELMAkGA1UEBhMCVVMwHhcNMjUwNzE3MjIzMjE4
WhcNMzUwNzE1MjIzMjE4WjBSMRwwGgYDVQQDDBNLZXkgQXR0ZXN0YXRpb24gQ0Ex
MRAwDgYDVQQLDAdBbmRyb2lkMRMwEQYDVQQKDApHb29nbGUgTExDMQswCQYDVQQG
EwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABCPaI3FO3z5bBQo8cuiEas4HjqCt
G/mLFfRT0MsIssPBEEU5Cfbt6sH5yOAxqEi5QagpU1yX4HwnGb7OtBYpDTB57uH5
Eczm34A5FNijV3s0/f0UPl7zbJcTx6xwqMIRq6NCMEAwDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFIyuyz7RkOb3NaBqQ5lZuA0QepA
MAoGCCqGSM49BAMDA2gAMGUCMETfjPO/HwqReR2CS7p0ZWoD/LHs6hDi422opifH
EUaYLxwGlT9SLdjkVpz0UUOR5wIxAIoGyxGKRHVTpqpGRFiJtQEOOTp/+s1GcxeY
uR2zh/80lQyu9vAFCj6E4AXc+osmRg==
-----END CERTIFICATE-----
  
Certificados raíz emitidos anteriormente
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIJAOj6GWMU0voYMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTYwNTI2MTYyODUyWhcNMjYwNTI0MTYy
ODUyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
AGMCAwEAAaOBpjCBozAdBgNVHQ4EFgQUNmHhAHyIBQlRi0RsR/8aTMnqTxIwHwYD
VR0jBBgwFoAUNmHhAHyIBQlRi0RsR/8aTMnqTxIwDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAYYwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cHM6Ly9hbmRyb2lk
Lmdvb2dsZWFwaXMuY29tL2F0dGVzdGF0aW9uL2NybC8wDQYJKoZIhvcNAQELBQAD
ggIBACDIw41L3KlXG0aMiS//cqrG+EShHUGo8HNsw30W1kJtjn6UBwRM6jnmiwfB
Pb8VA91chb2vssAtX2zbTvqBJ9+LBPGCdw/E53Rbf86qhxKaiAHOjpvAy5Y3m00m
qC0w/Zwvju1twb4vhLaJ5NkUJYsUS7rmJKHHBnETLi8GFqiEsqTWpG/6ibYCv7rY
DBJDcR9W62BW9jfIoBQcxUCUJouMPH25lLNcDc1ssqvC2v7iUgI9LeoM1sNovqPm
QUiG9rHli1vXxzCyaMTjwftkJLkf6724DFhuKug2jITV0QkXvaJWF4nUaHOTNA4u
JU9WDvZLI1j83A+/xnAJUucIv/zGJ1AMH2boHqF8CY16LpsYgBt6tKxxWH00XcyD
CdW2KlBCeqbQPcsFmWyWugxdcekhYsAWyoSf818NUsZdBWBaR/OukXrNLfkQ79Iy
ZohZbvabO/X+MVT3rriAoKc8oE2Uws6DF+60PV7/WIPjNvXySdqspImSN78mflxD
qwLqRBYkA3I75qppLGG9rp7UCdRjxMl8ZDBld+7yvHVgt1cVzJx9xnyGCC23Uaic
MDSXYrB4I4WHXPGjxhZuCuPBLTdOLU8YRvMYdEvYebWHMpvwGCF6bAx3JBpIeOQ1
wDB5y0USicV3YgYGmi+NZfhA4URSh77Yd6uuJOJENRaNVTzk
-----END CERTIFICATE-----
  
-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAz
NzU4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBOMaBc8oumXb2voc7XCWnu
XKhBBK3e2KMGz39t7lA3XXRe2ZLLAkLM5y3J7tURkf5a1SutfdOyXAmeE6SRo83U
h6WszodmMkxK5GM4JGrnt4pBisu5igXEydaW7qq2CdC6DOGjG+mEkN8/TA6p3cno
L/sPyz6evdjLlSeJ8rFBH6xWyIZCbrcpYEJzXaUOEaxxXxgYz5/cTiVKN2M1G2ok
QBUIYSY6bjEL4aUN5cfo7ogP3UvliEo3Eo0YgwuzR2v0KR6C1cZqZJSTnghIC/vA
D32KdNQ+c3N+vl2OTsUVMC1GiWkngNx1OO1+kXW+YTnnTUOtOIswUP/Vqd5SYgAI
mMAfY8U9/iIgkQj6T2W6FsScy94IN9fFhE1UtzmLoBIuUFsVXJMTz+Jucth+IqoW
Fua9v1R93/k98p41pjtFX+H8DslVgfP097vju4KDlqN64xV1grw3ZLl4CiOe/A91
oeLm2UHOq6wn3esB4r2EIQKb6jTVGu5sYCcdWpXr0AUVqcABPdgL+H7qJguBw09o
jm6xNIrw2OocrDKsudk/okr/AwqEyPKw9WnMlQgLIKw1rODG2NvU9oR3GVGdMkUB
ZutL8VuFkERQGt6vQ2OCw0sV47VMkuYbacK/xyZFiRcrPJPb41zgbQj9XAEyLKCH
ex0SdDrx+tWUDqG8At2JHA==
-----END CERTIFICATE-----
  
-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIJAMNrfES5rhgxMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjExMTE3MjMxMDQyWhcNMzYxMTEzMjMx
MDQyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBTNNZe5cuf8oiq+jV0itTG
zWVhSTjOBEk2FQvh11J3o3lna0o7rd8RFHnN00q4hi6TapFhh4qaw/iG6Xg+xOan
63niLWIC5GOPFgPeYXM9+nBb3zZzC8ABypYuCusWCmt6Tn3+Pjbz3MTVhRGXuT/T
QH4KGFY4PhvzAyXwdjTOCXID+aHud4RLcSySr0Fq/L+R8TWalvM1wJJPhyRjqRCJ
erGtfBagiALzvhnmY7U1qFcS0NCnKjoO7oFedKdWlZz0YAfu3aGCJd4KHT0MsGiL
Zez9WP81xYSrKMNEsDK+zK5fVzw6jA7cxmpXcARTnmAuGUeI7VVDhDzKeVOctf3a
0qQLwC+d0+xrETZ4r2fRGNw2YEs2W8Qj6oDcfPvq9JySe7pJ6wcHnl5EZ0lwc4xH
7Y4Dx9RA1JlfooLMw3tOdJZH0enxPXaydfAD3YifeZpFaUzicHeLzVJLt9dvGB0b
HQLE4+EqKFgOZv2EoP686DQqbVS1u+9k0p2xbMA105TBIk7npraa8VM0fnrRKi7w
lZKwdH+aNAyhbXRW9xsnODJ+g8eF452zvbiKKngEKirK5LGieoXBX7tZ9D1GNBH2
Ob3bKOwwIWdEFle/YF/h6zWgdeoaNGDqVBrLr2+0DtWoiB1aDEjLWl9FmyIUyUm7
mD/vFDkzF+wm7cyWpQpCVQ==
-----END CERTIFICATE-----
  

Si el certificado raíz en la cadena de certificación que recibes contiene esta clave pública y no se revocó ninguno de los certificados de la cadena, significa lo siguiente:

  1. Tu clave se encuentra en un hardware que Google considera seguro.
  2. Tiene las propiedades que se describen en la certificación.

Si la cadena de certificación tiene otro certificado raíz, Google no realiza reclamaciones de seguridad sobre el hardware. Esto no significa que la clave esté comprometida; solo que la certificación no prueba que la clave esté en hardware seguro. Ajusta tus suposiciones de seguridad según corresponda.

Si el certificado raíz no contiene la clave pública que aparece en esta página, es posible que se deba a uno de los siguientes motivos:

  • Lo más probable es que el dispositivo se haya lanzado con una versión de Android anterior a la 7.0 y que no admita la certificación de hardware. En este caso, Android tiene una implementación de software de certificación que produce el mismo tipo de certificado, pero que se firma con una clave codificada a través del código fuente de Android. Como esta clave de firma no es secreta, es posible que un atacante haya creado la certificación fingiendo proporcionar un hardware seguro.
  • El otro motivo probable es que el dispositivo no sea de Google Play. En ese caso, el fabricante del dispositivo puede crear su propio certificado raíz y definir el significado de sus datos de certificación. Consulta la documentación del fabricante del dispositivo. Ten en cuenta que Google no conoce fabricantes que hayan hecho esto.

Rotación del certificado raíz de certificación de hardware

Google presenta un nuevo certificado raíz para la certificación de claves de Android. Este cambio mejora la seguridad y la confiabilidad del proceso de certificación para aplicaciones sensibles. Se generó una nueva clave raíz para la certificación de claves de Android (KeyMint). La nueva raíz es una clave ECDSA P-384.

Qué debe hacer

  • Si tu app depende de la certificación de claves de Android, agrega el nuevo certificado raíz a tus almacenes de confianza antes del 31 de marzo de 2026. Descarga los certificados nuevos y anteriores desde https://android.googleapis.com/attestation/root
  • Los dispositivos que usan el aprovisionamiento de claves remotas (RKP) comenzarán a recibir certificados basados en este nuevo certificado en febrero de 2026. Los dispositivos habilitados para RKP usarán exclusivamente la nueva raíz antes del 10 de abril de 2026.
  • Actualiza tus procesos de certificación para confiar en los certificados raíz nuevos y existentes. Los dispositivos más antiguos con claves aprovisionadas de fábrica no admiten la rotación de claves y continúan usando la raíz anterior.
  • El esquema de extensión de certificado en sí no cambiará; solo cambiará la raíz.
  • Las formas legibles por humanos y por máquinas de la nueva raíz estarán disponibles públicamente.

Prácticas recomendadas

No consultes un extremo para obtener raíces de confianza en el tiempo de ejecución, ya que esta acción crea riesgos de seguridad. Controla los cambios en las raíces de confianza a través de un proceso formal.

Eliminación gradual de claves de fábrica: Aprovisionamiento de claves remotas (RKP)

En el caso de los dispositivos que se lanzan con Android 16, el sistema solo admite RKP. Esta política elimina gradualmente las claves de fábrica. Mejora la forma en que aprovisionas y administras las claves de certificación, y se expande en la política de Android 15, en la que la compatibilidad con RKP era opcional. RKP evita la filtración de claves porque el sistema no programa claves directamente en el dispositivo. No puedes borrar estas claves del dispositivo. Si debes revocar una clave, puedes orientar la revocación a un solo dispositivo.

Bibliotecas de verificación de certificación

Usa la biblioteca de Kotlin de verificación de certificación para verificar las cadenas de certificados de certificación de claves. Además, esta biblioteca ya integra los nuevos certificados raíz. Si usas un verificador diferente, te recomendamos que cambies a la biblioteca de Kotlin. Está bien probada y cubre casos extremos que a menudo no detectan los verificadores personalizados.

Lista de estado de revocación de certificados

Las claves de certificación pueden revocarse por varios motivos, entre los que se incluyen el mal manejo o la posible extracción por parte de un atacante. Por lo tanto, es fundamental que se verifique el estado de cada certificado de una cadena de certificación con la lista de estado de revocación de certificados (CRL) oficial. Google mantiene esta lista, que se publica en https://android.googleapis.com/attestation/status. El encabezado Cache-Control en la respuesta HTTP determina la frecuencia con la que hay que comprobar si hay actualizaciones, de modo que no se requiere una solicitud de red para cada certificado que se verifica. Esta URL muestra un archivo JSON que contiene el estado de revocación de los certificados que no tienen un estado normal válido. El formato del archivo JSON cumple con la siguiente definición del esquema de JSON (borrador 07):

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "entries": {
      "description" : "Each entry represents the status of an attestation key. The dictionary-key is the certificate serial number in lowercase hex.",
      "type": "object",
      "propertyNames": {
        "pattern": "^[a-f1-9][a-f0-9]*$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "status": {
            "description": "[REQUIRED] Current status of the key.",
            "type": "string",
            "enum": ["REVOKED", "SUSPENDED"]
          },
          "expires": {
            "description": "[OPTIONAL] UTC date when certificate expires in ISO8601 format (YYYY-MM-DD). Can be used to clear expired certificates from the status list.",
            "type": "string",
            "format": "date"
          },
          "reason": {
            "description": "[OPTIONAL] Reason for the current status.",
            "type": "string",
            "enum": ["UNSPECIFIED", "KEY_COMPROMISE", "CA_COMPROMISE", "SUPERSEDED", "SOFTWARE_FLAW"]
          },
          "comment": {
            "description": "[OPTIONAL] Free form comment about the key status.",
            "type": "string",
            "maxLength": 140
          }
        },
        "required": ["status"],
        "additionalProperties": false
      }
    }
  },
  "required": ["entries"],
  "additionalProperties": false
}

Ejemplo de CRL:

{
  "entries": {
    "2c8cdddfd5e03bfc": {
      "status": "REVOKED",
      "expires": "2020-11-13",
      "reason": "KEY_COMPROMISE",
      "comment": "Key stored on unsecure system"
    },
    "c8966fcb2fbb0d7a": {
      "status": "SUSPENDED",
      "reason": "SOFTWARE_FLAW",
      "comment": "Bug in keystore causes this key malfunction b/555555"
    }
  }
}

Política de revocación de certificados

La certificación forma la base de la lucha contra el abuso y la confianza en el ecosistema de Android. Proporciona una declaración verificable de forma criptográfica a terceros fuera del dispositivo sobre el estado de arranque del dispositivo.

Los certificados de las claves de certificación de Android se revocarán cuando las claves estén comprometidas, debido a la naturaleza crítica de la validez de la certificación. En esta sección, se describe una política para cuando se revocan los certificados. Es probable que esta política evolucione y enumere casos adicionales con el tiempo.

¿Qué califica para la revocación?

Las claves de certificación que se filtraron siempre son aptas para que se revoquen sus certificados. Las filtraciones se pueden descubrir de varias maneras, incluidas las siguientes:

  • Análisis de datos de certificación en la naturaleza
  • Descubrimiento de claves de certificación en redes sociales o en otros sitios públicos
  • Informes directamente de investigadores de seguridad

Una vez que se descubran, los certificados de certificación se revocarán agregando sus números de serie a la lista de revocación. Por lo general, esto sucederá en un plazo de varios días después del descubrimiento, pero puede tardar más en casos excepcionales. Por ejemplo, la revocación de certificados para claves de certificación filtradas suele demorarse si los dispositivos afectados por la revocación se pueden volver a aprovisionar de forma segura. La escala del impacto de la revocación también es un factor importante en los plazos de revocación.

Esquema de los datos de extensión de la certificación de claves

Esquema de los datos de extensión de la información de aprovisionamiento