有了金鑰認證功能,您可以更放心地將應用程式中使用的金鑰,儲存在裝置的硬體支援 KeyStore 中。以下各節將說明如何驗證硬體支援金鑰的屬性,以及如何解讀認證憑證的擴充資料。
事前準備:確認裝置支援硬體層級金鑰認證
在正式版層級環境中驗證裝置硬體支援金鑰的屬性之前,請先確認該裝置支援硬體層級金鑰認證。方法是查看認證憑證鏈結,檢查是否包含使用 Google 認證根金鑰簽署的根憑證,並確認金鑰說明資料結構中的 attestationSecurityLevel 元素已設為 TrustedEnvironment 或 StrongBox 安全性等級。
另外,請務必驗證憑證鏈結中的簽章,並在憑證撤銷狀態清單中確認憑證鏈結中的金鑰均未遭到撤銷。除非所有金鑰都有效,且根金鑰為 Google 根金鑰,否則不要完全信任認證。
擷取及驗證硬體支援的金鑰組
在金鑰認證期間,您可以指定金鑰組的別名並擷取其憑證鏈結,用來驗證該金鑰組的屬性。
如果裝置支援硬體層級金鑰認證,系統會使用認證根金鑰簽署此鏈結中的根憑證,該根金鑰已安全地佈建至裝置硬體支援的 KeyStore。
如要實作金鑰認證,請完成下列步驟:
-
使用
KeyStore物件的getCertificateChain()方法,取得與硬體支援 KeyStore 相關聯的 X.509 憑證鏈結參照。 -
將憑證傳送至您信任的獨立伺服器以供驗證。
注意:請勿在同一部裝置上完成下列驗證程序。如果該裝置上的 Android 系統遭到入侵,可能會導致驗證程序信任某些不可信的內容。
-
取得最適合您工具集的 X.509 憑證鏈結剖析和驗證程式庫的參照。確認根公開憑證可信,且每個憑證都簽署了鏈結中的下一個憑證。
-
請檢查每個憑證的撤銷狀態,確保沒有憑證遭到撤銷。
-
您可以選擇檢查僅出現在較新憑證鏈結中的佈建資訊憑證擴充資料。
取得最適合您工具集的 CBOR 剖析器程式庫參照。找出最接近根憑證、且包含 佈建資訊憑證擴充資料的憑證。請使用剖析器從該憑證中擷取佈建資訊憑證的擴充資料。
詳情請參閱「 佈建資訊擴充功能」一節。
-
取得最適合您工具集的 ASN.1 剖析器程式庫參照。找出最接近根憑證,且包含 金鑰認證憑證擴充資料的憑證。如果有佈建資訊憑證擴充資料,金鑰認證憑證擴充資料一定位於緊隨其後的憑證之中。請使用剖析器從該憑證中擷取金鑰認證憑證的擴充資料。
注意:請勿假設金鑰認證憑證擴充資料位於鏈結的分葉憑證中。請只信任鏈結中首次出現的擴充資料。任何該擴充資料的例項都並非由安全硬體核發,而可能是擴充鏈結的攻擊者,在嘗試為不受信任的金鑰建立假認證時發出的。
金鑰認證範例會使用 Bouncy Castle 中的 ASN.1 剖析器,擷取認證憑證的擴充資料。在建立自己的剖析器時,您可以將此範例做為參考。
詳情請參閱「 金鑰認證擴充資料的結構定義」一節。
-
為求一致,請檢查您在先前步驟中擷取的擴充資料,並與預期硬體支援金鑰包含的值組合進行比較。
根憑證
認證的可信度取決於鏈結的根憑證。如果 Android 裝置已通過安裝 Google 一系列應用程式 (包括 Google Play) 所需的測試,且搭載 Android 7.0 (API 級別 24) 以上版本,則應使用由 Google 硬體認證根憑證簽署的認證金鑰。請注意,搭載 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-----
-----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 裝置。在這種情況下,裝置製造商可以自由建立自己的根憑證,並且定義認證資料的意義。請參閱裝置製造商的說明文件。請注意,Google 未發現已採用上述做法的裝置製造商。
硬體驗證根憑證輪替
Google 將推出新的 Android 金鑰認證根憑證。這項異動可提升敏感應用程式的認證程序安全性和可靠性。Android 金鑰認證 (KeyMint) 已產生新的根金鑰。新根是 ECDSA P-384 金鑰。
需要採取的行動
- 如果您的應用程式依賴 Android 金鑰認證,請在 2026 年 3 月 31 日前,將新的根憑證新增至信任存放區。從 https://android.googleapis.com/attestation/root 下載新舊憑證。
- 使用遠端金鑰佈建 (RKP) 的裝置將於 2026 年 2 月開始,接收以這個新憑證為根憑證的憑證。支援 RKP 的裝置將於 2026 年 4 月 10 日起全面採用新根憑證。
- 更新認證程序,同時信任新舊根憑證。 使用原廠佈建金鑰的舊裝置不支援金鑰輪替,會繼續使用舊根憑證。
- 憑證擴充功能架構本身不會變更,只有根目錄會變更。
- 新根憑證的人類可讀和機器可讀形式都會公開提供。
最佳做法
請勿在執行階段查詢端點的信任根,因為這項操作會造成安全風險。 透過正式程序處理信任根的變更。
淘汰工廠金鑰:遠端金鑰佈建 (RKP)
如果裝置搭載 Android 16,系統只會支援 RKP。這項政策會逐步淘汰工廠金鑰。這項政策可改善驗證金鑰的佈建和管理方式,並擴充 Android 15 政策 (RKP 支援為選用)。 RKP 可防止金鑰外洩,因為系統不會直接在裝置上設定金鑰。 您無法從裝置刪除這些金鑰。如必須撤銷金鑰,可以針對單一裝置撤銷金鑰。
認證驗證程式庫
使用認證驗證 Kotlin 程式庫驗證金鑰認證憑證鏈結。此外,這個程式庫已整合新的根憑證。 如果您使用其他驗證器,建議改用 Kotlin 程式庫。經過充分測試,涵蓋自訂驗證器經常遺漏的邊緣情況。
憑證撤銷狀態清單
導致認證金鑰遭撤銷的原因有很多,包括處理錯誤或疑似遭到攻擊者擷取。因此,請務必根據官方憑證撤銷狀態清單 (CRL),檢查認證鏈結每個憑證中的狀態。這份清單是由 Google 維護,並發布於:https://android.googleapis.com/attestation/status。HTTP 回應中的 Cache-Control 標頭會決定檢查更新的頻率,因此不需要為所有已驗證憑證發出網路要求。這個網址會傳回 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 認證金鑰遭到入侵,相關憑證就會遭到撤銷。本節概述憑證遭撤銷時的政策。這項政策可能會隨著時間演進,並列舉更多案例。
哪些情況會導致撤銷認證?
如果認證金鑰外洩,一律會撤銷憑證。 洩漏內容的發現方式有很多種,包括:
- 分析實際環境中的認證資料。
- 在社群媒體或其他公開網站上發現認證金鑰。
- 直接來自安全研究人員的報告。
發現後,系統會將認證憑證的序號新增至撤銷清單,藉此撤銷憑證。通常會在發現違規行為後的幾天內發生,但極少數情況下可能需要更長時間。舉例來說,如果受影響的裝置可以安全地重新佈建,通常會延後撤銷外洩認證金鑰的憑證。撤銷的影響範圍也是決定撤銷時間的重要因素。