การรับรองคีย์ช่วยให้คุณมั่นใจมากขึ้นว่าคีย์ที่คุณใช้ในแอปได้รับการจัดเก็บไว้ในคีย์สโตร์ที่รองรับฮาร์ดแวร์ของอุปกรณ์ ส่วนต่อไปนี้จะอธิบายวิธียืนยันคุณสมบัติของคีย์ที่เก็บไว้ในฮาร์ดแวร์และวิธีตีความข้อมูลส่วนขยายของใบรับรองการรับรอง
หมายเหตุ: ก่อนที่จะยืนยันพร็อพเพอร์ตี้ของคีย์ที่สำรองข้อมูลด้วยฮาร์ดแวร์ของอุปกรณ์ในสภาพแวดล้อมระดับเวอร์ชันที่ใช้งานจริง โปรดตรวจสอบว่าอุปกรณ์รองรับการรับรองคีย์ระดับฮาร์ดแวร์ โดยตรวจสอบว่าเชนใบรับรองการรับรองมีใบรับรองรูทที่ลงนามด้วยคีย์รูทการรับรองของ Google และองค์ประกอบ attestationSecurityLevel
ภายในโครงสร้างข้อมูลคําอธิบายคีย์ได้รับการตั้งค่าเป็นระดับความปลอดภัย TrustedEnvironment
หรือระดับความปลอดภัย StrongBox
นอกจากนี้ คุณควรตรวจสอบลายเซ็นในเชนใบรับรอง และยืนยันว่าไม่มีคีย์ใดในเชนที่ถูกเพิกถอนโดยดูรายการสถานะการเพิกถอนใบรับรอง อย่าเชื่อถือเอกสารรับรองอย่างสมบูรณ์ เว้นแต่ว่าจะถูกต้องและรูทเป็นคีย์รูทของ Google อย่างไรก็ตาม โปรดทราบว่าอุปกรณ์ที่มีใบรับรองที่เพิกถอนแล้วจะยังเชื่อถือได้เท่ากับอุปกรณ์ที่รองรับเฉพาะเอกสารรับรองซอฟต์แวร์เท่านั้น การรับรองที่ถูกต้องทั้งหมดเป็นตัวบ่งชี้เชิงบวกที่ชัดเจน การไม่มีเลยคือตัวบ่งชี้ที่เป็นกลาง ไม่ใช่เชิงลบ
เรียกข้อมูลและยืนยันคู่คีย์แบบใช้ฮาร์ดแวร์
ในระหว่างการรับรองคีย์ คุณจะระบุชื่อแทนของคู่คีย์และดึงข้อมูลเชนใบรับรองของคู่คีย์ดังกล่าว ซึ่งคุณใช้เพื่อยืนยันพร็อพเพอร์ตี้ของคู่คีย์นั้นได้
หากอุปกรณ์รองรับเอกสารรับรองคีย์ระดับฮาร์ดแวร์ ใบรับรองรูทภายในเชนนี้จะลงนามโดยใช้คีย์รูทของเอกสารรับรองที่จัดสรรให้กับคีย์สโตร์ที่อาศัยฮาร์ดแวร์ของอุปกรณ์อย่างปลอดภัย
หมายเหตุ: ในอุปกรณ์ที่จัดส่งพร้อมเอกสารรับรองคีย์ระดับฮาร์ดแวร์, Android 7.0 (API ระดับ 24) ขึ้นไป และบริการ Google Play ใบรับรองรูทจะลงนามด้วยคีย์รูทของเอกสารรับรองของ Google ยืนยันว่าใบรับรองรูทนี้อยู่ในรายการที่แสดงในส่วนใบรับรองรูท
หากต้องการใช้เอกสารรับรองคีย์ ให้ทำตามขั้นตอนต่อไปนี้
-
ใช้
KeyStore
ของออบเจ็กต์getCertificateChain()
เพื่อทำเครื่องหมายอ้างอิงเชนใบรับรอง X.509 ที่เชื่อมโยงกับที่เก็บคีย์ที่รองรับฮาร์ดแวร์ -
ส่งใบรับรองไปยังเซิร์ฟเวอร์แยกต่างหากที่คุณเชื่อถือเพื่อตรวจสอบ
ข้อควรระวัง: อย่าทำตามกระบวนการตรวจสอบต่อไปนี้ในอุปกรณ์เดียวกับที่เก็บคีย์ หากระบบ Android ในอุปกรณ์ดังกล่าวถูกบุกรุก อาจทำให้กระบวนการตรวจสอบเชื่อถือสิ่งที่ไม่น่าเชื่อถือได้
-
รับการอ้างอิงถึงไลบรารีการแยกวิเคราะห์และการตรวจสอบความถูกต้องของห่วงโซ่ใบรับรอง X.509 ที่เหมาะสำหรับชุดเครื่องมือของคุณมากที่สุด ยืนยันว่าใบรับรองสาธารณะรูทเชื่อถือได้และใบรับรองแต่ละใบลงนามในใบรับรองถัดไปในเชน
-
ตรวจสอบสถานะการเพิกถอนของใบรับรองแต่ละใบเพื่อให้แน่ใจว่าไม่มีใบรับรองใดถูกเพิกถอน
-
(ไม่บังคับ) ตรวจสอบส่วนขยายใบรับรองข้อมูลการจัดสรรที่จะปรากฏในชุดใบรับรองที่ใหม่กว่าเท่านั้น
รับข้อมูลอ้างอิงไปยังไลบรารีโปรแกรมแยกวิเคราะห์ CBOR ที่เหมาะกับชุดเครื่องมือของคุณมากที่สุด ค้นหาใบรับรองที่ใกล้กับรูทที่สุดซึ่งมีส่วนขยายใบรับรองการจัดสรรข้อมูล ใช้โปรแกรมแยกวิเคราะห์เพื่อดึงข้อมูลส่วนขยายใบรับรองข้อมูลการจัดสรรจากใบรับรองนั้น
โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อเกี่ยวกับ สคีมาข้อมูลของส่วนขยายข้อมูลการจัดสรร
-
รับการอ้างอิงไปยังไลบรารีโปรแกรมแยกวิเคราะห์ ASN.1 ที่เหมาะสมที่สุดสำหรับชุดเครื่องมือของคุณ ค้นหาใบรับรองที่ใกล้กับรูทที่สุดซึ่งมี ส่วนขยายใบรับรองการรับรองคีย์ หากมีส่วนขยายใบรับรองข้อมูลการจัดสรรอยู่ ส่วนขยายใบรับรองการรับรองคีย์ต้องอยู่ในใบรับรองถัดไปทันที ใช้ โปรแกรมแยกวิเคราะห์เพื่อดึงข้อมูลส่วนขยายใบรับรองคีย์จาก ใบรับรองนั้น
ข้อควรระวัง: อย่าคิดเอาเองว่าส่วนขยายใบรับรองคีย์จะอยู่ในใบรับรอง Leaf ของเชน เฉพาะการปรากฏครั้งแรกของส่วนขยายในเชนเท่านั้นที่เชื่อถือได้ อินสแตนซ์เพิ่มเติมของส่วนขยายไม่ได้ออกโดยฮาร์ดแวร์ที่มีความปลอดภัย และอาจออกโดยผู้โจมตีที่ขยายเชนขณะพยายามสร้างการรับรองปลอมสำหรับคีย์ที่ไม่น่าเชื่อถือ
ตัวอย่างการรับรองคีย์ใช้โปรแกรมแยกวิเคราะห์ ASN.1 จาก Bouncy Castle เพื่อดึงข้อมูลส่วนขยายของใบรับรองการรับรอง คุณสามารถใช้ตัวอย่างนี้เพื่อเป็นข้อมูลอ้างอิงในการสร้างโปรแกรมแยกวิเคราะห์ของคุณเอง
ดูรายละเอียดเพิ่มเติมได้ที่ส่วน สคีมาข้อมูลส่วนขยายการรับรองคีย์
-
โปรดตรวจสอบข้อมูลส่วนขยายที่ดึงมาในขั้นตอนก่อนหน้าเพื่อดูความสอดคล้องกันและเปรียบเทียบกับชุดค่าที่คุณคาดว่าจะมีคีย์ที่รองรับด้วยฮาร์ดแวร์
ใบรับรองรูท
ความน่าเชื่อถือของเอกสารรับรองขึ้นอยู่กับใบรับรองรูทของเชน อุปกรณ์ Android ที่ผ่านการทดสอบแล้วต้องมีชุดแอปของ Google ซึ่งรวมถึง Google Play และที่เปิดตัวด้วย Android 7.0 (API ระดับ 24) ขึ้นไป ควรใช้คีย์เอกสารรับรองที่ลงชื่อโดยใบรับรองรูทของเอกสารรับรองฮาร์ดแวร์ของ Google โปรดทราบว่าคุณไม่ต้องใช้เอกสารรับรองจนกว่าจะถึง Android 8.0 (API ระดับ 26) คีย์สาธารณะรูทมีดังนี้
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xU FmOr75gvMsd/dTEDDJdSSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5j lRfdnJLmN0pTy/4lj4/7tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y //0rb+T+W8a9nsNL/ggjnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73X pXyTqRxB/M0n1n/W9nGqC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYI mQQcHtGl/m00QLVWutHQoVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB +TxywElgS70vE0XmLD+OJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7q uvmag8jfPioyKvxnK/EgsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgp Zrt3i5MIlCaY504LzSRiigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7 gLiMm0jhO2B6tUXHI/+MRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82 ixPvZtXQpUpuL12ab+9EaDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+ NpUFgNPN9PvQi8WEg5UmAGMCAwEAAQ== -----END PUBLIC KEY-----
ใบรับรองรูทที่ออกก่อนหน้านี้
-----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-----
-----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-----
หากใบรับรองรูทในเชนการรับรองที่คุณได้รับมีคีย์สาธารณะนี้และไม่มีใบรับรองใดในเชนถูกเพิกถอน คุณจะทราบสิ่งต่อไปนี้
- คีย์ของคุณอยู่ในฮาร์ดแวร์ที่ Google เชื่อว่าปลอดภัย และ
- โดยมีคุณสมบัติตามที่อธิบายไว้ในใบรับรองการรับรอง
หากเชนการรับรองมีคีย์สาธารณะรูทอื่นๆ อยู่ Google จะไม่อ้างสิทธิ์ใดๆ เกี่ยวกับความปลอดภัยของฮาร์ดแวร์ ซึ่งไม่ได้หมายความว่าคีย์ของคุณถูกบุกรุก แต่การรับรองไม่ได้พิสูจน์ว่าคีย์อยู่ในฮาร์ดแวร์ที่ปลอดภัย ปรับสมมติฐานด้านความปลอดภัยตามความเหมาะสม
หากใบรับรองรูทไม่มีคีย์สาธารณะในหน้านี้ สาเหตุที่เป็นไปได้มี 2 ประการดังนี้
- เป็นไปได้ว่าอุปกรณ์ของคุณเปิดตัว Android เวอร์ชันต่ำกว่า 7.0 และไม่รองรับเอกสารรับรองฮาร์ดแวร์ ในกรณีนี้ Android มีการใช้ซอฟต์แวร์ในการรับรองซึ่งจะสร้างใบรับรองการรับรองประเภทเดียวกัน แต่ลงนามด้วยคีย์ที่ฮาร์ดโค้ดไว้ในซอร์สโค้ดของ Android เนื่องจากคีย์การลงนามนี้ไม่ใช่ข้อมูลลับ เอกสารรับรองอาจสร้างขึ้นโดยผู้โจมตีที่ทำทีว่าจะมอบฮาร์ดแวร์ที่ปลอดภัย
- อีกสาเหตุหนึ่งที่เป็นไปได้คืออุปกรณ์ไม่ใช่อุปกรณ์ Google Play ในกรณีนี้ ผู้ผลิตอุปกรณ์มีอิสระในการสร้างรูทของตนเองและอ้างสิทธิ์เกี่ยวกับความหมายของการรับรองได้ตามต้องการ โปรดดูเอกสารประกอบของผู้ผลิตอุปกรณ์ โปรดทราบว่า Google ไม่ทราบว่ามีผู้ผลิตอุปกรณ์รายใดที่ทำเช่นนี้
รายการสถานะการเพิกถอนใบรับรอง
สิทธิ์การรับรองอาจถูกเพิกถอนด้วยเหตุผลหลายประการ เช่น การจัดการที่ไม่เหมาะสมหรือสงสัยว่ามีการดึงข้อมูลโดยผู้โจมตี ดังนั้นจึงจำเป็นต้องตรวจสอบสถานะของใบรับรองแต่ละใบในเชนการรับรองกับรายการสถานะการเพิกถอนใบรับรองอย่างเป็นทางการ (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" } } }
สคีมาข้อมูลส่วนขยายการรับรองคีย์
สคีมาข้อมูลส่วนขยายการจัดสรร
ส่วนขยายข้อมูลการจัดสรรมี OID 1.3.6.1.4.1.11129.2.1.30
ส่วนขยายจะระบุข้อมูลที่เซิร์ฟเวอร์การจัดสรรทราบเกี่ยวกับอุปกรณ์ ส่วนขยายนี้เป็นไปตามสคีมา CDDL
{ 1 : int, ; certificates issued }
แผนที่ไม่มีเวอร์ชันและอาจเพิ่มฟิลด์ใหม่ที่ไม่บังคับ
-
certs_issued
-
จำนวนใบรับรองโดยประมาณที่ออกให้กับอุปกรณ์ในช่วง 30 วันที่ผ่านมา ค่านี้สามารถใช้เป็นสัญญาณที่บ่งบอกถึงการละเมิดที่อาจเกิดขึ้นได้หากค่าสูงกว่าค่าเฉลี่ยหลายเท่า