Подтверждение ключей даёт вам больше уверенности в том, что ключи, используемые в вашем приложении, хранятся в аппаратном хранилище ключей устройства. В следующих разделах описывается, как проверить свойства аппаратных ключей и как интерпретировать данные расширения сертификатов подтверждения.
Примечание: Перед проверкой свойств аппаратных ключей устройства в производственной среде убедитесь, что устройство поддерживает аппаратную аттестацию ключей. Для этого проверьте, что цепочка сертификатов аттестации содержит корневой сертификат, подписанный корневым ключом аттестации Google, и что элемент attestationSecurityLevel
в структуре данных описания ключа имеет уровень безопасности TrustedEnvironment
или StrongBox
.
Кроме того, важно проверить подписи в цепочке сертификатов и убедиться, что ни один из ключей в цепочке не был отозван, проверив список отозванных сертификатов . Если все сертификаты недействительны и корневой ключ не является корневым ключом Google, не доверяйте аттестации полностью.
Извлечь и проверить пару аппаратных ключей
Во время аттестации ключа вы указываете псевдоним пары ключей и извлекаете ее цепочку сертификатов, которую можно использовать для проверки свойств этой пары ключей.
Если устройство поддерживает аттестацию ключей на уровне оборудования, корневой сертификат в этой цепочке подписывается с использованием корневого ключа аттестации, который безопасно предоставляется в хранилище ключей на уровне оборудования устройства.
Примечание: На устройствах с аппаратной аттестацией ключа, Android 7.0 (уровень API 24) или выше и сервисами Google Play корневой сертификат подписан корневым ключом аттестации Google. Убедитесь, что этот корневой сертификат входит в список, указанный в разделе о корневых сертификатах .
Для реализации аттестации ключей выполните следующие шаги:
- Используйте метод
getCertificateChain()
объектаKeyStore
, чтобы получить ссылку на цепочку сертификатов X.509, связанных с аппаратным хранилищем ключей. Отправьте сертификаты на отдельный сервер, которому вы доверяете для проверки.
Внимание: Не выполняйте следующую процедуру проверки на том же устройстве. Если система Android на этом устройстве скомпрометирована, процесс проверки может быть вынужден довериться чему-то недостоверному.
Получите ссылку на библиотеку анализа и проверки цепочки сертификатов X.509, наиболее подходящую для вашего набора инструментов. Убедитесь, что корневой открытый сертификат является надёжным и что каждый сертификат подписывает следующий сертификат в цепочке.
Проверьте статус отзыва каждого сертификата, чтобы убедиться, что ни один из сертификатов не был отозван.
При желании проверьте расширение сертификата с информацией о предоставлении, которое присутствует только в новых цепочках сертификатов.
Получите ссылку на библиотеку парсера CBOR, наиболее подходящую для вашего набора инструментов. Найдите ближайший к корню сертификат, содержащий расширение сертификата с информацией о предоставлении . Используйте парсер для извлечения данных расширения сертификата с информацией о предоставлении из этого сертификата.
Более подробную информацию см. в разделе о расширении информации о предоставлении .
Получите ссылку на библиотеку парсера ASN.1, наиболее подходящую для вашего набора инструментов. Найдите ближайший к корневому сертификат, содержащий расширение сертификата подтверждения ключа . Если расширение сертификата с информацией о предоставлении сертификата присутствовало, расширение сертификата подтверждения ключа должно быть в следующем сертификате. Используйте парсер для извлечения данных расширения сертификата подтверждения ключа из этого сертификата.
Внимание: Не предполагайте, что расширение сертификата подтверждения ключа находится в конечном сертификате цепочки. Доверенным можно считать только первое вхождение расширения в цепочке. Все последующие экземпляры расширения не были выпущены защищённым оборудованием и могли быть выпущены злоумышленником, расширяющим цепочку при попытке создания поддельных подтверждений для ненадёжных ключей.
Пример Key Attestation использует парсер ASN.1 из Bouncy Castle для извлечения данных расширения сертификата подтверждения. Вы можете использовать этот пример в качестве справочного материала для создания собственного парсера.
Более подробную информацию см. в разделе о схеме данных расширения аттестации ключей .
Проверьте данные расширения, полученные на предыдущих этапах, на согласованность и сравните их с набором значений, которые, как вы ожидаете, будет содержать аппаратный ключ.
Корневые сертификаты
Достоверность аттестации зависит от корневого сертификата цепочки. Устройства Android, прошедшие тестирование, необходимое для использования пакета приложений Google, включая Google Play, и выпущенные с Android 7.0 (уровень API 24) или выше, должны использовать ключи аттестации, подписанные корневым сертификатом Google Hardware Attestation Root. Обратите внимание, что аттестация не требовалась до Android 8.0 (уровень API 26). Набор действительных корневых сертификатов можно загрузить в виде массива в формате JSON .
Корневые сертификаты
Следующие два корневых сертификата следует использовать в качестве якорей доверия при проверке цепочки сертификатов аттестации ключей.
-----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-----
Следующий корневой сертификат начнет подписывать цепочки сертификатов подтверждения подлинности с 1 февраля 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-----
Ранее выданные корневые сертификаты
-----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-----
Если корневой сертификат в полученной вами цепочке подтверждения содержит этот открытый ключ и ни один из сертификатов в цепочке не был отозван , вы знаете, что:
- Ваш ключ находится в оборудовании, которое Google считает безопасным; и
- Имеет свойства, описанные в аттестате.
Если в цепочке аттестации присутствует какой-либо другой корневой открытый ключ, Google не делает никаких заявлений о безопасности оборудования. Это не означает, что ваш ключ скомпрометирован, а означает лишь, что аттестация не подтверждает, что ключ находится в защищённом оборудовании. Скорректируйте свои предположения о безопасности соответствующим образом.
Если корневой сертификат не содержит открытого ключа на этой странице, есть две вероятные причины:
- Скорее всего, устройство было выпущено с версией Android ниже 7.0, и оно не поддерживает аппаратную аттестацию. В данном случае в Android реализована программная реализация аттестации, которая создаёт тот же сертификат аттестации, но подписанный ключом, зашитым в исходный код Android . Поскольку этот ключ подписи не является секретным, аттестация могла быть создана злоумышленником, выдающим себя за предоставление защищённого оборудования.
- Другая вероятная причина — устройство не входит в список устройств Google Play. В этом случае производитель устройства может создать собственный root-доступ и делать любые заявления о значении аттестации. См. документацию производителя устройства. Обратите внимание, что Google не располагает информацией о каких-либо производителях устройств, которые это делали.
Ротация корневого сертификата аттестации оборудования
Google представляет новый корневой сертификат для подтверждения подлинности ключей Android . Это изменение повышает безопасность и надёжность процесса подтверждения подлинности конфиденциальных приложений. Для подтверждения подлинности ключей Android (KeyMint) сгенерирован новый корневой ключ. Новый корневой ключ — это ключ ECDSA P-384, а в будущем планируется добавить ключ ML-DSA (постквантовый алгоритм цифровой подписи).
Действие для разработчиков
- Если ваше приложение использует Android Key Attestation, добавьте новый корневой сертификат в свои хранилища доверенных сертификатов до января 2026 года. Загрузите новый и старый сертификаты с сайта https://android.googleapis.com/attestation/root.
- Устройства, использующие удаленную подготовку ключей (RKP), начнут получать сертификаты, основанные на этом новом сертификате, в феврале 2026 года. Устройства с поддержкой RKP будут использовать новый корневой сертификат исключительно к 10 апреля 2026 года.
- Обновите процессы аттестации, чтобы доверять как новым, так и существующим корневым сертификатам. Старые устройства с заводскими ключами не поддерживают ротацию ключей и продолжают использовать старый корневой сертификат.
- Сама схема расширения сертификата останется неизменной; меняется только корень.
- Как человекочитаемая, так и машиночитаемая формы нового корня будут общедоступны.
Лучшие практики
Не запрашивайте у конечной точки доверенные корневые элементы во время выполнения, так как это создаёт риски безопасности. Обрабатывайте изменения в корнях доверия посредством формальной процедуры.
Поэтапный отказ от заводских ключей: удаленная подготовка ключей (RKP)
Для устройств с Android 16 система поддерживает только RKP. Эта политика постепенно отменяет заводские ключи. Она улучшает процесс предоставления и управления ключами подтверждения, расширяя возможности политики Android 15, где поддержка RKP была необязательной. RKP предотвращает утечку ключей, поскольку система не программирует ключи непосредственно на устройстве. Эти ключи невозможно удалить с устройства. Если необходимо отозвать ключ, можно настроить отзыв для одного устройства.
Библиотеки проверки аттестации
Используйте библиотеку Kotlin для проверки цепочек сертификатов Key Attestation. Более того, эта библиотека уже интегрирует новые корневые сертификаты . Если вы используете другой верификатор, рекомендуем перейти на библиотеку Kotlin. Она хорошо протестирована и охватывает пограничные случаи, которые часто упускаются пользовательскими верификаторами.
Список статусов отзыва сертификатов
Ключи аттестации могут быть отозваны по ряду причин, включая неправильное обращение или подозрение на их извлечение злоумышленником. Поэтому крайне важно, чтобы статус каждого сертификата в цепочке аттестации проверялся по официальному списку статусов отзыва сертификатов (CRL). Этот список поддерживается Google и опубликован по адресу: https://android.googleapis.com/attestation/status . Заголовок Cache-Control
в HTTP-ответе определяет частоту проверки обновлений, поэтому сетевой запрос не требуется для каждого проверяемого сертификата. Этот URL возвращает JSON-файл, содержащий статус отзыва для всех сертификатов, которые не имеют нормального статуса действительного сертификата. Формат JSON-файла соответствует следующему определению JSON-схемы ( проект 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 }
Пример 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" } } }
Политика отзыва сертификатов
Аттестация — основа противодействия злоупотреблениям и доверия в экосистеме Android. Она предоставляет внешним сторонам криптографически проверяемое подтверждение о состоянии устройства после загрузки.
Сертификаты для ключей подтверждения подлинности Android будут отозваны в случае их компрометации, поскольку валидность подтверждения крайне важна. В этом разделе описана политика отзыва сертификатов. Со временем эта политика, вероятно, будет развиваться и включать в себя дополнительные случаи.
Что является основанием для отзыва?
Утечки ключей аттестации затрагивают только старый механизм предоставления, поддерживаемый в Android, и не распространяются на ключи аттестации, сертифицированные с помощью нового механизма удаленного предоставления ключей (RKP).
Сертификаты ключей подтверждения, подвергшихся утечке, всегда могут быть отозваны. Утечки можно обнаружить несколькими способами, включая:
- Анализ аттестационных данных в дикой природе.
- Обнаружение ключей подтверждения подлинности в социальных сетях или других публичных сайтах.
- Отчеты напрямую от исследователей безопасности.
После обнаружения сертификаты подтверждения подлинности будут отозваны, а их серийные номера будут добавлены в список отозванных . Обычно это происходит в течение нескольких дней после обнаружения, но в редких случаях может занять больше времени. Например, отзыв сертификатов для украденных ключей подтверждения подлинности обычно задерживается, если устройства, затронутые отзывом, могут быть безопасно повторно подготовлены. Масштаб последствий отзыва также является важным фактором, определяющим сроки отзыва.