การรับรองคีย์ช่วยให้คุณมั่นใจได้มากขึ้นว่าคีย์ที่คุณใช้ในแอป จะจัดเก็บไว้ในที่เก็บคีย์ที่ได้รับการสนับสนุนจากฮาร์ดแวร์ของอุปกรณ์ ส่วนต่อไปนี้ จะอธิบายวิธียืนยันพร็อพเพอร์ตี้ของคีย์ที่ได้รับการสนับสนุนจากฮาร์ดแวร์และวิธี ตีความข้อมูลส่วนขยายของใบรับรองการรับรอง
หมายเหตุ: ก่อนที่จะยืนยันพร็อพเพอร์ตี้ของคีย์ที่ได้รับการสนับสนุนจากฮาร์ดแวร์ของอุปกรณ์ในสภาพแวดล้อมระดับการผลิต โปรดตรวจสอบว่าอุปกรณ์รองรับการรับรองคีย์ระดับฮาร์ดแวร์ โดยให้ตรวจสอบว่าห่วงโซ่ใบรับรองการรับรองมีใบรับรองรูทที่ลงนามด้วยคีย์รูทการรับรองของ Google และตั้งค่าองค์ประกอบ attestationSecurityLevel
ภายในโครงสร้างข้อมูลคำอธิบายคีย์เป็นระดับความปลอดภัย TrustedEnvironment
หรือระดับความปลอดภัย StrongBox
นอกจากนี้ คุณควรยืนยันลายเซ็นในกลุ่มใบรับรอง และยืนยันว่าไม่มีคีย์ใดในกลุ่มที่ถูกเพิกถอนโดยการตรวจสอบ รายการสถานะการเพิกถอนใบรับรอง อย่าเชื่อถือการรับรองอย่างเต็มที่ เว้นแต่ว่าทั้งหมดจะถูกต้องและรูทเป็นคีย์รูทของ Google
เรียกข้อมูลและยืนยันคู่คีย์แบบใช้ฮาร์ดแวร์
ในระหว่างการรับรองคีย์ คุณจะระบุชื่อแทนของคู่คีย์และเรียกเชนใบรับรองของคู่คีย์นั้น ซึ่งคุณสามารถใช้เพื่อยืนยันพร็อพเพอร์ตี้ของคู่คีย์นั้นได้
หากอุปกรณ์รองรับเอกสารรับรองคีย์ระดับฮาร์ดแวร์ ระบบจะลงนามใบรับรองรูท ภายในห่วงโซ่นี้โดยใช้คีย์รูทของเอกสารรับรองที่จัดสรรอย่างปลอดภัย ไปยังที่เก็บคีย์ที่ใช้ฮาร์ดแวร์ของอุปกรณ์
หมายเหตุ: ในอุปกรณ์ที่จัดส่งพร้อมการรับรองคีย์ระดับฮาร์ดแวร์ Android 7.0 (API ระดับ 24) ขึ้นไป และบริการ Google Play ใบรับรองรูทจะลงนามด้วยคีย์รูทการรับรองของ Google ตรวจสอบว่าใบรับรองรูทนี้อยู่ในรายการที่ระบุไว้ในส่วนใบรับรองรูท
หากต้องการใช้การรับรองคีย์ ให้ทำตามขั้นตอนต่อไปนี้
-
ใช้เมธอด
KeyStore
ของออบเจ็กต์getCertificateChain()
เพื่อรับการอ้างอิงเชนของใบรับรอง X.509 ที่เชื่อมโยงกับ ที่เก็บคีย์ที่ได้รับการสนับสนุนจากฮาร์ดแวร์ -
ส่งใบรับรองไปยังเซิร์ฟเวอร์อื่นที่คุณเชื่อถือเพื่อทำการตรวจสอบ
ข้อควรระวัง: อย่าทำกระบวนการตรวจสอบต่อไปนี้ ในอุปกรณ์เดียวกัน หากระบบ Android ในอุปกรณ์นั้นถูกบุกรุก อาจทำให้กระบวนการตรวจสอบเชื่อถือสิ่งที่ไม่น่าเชื่อถือ ได้
-
รับข้อมูลอ้างอิงถึงการแยกวิเคราะห์และการตรวจสอบห่วงโซ่ใบรับรอง X.509 ซึ่งเป็นไลบรารีที่เหมาะสมที่สุดสำหรับชุดเครื่องมือของคุณ ตรวจสอบว่าใบรับรองสาธารณะ ของรูทเชื่อถือได้ และใบรับรองแต่ละใบเซ็น ใบรับรองถัดไปในเชน
-
ตรวจสอบสถานะการเพิกถอนของใบรับรองแต่ละรายการ เพื่อให้แน่ใจว่าไม่มีใบรับรองใดถูกเพิกถอน
-
ไม่บังคับ: ตรวจสอบส่วนขยายใบรับรองข้อมูลการจัดสรรที่มีเฉพาะในห่วงโซ่ใบรับรองที่ใหม่กว่า
รับการอ้างอิงไปยังไลบรารีตัวแยกวิเคราะห์ CBOR ที่เหมาะสมที่สุดสำหรับชุดเครื่องมือของคุณ ค้นหาใบรับรองที่ใกล้เคียงกับรูทมากที่สุดซึ่งมี ส่วนขยายใบรับรองข้อมูลการจัดสรร ใช้ตัวแยกวิเคราะห์เพื่อดึงข้อมูลการจัดสรร ข้อมูลส่วนขยายใบรับรองจากใบรับรองนั้น
ดูรายละเอียดเพิ่มเติมได้ที่ส่วนเกี่ยวกับ ส่วนขยายข้อมูลการจัดสรร
-
รับการอ้างอิงไปยังไลบรารีตัวแยกวิเคราะห์ ASN.1 ที่เหมาะสมที่สุด สำหรับชุดเครื่องมือของคุณ ค้นหาใบรับรองที่ใกล้เคียงกับรูทมากที่สุดซึ่งมี ส่วนขยายใบรับรองการรับรองคีย์ หากมีส่วนขยายใบรับรองข้อมูลการจัดสรร ส่วนขยายใบรับรองการรับรองคีย์ ต้องอยู่ในใบรับรองที่ตามมาทันที ใช้ พาร์สเซอร์เพื่อดึงข้อมูลส่วนขยายใบรับรองการรับรองคีย์จาก ใบรับรองนั้น
ข้อควรระวัง: อย่าคิดว่าส่วนขยายใบรับรองการรับรองคีย์ อยู่ในใบรับรองลีฟของเชน เชื่อถือได้เฉพาะ ส่วนขยายที่ปรากฏครั้งแรกในห่วงโซ่เท่านั้น อินสแตนซ์อื่นๆ ของส่วนขยายไม่ได้ออกโดยฮาร์ดแวร์ที่ปลอดภัย และอาจออกโดยผู้โจมตีที่ขยายห่วงโซ่ขณะพยายามสร้างการรับรองปลอมสำหรับคีย์ที่ไม่น่าเชื่อถือ
ตัวอย่างการรับรองคีย์ใช้ตัวแยกวิเคราะห์ ASN.1 จาก Bouncy Castle เพื่อดึงข้อมูลส่วนขยายของ ใบรับรองการรับรอง คุณสามารถใช้ตัวอย่างนี้เป็น ข้อมูลอ้างอิงในการสร้างตัวแยกวิเคราะห์ของคุณเอง
ดูรายละเอียดเพิ่มเติมได้ที่ส่วนเกี่ยวกับ สคีมาข้อมูลส่วนขยายการรับรองคีย์
-
ตรวจสอบข้อมูลส่วนขยายที่คุณดึงมาในขั้นตอนก่อนหน้าเพื่อดูความสอดคล้องกัน และเปรียบเทียบกับชุดค่าที่คุณคาดหวังว่าคีย์ที่ได้รับการสนับสนุนจากฮาร์ดแวร์จะมี
ใบรับรองรูท
ความน่าเชื่อถือของการรับรองขึ้นอยู่กับใบรับรองรูทของห่วงโซ่ อุปกรณ์ Android ที่ผ่านการทดสอบที่จำเป็นต้องมีชุดแอปของ Google ซึ่งรวมถึง Google Play และเปิดตัวด้วย Android 7.0 (API ระดับ 24) ขึ้นไปควรใช้การรับรอง คีย์ที่ลงนามโดยใบรับรองรูทการรับรองฮาร์ดแวร์ของ Google โปรดทราบว่าเราไม่ได้กำหนดให้ใช้การรับรองจนกว่าจะถึง Android 8.0 (API ระดับ 26) คุณดาวน์โหลดชุดใบรับรองรูทที่ถูกต้องเป็นอาร์เรย์รูปแบบ JSON ได้
ใบรับรองรูท
ควรใช้ใบรับรองรูท 2 รายการต่อไปนี้เป็น Trust Anchor เมื่อยืนยันเชนใบรับรองการรับรองคีย์
-----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 จะไม่กล่าวอ้างใดๆ เกี่ยวกับความปลอดภัยของฮาร์ดแวร์ ซึ่งไม่ได้หมายความว่าคีย์ของคุณถูกบุกรุก แต่หมายความว่าการรับรองไม่พิสูจน์ว่าคีย์อยู่ในฮาร์ดแวร์ที่ปลอดภัย ปรับ สมมติฐานด้านความปลอดภัยตามนั้น
หากใบรับรองรูทไม่มีคีย์สาธารณะในหน้านี้ สาเหตุที่เป็นไปได้มี 2 ประการดังนี้
- ส่วนใหญ่แล้ว อุปกรณ์จะเปิดตัวพร้อมกับ Android เวอร์ชันต่ำกว่า 7.0 และไม่รองรับ การรับรองฮาร์ดแวร์ ในกรณีนี้ Android มีการติดตั้งใช้งานการรับรองซอฟต์แวร์ที่ สร้างใบรับรองการรับรองประเภทเดียวกัน แต่ลงนามด้วยคีย์ที่ ฮาร์ดโค้ดในซอร์สโค้ดของ Android เนื่องจากคีย์การลงนามนี้ไม่ใช่ความลับ ผู้โจมตีจึงอาจสร้างการรับรองโดยแสร้งว่าให้บริการฮาร์ดแวร์ที่ปลอดภัย
- อีกเหตุผลที่เป็นไปได้คืออุปกรณ์ไม่ใช่ Google Play ในกรณีดังกล่าว ผู้ผลิตอุปกรณ์ มีอิสระในการสร้างรูทของตนเองและกล่าวอ้างสิ่งที่ต้องการเกี่ยวกับความหมายของการ รับรอง โปรดดูเอกสารประกอบของผู้ผลิตอุปกรณ์ โปรดทราบว่า Google ไม่ทราบว่ามีผู้ผลิตอุปกรณ์รายใด ที่ทำเช่นนี้
การหมุนเวียนใบรับรองรูทของการรับรองด้วยฮาร์ดแวร์
Google กำลังเปิดตัวใบรับรองรูทใหม่สำหรับเอกสารรับรองคีย์ Android การเปลี่ยนแปลงนี้ ช่วยเพิ่มความปลอดภัยและความน่าเชื่อถือของกระบวนการรับรองสำหรับแอปพลิเคชันที่มีความละเอียดอ่อน ระบบได้สร้างคีย์รูทใหม่สำหรับการรับรองคีย์ของ Android (KeyMint) คีย์รูทใหม่นี้เป็นคีย์ ECDSA P-384 และมีแผนที่จะใช้คีย์ ML-DSA (อัลกอริทึมลายเซ็นดิจิทัลหลังควอนตัม) ในอนาคต
การดำเนินการสำหรับนักพัฒนาแอป
- หากแอปของคุณใช้การรับรองคีย์ของ Android ให้เพิ่มใบรับรองรูทใหม่ลงในที่เก็บที่เชื่อถือได้ภายในเดือนมกราคม 2026 ดาวน์โหลดทั้งใบรับรองใหม่และใบรับรองเก่าจาก https://android.googleapis.com/attestation/root
- อุปกรณ์ที่ใช้ Remote Key Provisioning (RKP) จะเริ่มได้รับใบรับรองที่อิงตามใบรับรองใหม่นี้ในเดือนกุมภาพันธ์ 2026 อุปกรณ์ที่เปิดใช้ RKP จะใช้รูทใหม่เท่านั้นภายในวันที่ 10 เมษายน 2026
- อัปเดตกระบวนการรับรองเพื่อเชื่อถือทั้งใบรับรองรูทใหม่และที่มีอยู่ อุปกรณ์รุ่นเก่าที่มีคีย์ที่จัดสรรจากโรงงานไม่รองรับการหมุนเวียนคีย์และจะใช้รูทเก่าต่อไป
- โดยสคีมาส่วนขยายใบรับรองจะยังคงเหมือนเดิม มีเพียงรูทเท่านั้นที่จะเปลี่ยนแปลง
- ทั้งรูปแบบที่มนุษย์อ่านได้และรูปแบบที่เครื่องอ่านได้ของรูทใหม่จะพร้อมให้บริการแก่สาธารณะ
แนวทางปฏิบัติแนะนำ
อย่าค้นหาปลายทางสำหรับรูทที่เชื่อถือได้ในขณะรันไทม์ เนื่องจากจะทำให้เกิดความเสี่ยงด้านความปลอดภัย จัดการการเปลี่ยนแปลงรากฐานของความน่าเชื่อถือผ่านกระบวนการที่เป็นทางการ
เลิกใช้กุญแจจากโรงงาน: การจัดสรรคีย์จากระยะไกล (RKP)
สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 16 ระบบจะรองรับเฉพาะ RKP นโยบายนี้จะเลิกใช้ คีย์จากโรงงาน โดยจะปรับปรุงวิธีที่คุณจัดสรรและจัดการคีย์การรับรอง รวมถึงขยายต่อนโยบาย Android 15 ที่การรองรับ RKP เป็นแบบไม่บังคับ RKP ป้องกันการรั่วไหลของคีย์เนื่องจากระบบไม่ได้ตั้งโปรแกรมคีย์ลงในอุปกรณ์โดยตรง คุณจะลบคีย์เหล่านี้ออกจากอุปกรณ์ไม่ได้ หากต้องเพิกถอนคีย์ คุณสามารถกำหนดเป้าหมายการเพิกถอนไปยังอุปกรณ์เครื่องเดียวได้
ไลบรารีการยืนยันการรับรอง
ใช้ไลบรารีการยืนยันการรับรอง Kotlin เพื่อยืนยันห่วงโซ่ใบรับรองการรับรองคีย์ นอกจากนี้ ไลบรารีนี้ยังผสานรวมใบรับรองรูทใหม่ หากคุณใช้เครื่องมือตรวจสอบอื่น เราขอแนะนำให้เปลี่ยนไปใช้ไลบรารี Kotlin แทน ได้รับการทดสอบอย่างดี และครอบคลุมกรณีขอบที่เครื่องมือตรวจสอบที่กำหนดเองมักมองข้าม
รายการสถานะการเพิกถอนใบรับรอง
คุณเพิกถอนคีย์การรับรองได้ด้วยเหตุผลหลายประการ ซึ่งรวมถึงการจัดการที่ไม่เหมาะสมหรือการที่ผู้โจมตีอาจ
ดึงข้อมูล ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องตรวจสอบสถานะของใบรับรองแต่ละใบใน
ห่วงโซ่การรับรองกับรายการสถานะการเพิกถอนใบรับรอง (CRL) อย่างเป็นทางการ
Google เป็นผู้ดูแลรายการนี้และเผยแพร่ที่
https://android.googleapis.com/attestation/status ส่วนหัว Cache-Control
ในการตอบกลับ HTTP จะกำหนดความถี่ในการตรวจหาการอัปเดต จึงไม่จำเป็นต้องมีคำขอเครือข่าย
สำหรับการยืนยันใบรับรองทุกรายการ
URL นี้จะแสดงไฟล์ JSON ที่มีสถานะการเพิกถอนสำหรับใบรับรองที่ไม่มีสถานะปกติที่ถูกต้อง
รูปแบบของไฟล์ JSON เป็นไปตามคำจำกัดความของ JSON Schema ต่อไปนี้
(ร่าง 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) รุ่นใหม่กว่า
คีย์การรับรองที่รั่วไหลจะมีสิทธิ์ถูกเพิกถอนใบรับรองเสมอ คุณค้นพบข้อมูลที่รั่วไหลได้หลายวิธี เช่น
- การวิเคราะห์ข้อมูลการรับรองในสภาพแวดล้อมจริง
- การค้นพบคีย์การรับรองในโซเชียลมีเดียหรือเว็บไซต์สาธารณะอื่นๆ
- รายงานจากนักวิจัยด้านความปลอดภัยโดยตรง
เมื่อตรวจพบแล้ว ระบบจะเพิกถอนใบรับรองการรับรองโดยการเพิ่มหมายเลขซีเรียลลงในรายการเพิกถอน โดยปกติแล้ว การดำเนินการนี้จะเกิดขึ้นภายใน 2-3 วันหลังจากที่เราพบปัญหา แต่ในบางกรณีอาจใช้เวลานานกว่านั้น เช่น โดยปกติแล้วการเพิกถอนใบรับรองสำหรับคีย์การรับรองที่รั่วไหลจะล่าช้าหากอุปกรณ์ ที่ได้รับผลกระทบจากการเพิกถอนสามารถจัดสรรใหม่ได้อย่างปลอดภัย ขนาดของผลกระทบจากการเพิกถอน ยังเป็นปัจจัยสำคัญในไทม์ไลน์การเพิกถอนด้วย