Pengesahan Kunci memberi Anda keyakinan lebih bahwa kunci yang Anda gunakan dalam aplikasi disimpan dalam keystore yang didukung hardware perangkat. Bagian berikut menjelaskan cara memverifikasi properti kunci yang didukung hardware dan cara menafsirkan data ekstensi sertifikat pengesahan.
Sebelum memulai: pastikan perangkat Anda mendukung pengesahan kunci level hardware
Sebelum Anda memverifikasi properti kunci yang didukung hardware di perangkat dalam lingkungan level produksi, pastikan perangkat tersebut mendukung pengesahan kunci level hardware. Untuk melakukannya, pastikan rantai sertifikat pengesahan
berisi root certificate yang ditandatangani oleh kunci utama pengesahan Google
dan elemen attestationSecurityLevel dalam
deskripsi kunci
struktur data disetel ke tingkat keamanan TrustedEnvironment atau
ke tingkat keamanan StrongBox.
Selain itu, penting untuk memverifikasi tanda tangan dalam rantai sertifikat dan mengonfirmasi tidak ada kunci dalam rantai yang dicabut dengan memeriksa daftar status pencabutan sertifikat. Jangan sepenuhnya memercayai pengesahan tersebut, kecuali jika semuanya valid dan root adalah kunci utama Google.
Mengambil dan memverifikasi pasangan kunci yang didukung hardware
Selama pengesahan kunci, Anda menentukan alias pasangan kunci dan mengambil rantai sertifikatnya, yang dapat Anda gunakan untuk memverifikasi properti pasangan kunci tersebut.
Jika perangkat mendukung pengesahan kunci level hardware, root certificate dalam rantai ditandatangani menggunakan kunci utama pengesahan yang disediakan dengan aman ke keystore yang didukung hardware di perangkat.
Untuk mengimplementasikan pengesahan kunci, lakukan langkah-langkah berikut:
-
Gunakan metode
getCertificateChain()objekKeyStoreuntuk mendapatkan referensi ke rantai sertifikat X.509 yang terkait dengan keystore yang didukung hardware. -
Kirim sertifikat ke server terpisah yang Anda percayai untuk validasi.
Perhatian: Jangan selesaikan proses validasi berikut di perangkat yang sama. Jika sistem Android pada perangkat tersebut disusupi, proses validasi menjadi bisa memercayai sesuatu yang tidak dapat dipercaya.
-
Dapatkan referensi ke library validasi dan penguraian rantai sertifikat X.509 yang paling sesuai untuk rangkaian alat Anda. Pastikan bahwa root certificate publik dapat dipercaya dan setiap sertifikat menandatangani sertifikat berikutnya di dalam rantai.
-
Periksa status pencabutan setiap sertifikat untuk memastikan tidak ada sertifikat yang dicabut.
-
Periksa ekstensi sertifikat informasi penyediaan yang hanya berada dalam rantai sertifikat yang lebih baru secara opsional.
Dapatkan referensi ke library parser CBOR yang paling sesuai untuk rangkaian alat Anda. Temukan sertifikat terdekat ke root yang berisi ekstensi sertifikat informasi penyediaan. Gunakan parser untuk mengekstrak data ekstensi sertifikat informasi penyediaan dari sertifikat tersebut.
Lihat bagian ekstensi informasi penyediaan untuk mengetahui detail selengkapnya.
-
Dapatkan referensi ke library parser ASN.1 yang paling sesuai untuk rangkaian alat Anda. Temukan sertifikat terdekat ke root yang berisi ekstensi sertifikat pengesahan kunci. Jika ada ekstensi sertifikat informasi penyediaan, ekstensi sertifikat pengesahan kunci harus berada dalam sertifikat berikutnya secara langsung. Gunakan parser untuk mengekstrak data ekstensi sertifikat pengesahan kunci dari sertifikat tersebut.
Perhatian: Jangan berasumsi bahwa ekstensi sertifikat pengesahan kunci berada dalam sertifikat entitas akhir rantai. Hanya kemunculan ekstensi pertama dalam rantai yang dapat dipercaya. Setiap instance ekstensi lebih lanjut belum dikeluarkan oleh hardware yang aman dan dapat dikeluarkan oleh penyerang yang memperluas rantai sambil mencoba membuat pengesahan palsu untuk kunci yang tidak tepercaya.
Sampel Pengesahan Kunci menggunakan parser ASN.1 dari Bouncy Castle untuk mengekstrak data ekstensi sertifikat pengesahan. Anda dapat menggunakan sampel ini sebagai referensi untuk membuat parser Anda sendiri.
Lihat bagian skema data ekstensi pengesahan kunci untuk mengetahui detail selengkapnya.
-
Periksa konsistensi data ekstensi yang telah Anda ambil pada langkah sebelumnya, dan bandingkan dengan kumpulan nilai yang Anda harapkan untuk dimuat oleh kunci yang didukung hardware.
Root certificate
Validitas pengesahan tergantung pada root certificate rantai. Perangkat Android yang telah lulus pengujian harus memiliki rangkaian aplikasi Google, termasuk Google Play, dan yang diluncurkan dengan Android 7.0 (API level 24) atau lebih tinggi harus menggunakan kunci pengesahan yang ditandatangani oleh sertifikat Root Pengesahan Hardware Google. Perhatikan bahwa pengesahan tidak diperlukan hingga Android 8.0 (level API 26). Kumpulan root certificate yang valid dapat didownload sebagai a array berformat JSON.
Root Certificate
Dua root certificate berikut harus digunakan sebagai anchor tepercaya saat memverifikasi rantai sertifikat pengesahan kunci.
-----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-----
Root Certificate yang Sudah Diterbitkan Sebelumnya
-----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-----
- Kunci Anda berada di hardware yang Google yakini aman; dan
- Kunci memiliki properti yang dijelaskan dalam sertifikat pengesahan.
Jika rantai pengesahan memiliki root kunci publik lain, Google tidak membuat klaim apa pun tentang keamanan hardware. Hal ini tidak berarti kunci Anda disusupi, hanya saja pengesahan tidak membuktikan kunci tersebut berada dalam hardware yang aman. Sesuaikan asumsi keamanan Anda dengan semestinya.
Jika root certificate tidak berisi kunci publik di halaman ini, ada dua kemungkinan alasan:
- Kemungkinan besar, perangkat diluncurkan dengan versi Android kurang dari 7.0 dan tidak mendukung pengesahan hardware. Dalam hal ini, Android memiliki implementasi software pengesahan yang menghasilkan sertifikat pengesahan yang sama, tetapi ditandatangani dengan kunci hardcode dalam kode sumber Android. Karena kunci penandatanganan ini tidak bersifat rahasia, pengesahan dapat dibuat oleh penyerang yang berpura-pura menyediakan hardware yang aman.
- Kemungkinan alasan lainnya adalah perangkat tersebut bukan perangkat Google Play. Dalam hal ini, pembuat perangkat bebas untuk membuat root certificate mereka sendiri dan menentukan arti data pengesahan mereka. Lihat dokumentasi pembuat perangkat. Perhatikan bahwa Google tidak mengetahui adanya pembuat perangkat yang telah melakukan hal tersebut.
Rotasi root certificate pengesahan hardware
Google memperkenalkan root certificate baru untuk Pengesahan Kunci Android. Perubahan ini meningkatkan keamanan dan keandalan proses pengesahan untuk aplikasi sensitif. Kunci root baru telah dibuat untuk Pengesahan Kunci Android (KeyMint). Root baru adalah kunci ECDSA P-384.
Yang perlu dilakukan
- Jika aplikasi Anda mengandalkan Pengesahan Kunci Android, tambahkan root certificate baru ke penyimpanan tepercaya Anda paling lambat 31 Maret 2026. Download sertifikat baru dan lama dari https://android.googleapis.com/attestation/root
- Perangkat yang menggunakan Penyediaan Kunci Jarak Jauh (RKP) akan mulai menerima sertifikat yang di-root di sertifikat baru ini pada Februari 2026. Perangkat yang mendukung RKP akan menggunakan root baru secara eksklusif paling lambat 10 April 2026.
- Perbarui proses pengesahan Anda untuk memercayai root certificate baru dan yang sudah ada. Perangkat lama dengan kunci yang disediakan pabrik tidak mendukung rotasi kunci dan terus menggunakan root lama.
- Skema ekstensi sertifikat itu sendiri tidak akan berubah; hanya root yang berubah.
- Bentuk root baru yang dapat dibaca manusia dan mesin akan tersedia secara publik.
Praktik Terbaik
Jangan kueri endpoint untuk root tepercaya saat runtime, karena tindakan ini menimbulkan risiko keamanan. Tangani perubahan pada root tepercaya melalui proses formal.
Menghapus kunci pabrik: Penyediaan Kunci Jarak Jauh (RKP)
Untuk perangkat yang diluncurkan dengan Android 16, sistem hanya mendukung RKP. Kebijakan ini menghapus kunci pabrik. Kebijakan ini meningkatkan cara Anda menyediakan dan mengelola kunci pengesahan, yang memperluas kebijakan Android 15 yang dukungan RKP-nya bersifat opsional. RKP mencegah kebocoran kunci karena sistem tidak memprogram kunci langsung ke perangkat. Anda tidak dapat menghapus kunci ini dari perangkat. Jika harus mencabut kunci, Anda dapat menargetkan pencabutan ke satu perangkat.
Library verifikasi pengesahan
Gunakan library Kotlin verifikasi pengesahan untuk memverifikasi rantai sertifikat Pengesahan Kunci. Selain itu, library ini sudah mengintegrasikan root certificate baru. Jika Anda menggunakan verifikator lain, sebaiknya beralih ke library Kotlin. Library ini telah diuji dengan baik, dan mencakup kasus ekstrem yang sering terlewat oleh verifikator kustom.
Daftar status pencabutan sertifikat
Kunci pengesahan dapat dicabut karena berbagai alasan, termasuk kesalahan penanganan atau dugaan
ekstraksi oleh penyerang. Oleh karena itu, status setiap sertifikat dalam
rantai pengesahan harus diperiksa dengan daftar status pencabutan sertifikat (CRL) resmi.
Daftar ini dikelola oleh Google dan dipublikasikan di:
https://android.googleapis.com/attestation/status. Header Cache-Control dalam
respons HTTP menentukan seberapa sering pemeriksaan update dilakukan sehingga tidak diperlukan permintaan jaringan
untuk setiap sertifikat yang diverifikasi.
URL ini menampilkan file JSON yang berisi status pencabutan sertifikat apa pun yang tidak
memiliki status valid yang normal. Format file JSON mematuhi definisi Skema JSON
(draf 07) berikut:
{
"$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
}Contoh 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"
}
}
}
Kebijakan pencabutan sertifikat
Pengesahan membentuk tulang punggung upaya melawan penyalahgunaan dan kepercayaan dalam ekosistem Android. Pengesahan memberikan pernyataan yang dapat diverifikasi secara kriptografis kepada pihak di luar perangkat tentang status booting perangkat.
Sertifikat untuk kunci pengesahan Android akan dicabut jika kunci tersebut disusupi, karena sifat penting validitas pengesahan. Bagian ini menguraikan kebijakan tentang kapan sertifikat dicabut. Kebijakan ini kemungkinan akan berkembang dan mencantumkan kasus tambahan dari waktu ke waktu.
Apa yang memenuhi syarat untuk pencabutan?
Kunci pengesahan yang telah bocor selalu memenuhi syarat untuk dicabut sertifikatnya. Kebocoran dapat ditemukan dengan beberapa cara, termasuk:
- Analisis data pengesahan di luar.
- Penemuan kunci pengesahan di media sosial atau situs publik lainnya.
- Laporan langsung dari peneliti keamanan.
Setelah ditemukan, sertifikat pengesahan akan dicabut dengan menambahkan nomor serinya ke daftar pencabutan. Biasanya hal ini akan terjadi dalam beberapa hari setelah penemuan, tetapi mungkin memerlukan waktu lebih lama dalam kasus yang jarang terjadi. Misalnya, pencabutan sertifikat untuk kunci pengesahan yang bocor biasanya ditunda jika perangkat yang terpengaruh oleh pencabutan dapat disediakan ulang dengan aman. Skala dampak pencabutan juga merupakan faktor penting dalam linimasa pencabutan.