Chứng thực khoá giúp bạn yên tâm hơn khi các khoá bạn dùng trong ứng dụng được lưu trữ trong kho khoá dựa trên phần cứng của thiết bị. Những phần sau đây mô tả cách xác minh các thuộc tính của khoá dựa trên phần cứng và cách diễn giải dữ liệu của tiện ích chứng chỉ chứng thực.
Trước khi bắt đầu: đảm bảo thiết bị của bạn hỗ trợ quy trình chứng thực khoá ở cấp độ phần cứng
Trước khi bạn xác minh các thuộc tính của khoá dựa trên phần cứng trên thiết bị trong môi trường cấp sản xuất, hãy đảm bảo rằng thiết bị hỗ trợ quy trình chứng thực khoá ở cấp độ phần cứng. Để thực hiện việc này, hãy kiểm tra nhằm đảm bảo rằng chuỗi chứng chỉ chứng thực có chứa chứng chỉ gốc được ký bằng khoá gốc của chứng thực Google và phần tử attestationSecurityLevel trong cấu trúc dữ liệu mô tả khoá được đặt thành mức an ninh TrustedEnvironment hoặc mức an ninh StrongBox.
Ngoài ra, bạn cần xác minh các chữ ký trong chuỗi chứng chỉ và xác nhận rằng không có khoá nào trong chuỗi đã bị thu hồi bằng cách kiểm tra danh sách trạng thái thu hồi chứng chỉ. Trừ phi tất cả đều hợp lệ và gốc là khoá gốc của Google, đừng hoàn toàn tin tưởng vào việc chứng thực.
Truy xuất và xác minh cặp khoá dựa trên phần cứng
Trong quá trình chứng thực khoá, bạn chỉ định email đại diện của một cặp khoá và truy xuất chuỗi chứng chỉ của cặp khoá đó. Bạn có thể sử dụng chuỗi chứng chỉ này để xác minh các thuộc tính của cặp khoá đó.
Nếu thiết bị hỗ trợ Chứng thực khoá ở cấp độ phần cứng, thì chứng chỉ gốc trong chuỗi này sẽ được ký bằng một khoá gốc của chứng thực (được cấp phép an toàn cho kho khoá dựa trên phần cứng của thiết bị).
Để triển khai quy trình chứng thực khoá, hãy hoàn tất các bước sau:
-
Sử dụng phương thức
getCertificateChain()của đối tượngKeyStoređể lấy thông tin tham chiếu đến chuỗi chứng chỉ X.509 liên kết với kho khoá dựa trên phần cứng. -
Gửi chứng chỉ đến một máy chủ riêng biệt mà bạn tin tưởng để xác thực.
Thận trọng: Không thực hiện quy trình xác thực sau đây trên cùng một thiết bị. Nếu hệ thống Android trên thiết bị đó bị xâm phạm, điều này có thể khiến quy trình xác thực tin tưởng nội dung không đáng tin cậy.
-
Lấy thông tin tham chiếu đến thư viện xác thực và phân tích cú pháp chuỗi chứng chỉ X.509 phù hợp nhất với bộ công cụ của bạn. Xác minh rằng chứng chỉ gốc công khai là đáng tin cậy và mỗi chứng chỉ sẽ ký chứng chỉ tiếp theo trong chuỗi.
-
Kiểm tra trạng thái thu hồi của từng chứng chỉ để đảm bảo rằng không có chứng chỉ nào bị thu hồi.
-
Bạn có thể tuỳ ý kiểm tra tiện ích chứng chỉ thông tin cấp phép chỉ có trong các chuỗi chứng chỉ mới.
Lấy thông tin tham chiếu đến thư viện trình phân tích cú pháp CBOR phù hợp nhất với bộ công cụ của bạn. Tìm chứng chỉ gần với chứng chỉ gốc nhất có chứa tiện ích chứng chỉ thông tin cấp phép. Sử dụng trình phân tích cú pháp để trích xuất dữ liệu của tiện ích chứng chỉ thông tin cấp phép từ chứng chỉ đó.
Hãy xem phần về tiện ích thông tin cấp phép để biết thêm thông tin.
-
Lấy thông tin tham chiếu đến thư viện trình phân tích cú pháp ASN.1 phù hợp nhất với bộ công cụ của bạn. Tìm chứng chỉ gần với chứng chỉ gốc nhất có chứa tiện ích chứng chỉ chứng thực khoá. Nếu có tiện ích chứng chỉ thông tin cấp phép, thì tiện ích chứng chỉ chứng thực khoá phải có trong chứng chỉ ngay sau đó. Sử dụng trình phân tích cú pháp để trích xuất dữ liệu của tiện ích chứng chỉ chứng thực khoá từ chứng chỉ đó.
Thận trọng: Đừng giả định rằng tiện ích chứng chỉ chứng thực khoá nằm trong leaf certificate của chuỗi. Chỉ có thể tin tưởng lần xuất hiện đầu tiên của tiện ích trong chuỗi. Mọi phiên bản tiếp theo của tiện ích chưa được phần cứng bảo mật phát hành và có thể đã bị kẻ tấn công mở rộng chuỗi phát hành trong khi tìm cách tạo chứng thực giả mạo cho các khoá không tin cậy.
Mẫu Chứng thực khoá sử dụng trình phân tích cú pháp ASN.1 từ Bouncy Castle để trích xuất dữ liệu tiện ích của chứng chỉ chứng thực. Bạn có thể sử dụng mẫu này làm tài liệu tham khảo để tạo trình phân tích cú pháp của riêng mình.
Hãy xem phần về giản đồ dữ liệu của tiện ích chứng thực khoá để biết thêm thông tin.
-
Kiểm tra dữ liệu của tiện ích mà bạn đã truy xuất ở các bước trước để đảm bảo tính nhất quán và so sánh với tập hợp các giá trị mà bạn mong đợi có trong khoá dựa trên phần cứng.
Chứng chỉ gốc
Mức độ đáng tin cậy của quy trình chứng thực phụ thuộc vào chứng chỉ gốc của chuỗi. Các thiết bị Android (vượt qua quy trình kiểm tra) bắt buộc phải có bộ ứng dụng của Google, bao gồm cả Google Play và các thiết bị chạy bằng Android 7.0 (API cấp 24) trở lên phải sử dụng khoá chứng thực được ký bằng Chứng chỉ gốc chứng thực phần cứng của Google. Lưu ý rằng việc chứng thực là không bắt buộc cho đến Android 8.0 (API cấp 26). Bạn có thể tải tập hợp chứng chỉ gốc hợp lệ xuống dưới dạng một mảng ở định dạng JSON.
Chứng chỉ gốc
Bạn nên sử dụng 2 chứng chỉ gốc sau đây làm neo tin cậy khi xác minh chuỗi chứng chỉ chứng thực khoá.
-----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-----
Chứng chỉ gốc đã phát hành trước đây
-----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-----
Nếu chứng chỉ gốc trong chuỗi chứng thực mà bạn nhận được chứa khoá công khai này và không có chứng chỉ nào trong chuỗi đó bị thu hồi, thì bạn biết rằng:
- Khoá của bạn nằm trong phần cứng mà Google cho là bảo mật; và
- Khoá này có các thuộc tính được mô tả trong chứng chỉ chứng thực.
Nếu chuỗi chứng thực có bất kỳ khoá gốc công khai nào khác, thì Google sẽ không đưa ra tuyên bố về tính bảo mật của phần cứng. Điều này không có nghĩa là khoá của bạn bị xâm phạm mà chỉ là quy trình chứng thực không chứng minh được khoá nằm trong phần cứng bảo mật. Hãy điều chỉnh các giả định mà bạn đưa ra về bảo mật sao cho phù hợp.
Việc chứng chỉ gốc không chứa khoá công khai có thể là vì một trong hai lý do sau:
- Nhiều khả năng nhất là thiết bị chạy Android phiên bản dưới 7.0 và phiên bản này không hỗ trợ quy trình chứng thực phần cứng. Trong trường hợp này, Android có một cách triển khai quy trình chứng thực bằng phần mềm. Quy trình này tạo ra cùng một loại chứng chỉ chứng thực, nhưng được ký bằng một khoá cố định giá trị trong mã nguồn của Android. Vì khoá ký này không phải là khoá bí mật nên quy trình chứng thực có thể đã do kẻ tấn công tạo ra để giả vờ cung cấp phần cứng bảo mật.
- Một lý do khác có thể là thiết bị đó không phải của Google Play. Trong trường hợp đó, nhà sản xuất thiết bị có thể tuỳ ý tạo chứng chỉ gốc riêng và xác định ý nghĩa của dữ liệu chứng thực. Hãy tham khảo tài liệu của nhà sản xuất thiết bị. Lưu ý rằng Google không biết bất kỳ nhà sản xuất thiết bị nào đã thực hiện việc này.
Xoay vòng chứng chỉ gốc chứng thực phần cứng
Google đang giới thiệu một chứng chỉ gốc mới cho quy trình Chứng thực khoá Android. Thay đổi này giúp tăng cường tính bảo mật và độ tin cậy của quy trình chứng thực cho các ứng dụng nhạy cảm. Một khoá gốc mới đã được tạo cho quy trình Chứng thực khoá Android (KeyMint). Gốc mới là khoá ECDSA P-384.
Việc cần làm
- Nếu ứng dụng của bạn dựa vào quy trình Chứng thực khoá Android, hãy thêm chứng chỉ gốc mới vào kho tin cậy của bạn trước ngày 31 tháng 3 năm 2026. Tải cả chứng chỉ mới và cũ xuống từ https://android.googleapis.com/attestation/root
- Các thiết bị sử dụng quy trình Cấp phép khoá từ xa (RKP) sẽ bắt đầu nhận chứng chỉ gốc trong chứng chỉ mới này vào tháng 2 năm 2026. Các thiết bị hỗ trợ RKP sẽ chỉ sử dụng gốc mới trước ngày 10 tháng 4 năm 2026.
- Cập nhật quy trình chứng thực để tin tưởng cả chứng chỉ gốc mới và hiện có. Các thiết bị cũ có khoá được cấp phép tại nhà máy không hỗ trợ xoay vòng khoá và tiếp tục sử dụng gốc cũ.
- Bản thân giản đồ tiện ích chứng chỉ sẽ không thay đổi; chỉ có gốc thay đổi.
- Cả dạng có thể đọc được và dạng máy có thể đọc được của gốc mới sẽ được cung cấp công khai.
Các phương pháp hay nhất
Đừng truy vấn một điểm cuối để tìm các gốc tin cậy trong thời gian chạy, vì hành động này tạo ra các rủi ro về bảo mật. Xử lý các thay đổi đối với gốc tin cậy thông qua một quy trình chính thức.
Giai đoạn loại bỏ các khoá tại nhà máy: Cấp phép khoá từ xa (RKP)
Đối với các thiết bị chạy Android 16, hệ thống chỉ hỗ trợ RKP. Chính sách này loại bỏ các khoá tại nhà máy. Chính sách này cải thiện cách bạn cấp phép và quản lý các khoá chứng thực, mở rộng chính sách Android 15 (trong đó hỗ trợ RKP là không bắt buộc). RKP ngăn chặn rò rỉ khoá vì hệ thống không lập trình khoá trực tiếp vào thiết bị. Bạn không thể xoá các khoá này khỏi thiết bị. Nếu phải thu hồi một khoá, bạn có thể nhắm mục tiêu thu hồi vào một thiết bị.
Thư viện xác minh chứng thực
Sử dụng thư viện Kotlin xác minh chứng thực để xác minh các chuỗi chứng chỉ Chứng thực khoá. Ngoài ra, thư viện này đã tích hợp các chứng chỉ gốc mới. Nếu bạn đang sử dụng một trình xác minh khác, bạn nên chuyển sang thư viện Kotlin. Thư viện này đã được kiểm thử kỹ lưỡng và bao gồm các trường hợp đặc biệt mà trình xác minh tuỳ chỉnh thường bỏ lỡ.
Danh sách trạng thái thu hồi chứng chỉ
Khoá chứng thực có thể bị thu hồi vì một số lý do, bao gồm cả việc kẻ tấn công sử dụng sai hoặc có hành vi trích xuất đáng ngờ. Do đó, điều quan trọng là phải kiểm tra trạng thái của từng chứng chỉ trong chuỗi chứng thực dựa vào danh sách trạng thái thu hồi chứng chỉ (CRL) chính thức.
Danh sách này do Google duy trì và xuất bản tại: https://android.googleapis.com/attestation/status. Tiêu đề Cache-Control trong phản hồi HTTP xác định tần suất kiểm tra các bản cập nhật. Vì vậy, bạn không cần phải có yêu cầu mạng cho mọi chứng chỉ đang được xác minh.
URL này trả về một tệp JSON chứa trạng thái thu hồi của mọi chứng chỉ không có trạng thái hợp lệ và bình thường. Định dạng của tệp JSON tuân thủ định nghĩa về Giản đồ JSON (bản nháp 07) sau đây:
{
"$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
}Ví dụ về 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"
}
}
}
Chính sách thu hồi chứng chỉ
Chứng thực tạo thành xương sống của việc chống lạm dụng và tin cậy trong hệ sinh thái Android. Chứng thực cung cấp một câu lệnh có thể xác minh bằng mật mã cho các bên ngoài thiết bị về trạng thái khởi động của thiết bị.
Các chứng chỉ cho khoá chứng thực Android sẽ bị thu hồi khi các khoá bị xâm phạm, do tính chất quan trọng của tính hợp lệ của chứng thực. Phần này trình bày chính sách về thời điểm thu hồi chứng chỉ. Chính sách này có thể sẽ phát triển và liệt kê thêm các trường hợp theo thời gian.
Điều kiện để thu hồi là gì?
Các khoá chứng thực bị rò rỉ luôn đủ điều kiện để bị thu hồi chứng chỉ. Bạn có thể phát hiện rò rỉ theo một số cách, bao gồm:
- Phân tích dữ liệu chứng thực trong thực tế.
- Phát hiện các khoá chứng thực trên mạng xã hội hoặc các trang công khai khác.
- Báo cáo trực tiếp từ các nhà nghiên cứu bảo mật.
Sau khi phát hiện, các chứng chỉ chứng thực sẽ bị thu hồi bằng cách thêm số sê-ri của chúng vào danh sách thu hồi. Thông thường việc này sẽ diễn ra trong vòng vài ngày kể từ khi phát hiện, nhưng có thể mất nhiều thời gian hơn trong một số trường hợp hiếm gặp. Ví dụ: việc thu hồi chứng chỉ cho các khoá chứng thực bị rò rỉ thường bị trì hoãn nếu các thiết bị bị ảnh hưởng bởi việc thu hồi có thể được cấp phép lại một cách an toàn. Quy mô tác động của việc thu hồi cũng là một yếu tố quan trọng trong thời gian thu hồi.