Verifica le coppie di chiavi supportate da hardware con attestazione della chiave

L'attestazione della chiave ti dà maggiore sicurezza che le chiavi che utilizzi nella tua app siano memorizzate nel keystore supportato dall'hardware di un dispositivo. Le sezioni seguenti descrivono come verificare le proprietà delle chiavi supportate dall'hardware e come interpretare i dati delle estensioni dei certificati di attestazione.

Nota: prima di verificare le proprietà delle chiavi supportate dall'hardware di un dispositivo in un ambiente di livello di produzione, assicurati che il dispositivo supporti l'attestazione delle chiavi a livello di hardware. A questo scopo, verifica che la catena di certificati di attestazione contenga un certificato radice firmato con la chiave radice di attestazione di Google e che l'elemento attestationSecurityLevel all'interno della struttura di dati della descrizione della chiave sia impostato sul livello di sicurezza TrustedEnvironment o sul livello di sicurezza StrongBox.

Inoltre, è importante verificare le firme nella catena di certificati e confermare che nessuna delle chiavi nella catena sia stata revocata controllando l'elenco dello stato di revoca dei certificati. A meno che non siano tutti validi e la radice non sia la chiave radice di Google, non fidarti completamente dell'attestazione.

Recuperare e verificare una coppia di chiavi hardware-backed

Durante l'attestazione della chiave, specifichi l'alias di una coppia di chiavi e recuperi la relativa catena di certificati, che puoi utilizzare per verificare le proprietà di quella coppia di chiavi.

Se il dispositivo supporta l'attestazione della chiave a livello hardware, il certificato radice all'interno di questa catena viene firmato utilizzando una chiave radice di attestazione di cui è stato eseguito il provisioning in modo sicuro nel keystore supportato dall'hardware del dispositivo.

Nota:sui dispositivi forniti con l'attestazione della chiave a livello hardware, Android 7.0 (livello API 24) o versioni successive e Google Play Services, il certificato principale è firmato con la chiave principale di attestazione di Google. Verifica che questo certificato radice sia tra quelli elencati nella sezione relativa ai certificati radice.

Per implementare l'attestazione della chiave, completa i seguenti passaggi:

  1. Utilizza il metodo getCertificateChain() di un oggetto KeyStore per ottenere un riferimento alla catena di certificati X.509 associati all'archivio chiavi basato sull'hardware.
  2. Invia i certificati a un server separato che consideri attendibile per la convalida.

    Attenzione: non completare la seguente procedura di convalida sullo stesso dispositivo. Se il sistema Android sul dispositivo è compromesso, il processo di convalida potrebbe considerare attendibile qualcosa che non lo è.

  3. Ottieni un riferimento alla libreria di analisi e convalida della catena di certificati X.509 più adatta al tuo set di strumenti. Verifica che il certificato pubblico radice sia attendibile e che ogni certificato firmi il certificato successivo nella catena.

  4. Controlla lo stato di revoca di ogni certificato per assicurarti che nessuno sia stato revocato.

  5. (Facoltativo) Esamina l'estensione del certificato delle informazioni di provisioning che è presente solo nelle catene di certificati più recenti.

    Ottieni un riferimento alla libreria del parser CBOR più adatta al tuo set di strumenti. Trova il certificato più vicino alla radice che contiene l'estensione del certificato con le informazioni di provisioning . Utilizza il parser per estrarre i dati dell'estensione del certificato con le informazioni di provisioning da questo certificato.

    Per maggiori dettagli, consulta la sezione relativa all' estensione delle informazioni di provisioning.

  6. Ottieni un riferimento alla libreria del parser ASN.1 più appropriata per il tuo set di strumenti. Trova il certificato più vicino alla radice che contiene l' estensione del certificato di attestazione della chiave. Se era presente l'estensione del certificato con le informazioni di provisioning, l'estensione del certificato di attestazione della chiave deve essere nel certificato immediatamente successivo. Utilizza il parser per estrarre i dati dell'estensione del certificato di attestazione della chiave da questo certificato.

    Attenzione:non dare per scontato che l'estensione del certificato di attestazione della chiave si trovi nel certificato dell'entità finale della catena. Solo la prima occorrenza dell'estensione nella catena può essere considerata attendibile. Eventuali altre istanze dell'estensione non sono state emesse dall'hardware sicuro e potrebbero essere state emesse da un malintenzionato che estende la catena nel tentativo di creare attestazioni false per chiavi non attendibili.

    L'esempio di attestazione della chiave utilizza l'analizzatore sintattico ASN.1 di Bouncy Castle per estrarre i dati dell'estensione di un certificato di attestazione. Puoi utilizzare questo esempio come riferimento per creare il tuo parser.

    Per ulteriori dettagli, consulta la sezione relativa allo schema dei dati dell'estensione di attestazione della chiave.

  7. Controlla la coerenza dei dati dell'estensione recuperati nei passaggi precedenti e confrontali con l'insieme di valori che prevedi che la chiave supportata dall'hardware contenga.

Certificati radice

L'affidabilità dell'attestazione dipende dal certificato radice della catena. I dispositivi Android che hanno superato i test necessari per disporre della suite di app Google, tra cui Google Play, e che sono stati lanciati con Android 7.0 (livello API 24) o versioni successive devono utilizzare chiavi di attestazione firmate dal certificato radice di attestazione hardware di Google. Tieni presente che l'attestazione non era obbligatoria fino ad Android 8.0 (livello API 26). L'insieme di certificati radice validi può essere scaricato come array in formato JSON.

Certificati radice

I due certificati radice seguenti devono essere utilizzati come ancore di attendibilità durante la verifica di una catena di certificati di attestazione della chiave.

-----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-----

Il seguente certificato radice inizierà a firmare le catene di certificati di attestazione il 1° febbraio 2025.

-----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-----
  
Certificati radice emessi in precedenza
-----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-----
  

Se il certificato root nella catena di attestazione che ricevi contiene questa chiave pubblica e nessuno dei certificati nella catena è stato revocato, sai che:

  1. La chiave si trova in un hardware che Google ritiene sicuro.
  2. Ha le proprietà descritte nel certificato di attestazione.

Se la catena di attestazione ha un'altra chiave pubblica radice, Google non rilascia alcuna dichiarazione sulla sicurezza dell'hardware. Ciò non significa che la chiave sia compromessa, ma solo che l'attestazione non dimostra che la chiave si trova in un hardware sicuro. Modifica di conseguenza le tue ipotesi di sicurezza.

Se il certificato root non contiene la chiave pubblica in questa pagina, i motivi sono probabilmente due:

  • Molto probabilmente, il dispositivo è stato lanciato con una versione di Android precedente alla 7.0 e non supporta l'attestazione hardware. In questo caso, Android ha un'implementazione software dell'attestazione che produce lo stesso tipo di certificato di attestazione, ma firmato con una chiave hardcoded nel codice sorgente di Android. Poiché questa chiave di firma non è un segreto, l'attestazione potrebbe essere stata creata da un malintenzionato che finge di fornire hardware sicuro.
  • L'altro motivo probabile è che il dispositivo non sia un dispositivo Google Play. In questo caso, il produttore del dispositivo è libero di creare la propria root e di fare le affermazioni che preferisce sul significato dell'attestazione. Consulta la documentazione del produttore del dispositivo. Tieni presente che Google non è a conoscenza di produttori di dispositivi che hanno eseguito questa operazione.

Rotazione del certificato radice di attestazione hardware

Google sta introducendo un nuovo certificato radice per l'attestazione chiave Android. Questa modifica migliora la sicurezza e l'affidabilità della procedura di attestazione per le applicazioni sensibili. È stata generata una nuova chiave root per Android Key Attestation (KeyMint). La nuova root è una chiave ECDSA P-384 e in futuro è prevista una chiave ML-DSA (Post-Quantum Digital Signature Algorithm).

Azione per gli sviluppatori

  • Se la tua app si basa su Android Key Attestation, aggiungi il nuovo certificato radice ai tuoi archivi attendibili entro gennaio 2026. Scarica i certificati nuovi e precedenti da https://android.googleapis.com/attestation/root.
  • I dispositivi che utilizzano il provisioning remoto delle chiavi (RKP) inizieranno a ricevere certificati basati su questo nuovo certificato a febbraio 2026. I dispositivi abilitati a RKP utilizzeranno esclusivamente la nuova radice entro il 10 aprile 2026.
  • Aggiorna le procedure di attestazione in modo da considerare attendibili entrambi i certificati root nuovi ed esistenti. I dispositivi meno recenti con chiavi di provisioning di fabbrica non supportano la rotazione delle chiavi e continuano a utilizzare la radice precedente.
  • Lo schema dell'estensione del certificato rimarrà invariato, cambierà solo la radice.
  • Le forme leggibili sia dall'uomo che dal computer della nuova radice saranno disponibili pubblicamente.

Best practice

Non eseguire query su un endpoint per le radici attendibili in fase di runtime, in quanto questa azione crea rischi per la sicurezza. Gestisci le modifiche alle radici di attendibilità tramite una procedura formale.

Eliminazione graduale delle chiavi di fabbrica: provisioning delle chiavi da remoto (RKP)

Per i dispositivi lanciati con Android 16, il sistema supporta solo RKP. Questo criterio elimina gradualmente le chiavi di fabbrica. Migliora il provisioning e la gestione delle chiavi di attestazione, ampliando le norme di Android 15 in cui il supporto RKP era facoltativo. RKP impedisce la perdita di chiavi perché il sistema non programma le chiavi direttamente sul dispositivo. Non puoi eliminare queste chiavi dal dispositivo. Se devi revocare una chiave, puoi indirizzare la revoca a un singolo dispositivo.

Librerie di verifica dell'attestazione

Utilizza la libreria Kotlin di verifica dell'attestazione per verificare le catene di certificati Key Attestation. Inoltre, questa libreria integra già i nuovi certificati root Se utilizzi un altro verificatore, ti consigliamo di passare alla libreria Kotlin. È ben testato e copre i casi limite che spesso vengono trascurati dai verificatori personalizzati.

Elenco dello stato di revoca dei certificati

Le chiavi di attestazione possono essere revocate per diversi motivi, tra cui la gestione errata o la sospetta estrazione da parte di un malintenzionato. Pertanto, è fondamentale che lo stato di ogni certificato in una catena di attestazione venga controllato rispetto all'elenco ufficiale dello stato di revoca dei certificati (CRL). Questo elenco è gestito da Google e pubblicato all'indirizzo: https://android.googleapis.com/attestation/status. L'intestazione Cache-Control nella risposta HTTP determina la frequenza con cui controllare gli aggiornamenti, in modo che non sia necessaria una richiesta di rete per ogni certificato verificato. Questo URL restituisce un file JSON contenente lo stato di revoca di tutti i certificati che non hanno uno stato valido normale. Il formato del file JSON rispetta la seguente definizione dello schema JSON (bozza 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
}

Esempio di 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"
    }
  }
}

Policy di revoca dei certificati

L'attestazione costituisce la base della lotta contro gli abusi e della fiducia nell'ecosistema Android. Fornisce una dichiarazione verificabile crittograficamente a terze parti esterne al dispositivo sullo stato di avvio del dispositivo.

I certificati per le chiavi di attestazione Android verranno revocati quando le chiavi vengono compromesse, a causa della natura critica della validità dell'attestazione. Questa sezione descrive una policy per la revoca dei certificati. È probabile che questo criterio si evolva ed elenchi ulteriori casi nel tempo.

Cosa è idoneo per la revoca?

Le violazioni delle chiavi di attestazione interessano solo il meccanismo di provisioning precedente supportato in Android e non si applicano alle chiavi di attestazione certificate dal meccanismo di provisioning delle chiavi remoto (RKP) più recente.

Le chiavi di attestazione che sono state divulgate sono sempre idonee alla revoca dei certificati. Le perdite sono rilevabili in diversi modi, tra cui:

  • Analisi dei dati di attestazione in circolazione.
  • Scoperta di chiavi di attestazione sui social media o su altri siti pubblici.
  • Report direttamente dai ricercatori di sicurezza.

Al momento del rilevamento, i certificati di attestazione verranno revocati aggiungendo i relativi numeri di serie all'elenco di revoca. In genere questo avviene entro alcuni giorni dalla scoperta, ma in rari casi potrebbe richiedere più tempo. Ad esempio, la revoca dei certificati per le chiavi di attestazione compromesse viene generalmente ritardata se i dispositivi interessati dalla revoca possono essere riprovisionati in modo sicuro. Anche la portata dell'impatto della revoca è un fattore importante nei tempi di revoca.

Schema dei dati dell'estensione di attestazione chiave

Schema dei dati dell'estensione delle informazioni di provisioning