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:
-
Utilizza il metodo
getCertificateChain()
di un oggettoKeyStore
per ottenere un riferimento alla catena di certificati X.509 associati all'archivio chiavi basato sull'hardware. -
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 è.
-
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.
-
Controlla lo stato di revoca di ogni certificato per assicurarti che nessuno sia stato revocato.
-
(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.
-
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.
-
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:
- La chiave si trova in un hardware che Google ritiene sicuro.
- 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.