Anahtar doğrulaması, uygulamanızda kullandığınız anahtarların bir cihazın donanım destekli anahtar deposunda depolandığından daha emin olmanızı sağlar. Aşağıdaki bölümlerde, donanım destekli anahtarların özelliklerinin nasıl doğrulanacağı ve doğrulama sertifikalarının uzantı verilerinin nasıl yorumlanacağı açıklanmaktadır.
Not: Bir cihazın donanım destekli anahtarlarının özelliklerini üretim düzeyinde bir ortamda doğrulamadan önce, cihazın donanım düzeyinde anahtar doğrulamayı desteklediğinden emin olun. Bunu yapmak için doğrulama sertifikası zincirinin, Google doğrulama kök anahtarıyla imzalanan bir kök sertifika içerdiğinden ve anahtar açıklaması veri yapısındaki attestationSecurityLevel
öğesinin TrustedEnvironment
güvenlik seviyesine veya StrongBox
güvenlik seviyesine ayarlandığından emin olun.
Ayrıca, sertifika iptal durumu listesini kontrol ederek sertifika zincirindeki imzaları doğrulamak ve zincirdeki anahtarların hiçbirinin iptal edilmediğini onaylamak önemlidir. Hepsi geçerli değilse ve kök, Google kök anahtarı değilse sertifikaya tam olarak güvenmeyin. Ancak iptal edilmiş sertifikalar içeren cihazların, yalnızca yazılım kimlik doğrulamasını destekleyen cihazlar kadar güvenilir olduğunu unutmayın. Tam geçerlilik onayı, olumlu bir göstergedir. Bu tür bir sayfanın olmaması negatif değil, nötr bir göstergedir.
Donanım destekli anahtar çiftini alma ve doğrulama
Anahtar onayı sırasında, bir anahtar çiftinin takma adını belirtir ve anahtar çiftinin özelliklerini doğrulamak için kullanabileceğiniz sertifika zincirini alırsınız.
Cihaz, donanım düzeyinde anahtar onayını destekliyorsa bu zincirdeki kök sertifika, cihazın donanım destekli anahtar deposuna güvenli bir şekilde sağlanan onay kök anahtarı kullanılarak imzalanır.
Not: Donanım düzeyinde anahtar doğrulaması, Android 7.0 (API düzeyi 24) veya sonraki sürümler ve Google Play Hizmetleri yüklü cihazlarda kök sertifika, Google doğrulama kök anahtarıyla imzalanır. Bu kök sertifikanın, kök sertifikalar bölümünde listelenenler arasında olduğundan emin olun.
Anahtar tasdiki uygulamak için aşağıdaki adımları tamamlayın:
-
Donanım destekli anahtar deposuyla ilişkili X.509 sertifika zincirinin referansını almak için bir
KeyStore
nesnesiningetCertificateChain()
yöntemini kullanın. -
Sertifikaları, doğrulama için güvendiğiniz ayrı bir sunucuya gönderin.
Dikkat: Aşağıdaki doğrulama işlemini KeyStore ile aynı cihazda tamamlamayın. Söz konusu cihazdaki Android sisteminin güvenliği ihlal edilmişse doğrulama sürecinin güvenilir olmayan bir şeye güvenmesine neden olabilir.
-
Araç setiniz için en uygun X.509 sertifika zinciri ayrıştırma ve doğrulama kitaplığının referansını edinin. Kök genel sertifikanın güvenilir olduğundan ve her sertifikanın zincirdeki sonraki sertifikayı imzaladığından emin olun.
-
Sertifikaların hiçbirinin iptal edilmediğinden emin olmak için her sertifikanın iptal durumunu kontrol edin.
-
İsteğe bağlı olarak, yalnızca yeni sertifika zincirlerinde bulunan temel hazırlık bilgileri sertifika uzantısını inceleyin.
Araç setinize en uygun CBOR ayrıştırıcı kitaplığının referansını edinin. Köke en yakın, hizmet sağlama bilgileri sertifika uzantısını içeren sertifikayı bulun. Ayrıştırıcıyı kullanarak söz konusu sertifikadan temel hazırlık bilgileri sertifika uzantısı verilerini çıkarın.
Daha fazla bilgi için temel hazırlama bilgileri uzantı veri şeması ile ilgili bölümü inceleyin.
-
Araç grubunuz için en uygun ASN.1 ayrıştırıcı kitaplığına ilişkin bir referans edinin. Köke en yakın, anahtar doğrulama sertifikası uzantısını içeren sertifikayı bulun. Temel hazırlama bilgileri sertifikası uzantısı varsa anahtar doğrulama sertifikası uzantısı, hemen sonraki sertifikada olmalıdır. Anahtar doğrulama sertifikası uzantısı verilerini bu sertifikadan ayıklamak için ayrıştırıcıyı kullanın.
Dikkat: Anahtar doğrulama sertifikası uzantısının zincirin son varlık sertifikasında olduğunu varsaymayın. Yalnızca zincirdeki uzantının ilk oluşumuna güvenilebilir. Uzatmayla ilgili diğer tüm örnekler güvenli donanım tarafından yayınlanmamıştır ve güvenilmeyen anahtarlar için sahte onay oluşturmaya çalışırken zinciri uzatan bir saldırgan tarafından yayınlanmış olabilir.
Anahtar Onay örneği, bir onay sertifikasının uzantı verilerini ayıklamak için Bouncy Castle'daki ASN.1 ayrıştırıcıyı kullanır. Kendi ayrıştırıcınızı oluşturmak için bu örneği referans olarak kullanabilirsiniz.
Daha fazla bilgi için anahtar onayı uzantısı veri şeması ile ilgili bölüme bakın.
-
Önceki adımlarda aldığınız uzantı verilerini tutarlılık açısından kontrol edin ve bu verileri, donanım destekli anahtarın içermesini beklediğiniz değer grubuyla karşılaştırın.
Kök sertifikalar
Onay belgesinin güvenilirliği, zincirin kök sertifikasına bağlıdır. Google Play dahil olmak üzere Google uygulama paketine sahip olmak için gereken testi geçmiş ve Android 7.0 (API düzeyi 24) veya sonraki sürümlerle kullanıma sunulmuş Android cihazlar, Google Donanım Onaylama Kök Sertifikası tarafından imzalanmış doğrulama anahtarları kullanmalıdır. Android 8.0'a (API düzeyi 26) kadar doğrulamanın gerekli olmadığını unutmayın. Kök ortak anahtar şu şekildedir:
-----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-----
Daha Önce Yayınlanan Kök Sertifikalar
-----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-----
Aldığınız onay zincirindeki kök sertifika bu ortak anahtarı içeriyorsa ve zincirdeki sertifikalardan hiçbiri iptal edilmemişse şunları bilirsiniz:
- Anahtarınız, Google'ın güvenli olduğuna inandığı donanımdadır ve
- Onay sertifikasında açıklanan özelliklere sahiptir.
Sertifika zincirinde başka bir kök ortak anahtar varsa Google, donanımın güvenliği hakkında herhangi bir iddiada bulunmaz. Bu durum, anahtarınızın güvenliğinin ihlal edildiği anlamına gelmez. Yalnızca onayın, anahtarın güvenli donanımda olduğunu kanıtlamadığı anlamına gelir. Güvenlik varsayımlarınızı buna göre ayarlayın.
Kök sertifika bu sayfadaki ortak anahtarı içermiyorsa bunun iki olası nedeni vardır:
- Cihazın Android'in 7.0'dan eski bir sürümüyle kullanıma sunulması muhtemeldir ve cihaz donanım onayını desteklemez. Bu durumda Android, aynı tür onay sertifikası oluşturan ancak Android kaynak koduna sabit kodlu bir anahtarla imzalanmış bir onay yazılımı uygulamasına sahiptir. Bu imzalama anahtarı gizli olmadığından onay, güvenli donanım sağladığını iddia eden bir saldırgan tarafından oluşturulmuş olabilir.
- Diğer olası neden, cihazın Google Play cihazı olmamasıdır. Bu durumda, cihaz üreticisi kendi kökünü oluşturabilir ve doğrulamanın ne anlama geldiğiyle ilgili istediği iddialarda bulunabilir. Cihaz üreticisinin belgelerine bakın. Google'ın, bu yazının yazıldığı tarih itibarıyla bu işlemi yapan herhangi bir cihaz üreticisi olmadığını belirtmek isteriz.
Sertifika iptal durumu listesi
Attestation anahtarları, kötüye kullanım veya saldırgan tarafından anahtarların çalınma şüphesi dahil olmak üzere çeşitli nedenlerle iptal edilebilir. Bu nedenle, bir doğrulama zincirindeki her bir sertifikanın durumunun resmi sertifika iptal durumu listesinde (CRL) kontrol edilmesi önemlidir.
Bu liste Google tarafından yönetilir ve şu adreste yayınlanır:
https://android.googleapis.com/attestation/status. HTTP yanıtındaki Cache-Control
başlığı, güncellemelerin ne sıklıkta kontrol edileceğini belirler ve böylece doğrulanan her sertifika için bir ağ isteğine gerek kalmaz.
Bu URL, normal geçerli durumuna sahip olmayan sertifikaların iptal durumunu içeren bir JSON dosyası döndürür. JSON dosyasının biçimi aşağıdaki JSON Şeması (taslak 07) tanımına bağlıdır:
{ "$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 }
Örnek 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" } } }
Anahtar onayı uzantısı veri şeması
Anahtar onayı uzantısının OID'si 1.3.6.1.4.1.11129.2.1.17
. Uzantı, bilgileri bir ASN.1 şemasına göre depolar.
Aşağıdaki listede, şemada yer alan her bir öğenin açıklaması sunulmaktadır:
KeyDescription
Bu değer dizisi, anahtar onayı aracılığıyla doğrulanan anahtar çifti hakkında genel bilgiler sunar ve ek ayrıntılara kolayca erişmenizi sağlar.
-
attestationVersion
-
Anahtar onay özelliğinin sürümü.
Değer Sürüm 1 Keymaster 2.0 sürümü 2 Keymaster sürümü 3.0 3 Keymaster sürümü 4.0 4 Keymaster 4.1 sürümü 100 KeyMint sürüm 1.0 200 KeyMint 2.0 sürümü 300 KeyMint 3.0 sürümü -
attestationSecurityLevel
-
Onayın güvenlik seviyesi.
Uyarı: Android sisteminde depolanan anahtarların doğrulanması mümkündür (yani
attestationSecurityLevel
değerinin Yazılım olarak ayarlanması gerekir). Ancak Android sisteminin güvenliği ihlal edilirse bu doğrulamalara güvenemezsiniz. -
keymasterVersion
/keyMintVersion
-
Keymaster veya KeyMint donanım soyutlama katmanının (HAL) sürümü.
Değer Sürüm 0 Keymaster 0.2 veya 0.3 sürümü 1 Keymaster sürüm 1.0 2 Keymaster 2.0 sürümü 3 Keymaster sürümü 3.0 4 Keymaster sürümü 4.0 41 Keymaster 4.1 sürümü 100 KeyMint sürüm 1.0 200 KeyMint 2.0 sürümü 300 KeyMint 3.0 sürümü -
keymasterSecurityLevel
/keyMintSecurityLevel
- Keymaster/KeyMint uygulamasının güvenlik düzeyi.
-
attestationChallenge
-
Anahtar oluşturma sırasında sağlanan sorgulamayı içerir. Bu değerin, sunucunuz tarafından sağlanan,
Tag::ATTESTATION_CHALLENGE
yetkilendirme etiketinde depolandığı değerle eşleşip eşleşmediğini kontrol edin. Aksi takdirde, hizmetiniz eski doğrulama sertifikalarının yeniden oynatılmasına karşı savunmasız olabilir. -
uniqueId
-
Bu değer, cihazı tanımlar ancak yalnızca sınırlı bir süre için geçerlidir. Hesaplanır ve yalnızca sistem uygulamaları tarafından kullanılır. Diğer tüm uygulamalarda
uniqueId
boştur. -
softwareEnforced
-
İsteğe bağlı. Cihazın Güvenilir Yürütme Ortamı (TEE) tarafından değil, Android sistemi tarafından zorunlu kılınan Keymaster/KeyMint yetkilendirme listesi.
Bu yetkilendirme listesindeki bilgiler, platformun bir parçası olan kod tarafından toplanır veya oluşturulur ve cihazın sistem bölümünde depolanır.
Cihaz, Android Platform Güvenlik Modeli'ne uygun bir işletim sistemi çalıştırdığı sürece bu yetkilendirme listesinin içeriğine güvenilebilir.
Sertifikalı tüm Android cihazlar bu güvenlik modeline uygundur. Bu nedenle, cihaz kilitliyse ve doğrulanmış başlatma durumu
Verified
ise buradaki değerler güvenilir olmalıdır. Önyükleyicinin kilidinin açıldığı değiştirilmiş bir cihazda kullanıcı, Android Platform Güvenlik Modeli ile uyumlu olmayan bir işletim sistemi yükleyebilir. Bu nedenle, bu alandaki değerler kullanıcı tarafından keyfi olarak seçilebilir. -
hardwareEnforced
- İsteğe bağlı. Cihazın Güvenilir Yürütme Ortamı (TEE) tarafından zorunlu kılınan Keymaster/KeyMint yetkilendirme listesi. Bu yetkilendirme listesindeki bilgiler, güvenli donanımın parçası olan ve platform tarafından kontrol edilmeyen kod tarafından toplanır veya oluşturulur. Örneğin, bu yetkilendirme listesindeki bilgiler cihazın bootloader'ından veya cihazda çalışan TEE'den gelir. Bu yetkilendirme listesindeki, doğrudan KeyMint tarafından ayarlanmayan alanlar, güvenli donanımın diğer parçaları (ör. önyükleyici) tarafından platforma güvenmeyi gerektirmeyen güvenli iletişim kanalları aracılığıyla sağlanır. Güvenli donanım ile Android sistem arasındaki fark, kullanıcının güvenli donanımda (donanım yazılımı) çalışan kodu değiştirememesidir. Bu nedenle, kullanıcı bu yetkilendirme listesindeki değerleri bozamaz.
Güvenlik Seviyesi
Bu veri yapısı, bir yazılım özelliğinin (ör. anahtar çifti) cihazdaki konumuna göre ne kadar korunduğunu gösterir.
Veri yapısı bir numaralandırma olduğundan tam olarak aşağıdaki değerlerden birini alır:
- Anahtar deposu
- Özelliği oluşturma ve yönetme mantığı Android sistemine uygulanır. Anahtar çiftleri oluşturma ve depolama açısından bu konum TEE'den daha az güvenlidir ancak uygulamanızın işlem alanından daha güvenlidir.
- TrustedEnvironment
- Özelliği oluşturma ve yönetme mantığı, TEE gibi güvenli donanımlarda uygulanır. Güvenli donanım uzaktan saldırılara karşı son derece dayanıklı olduğundan, anahtar çiftleri oluşturmak ve depolamak için bu konum daha güvenlidir.
- StrongBox
- Özelliği oluşturma ve yönetme mantığı, özel bir donanım güvenlik modülünde uygulanır. Modüle karşı uzaktan güvenlik ihlali ve donanım saldırılarına karşı son derece dirençli olduğundan, anahtar çiftleri oluşturma ve depolama açısından bu konum daha güvenlidir.
- Yazılım
- Özelliği oluşturma ve yönetme mantığı, güvenli bir ortamda çalışmayan bir KeyMint veya Keymaster uygulamasında uygulanıyor. Anahtar çiftleri oluşturmak ve depolamak için bu konum, TEE'den daha az ancak uygulamanızın işlem alanından daha güvenlidir.
AuthorizationList
Bu veri yapısı, Keymaster veya KeyMint donanım soyutlama katmanında (HAL) tanımlandığı şekliyle anahtar çiftinin özelliklerini içerir. Bir anahtar çiftinin uygulamanızda kullanılmaya devam edip etmediğini doğrulamak için bu değerleri cihazın mevcut durumuyla veya beklenen bir değer kümesiyle karşılaştırırsınız.
Her alan adı, benzer şekilde adlandırılmış bir Keymaster/KeyMint yetkilendirme etiketine karşılık gelir.
Örneğin, bir yetkilendirme listesindeki keySize
alanı,
Tag::KEY_SIZE
yetkilendirme etiketine karşılık gelir.
Provizyon etiketleriyle ilgili kesin bilgiler AIDL arayüz spesifikasyonunda yer alır.
Bu, her etiketin kimlik değerini ve türünü tanımlar. Ayrıca, her etiketin hardwareEnforced
yetkilendirme listesinde (etiketin güvenli ortamda zorunlu kılındığını belirtir) veya softwareEnforced
yetkilendirme listesinde (etiketin Android tarafından, genellikle Keystore tarafından zorunlu kılındığını belirtir) bulunmasını bekleyip beklemediğini belirtir.
Aşağıdaki listedeki her alan isteğe bağlıdır:
-
purpose
-
1 değerine sahip bir etiket kimliği kullanan
Tag::PURPOSE
yetkilendirme etiketine karşılık gelir. -
algorithm
-
2 değerine sahip bir etiket kimliği kullanan
Tag::ALGORITHM
yetkilendirme etiketine karşılık gelir.Bir doğrulama
AuthorizationList
nesnesinde algoritma değeri her zamanRSA
veyaEC
olur. -
keySize
-
3 değerine sahip bir etiket kimliği kullanan
Tag::KEY_SIZE
yetkilendirme etiketine karşılık gelir. -
digest
-
5 kimlik değeri kullanan
Tag::DIGEST
yetkilendirme etiketine karşılık gelir. -
padding
-
Etiket kimliği değeri 6 olan
Tag::PADDING
yetkilendirme etiketine karşılık gelir. -
ecCurve
-
10 değerini kullanan
Tag::EC_CURVE
yetkilendirme etiketine karşılık gelir.Android sistem anahtar deposunda imzalama ve doğrulama için ECDSA kullanan bir eliptik eğri (EC) anahtar çifti oluşturmak için kullanılan parametre grubu.
-
rsaPublicExponent
-
200 değerinde bir etiket kimliği kullanan
Tag::RSA_PUBLIC_EXPONENT
yetkilendirme etiketine karşılık gelir. -
mgfDigest
-
Yalnızca anahtar onayı sürümü >= 100'de mevcut.
203 kimlikli etiket değerini kullananTag::RSA_OAEP_MGF_DIGEST
KeyMint yetkilendirme etiketine karşılık gelir. -
rollbackResistance
-
Yalnızca anahtar doğrulama sürümünün 3 veya sonraki sürümlerinde bulunur.
Etiket kimliği değeri 303 olan
Tag::ROLLBACK_RESISTANT
yetkilendirme etiketine karşılık gelir. -
earlyBootOnly
-
Yalnızca anahtar doğrulama sürümünün 4 veya sonraki sürümlerinde bulunur.
305 etiket kimliği değerini kullanan
Tag::EARLY_BOOT_ONLY
yetkilendirme etiketine karşılık gelir. -
activeDateTime
-
400 etiket kimliği değerini kullanan
Tag::ACTIVE_DATETIME
yetkilendirme etiketine karşılık gelir. -
originationExpireDateTime
-
401 kimlikli etiket değerini kullanan
Tag::ORIGINATION_EXPIRE_DATETIME
Keymaster yetkilendirme etiketine karşılık gelir. -
usageExpireDateTime
-
402 etiket kimliği değerini kullanan
Tag::USAGE_EXPIRE_DATETIME
yetkilendirme etiketine karşılık gelir. -
usageCountLimit
-
405 etiket kimliği değerini kullanan
Tag::USAGE_COUNT_LIMIT
yetkilendirme etiketine karşılık gelir. -
noAuthRequired
-
503 etiket kimliği değerini kullanan
Tag::NO_AUTH_REQUIRED
yetkilendirme etiketine karşılık gelir. -
userAuthType
-
Etiket kimliği değeri 504 olan
Tag::USER_AUTH_TYPE
yetkilendirme etiketine karşılık gelir. -
authTimeout
-
505 etiket kimliği değerini kullanan
Tag::AUTH_TIMEOUT
yetkilendirme etiketine karşılık gelir. -
allowWhileOnBody
-
Etiket kimliği değeri 506 olan
Tag::ALLOW_WHILE_ON_BODY
yetkilendirme etiketine karşılık gelir.Kullanıcı cihazı hâlâ üzerinde taşıyorsa kimlik doğrulama zaman aşımı süresinden sonra anahtarın kullanılmasına izin verir. Cihazın kullanıcının vücudu üzerinde takılı olup olmadığını belirlerken üzerinizde olan güvenli bir sensörün olduğunu unutmayın.
-
trustedUserPresenceRequired
-
Yalnızca anahtar onay sürümü >= 3'te mevcut.
507 değerinde bir etiket kimliği kullanan
Tag::TRUSTED_USER_PRESENCE_REQUIRED
izin etiketine karşılık gelir.Bu anahtarın yalnızca kullanıcının fiziksel olarak var olduğunu gösteren kanıt sunması durumunda kullanılabileceğini belirtir. Aşağıda konuyla ilgili olarak bazı örnekler verilmiştir:
- StrongBox anahtarı için StrongBox cihazındaki bir pime bağlı bir donanım düğmesi.
- TEE anahtarı için parmak izi kimlik doğrulaması, TEE'nin tarayıcı üzerinde özel kontrole sahip olduğu ve parmak izi eşleştirme işlemini gerçekleştirdiği sürece varlığın kanıtını sağlar.
-
trustedConfirmationRequired
-
Yalnızca anahtar doğrulama sürümünün 3 veya sonraki sürümlerinde bulunur.
508 etiket kimliği değerini kullanan
Tag::TRUSTED_CONFIRMATION_REQUIRED
yetkilendirme etiketine karşılık gelir.Anahtarın yalnızca kullanıcı, onay jetonu ile imzalanacak veriler için onay verdiğinde kullanılabilir olduğunu belirtir. Kullanıcı onayı alma hakkında daha fazla bilgi için Android Korumalı Onay başlıklı makaleyi inceleyin.
Not: Bu etiket yalnızca
SIGN
amacını kullanan anahtarlar için geçerlidir. -
unlockedDeviceRequired
-
Yalnızca anahtar doğrulama sürümünün 3 veya sonraki sürümlerinde bulunur.
509 etiket kimliği değerini kullanan
Tag::UNLOCKED_DEVICE_REQUIRED
yetkilendirme etiketine karşılık gelir. -
allApplications
-
600 etiket kimliği değerini kullanan
Tag::ALL_APPLICATIONS
yetkilendirme etiketine karşılık gelir.Bir cihazdaki tüm uygulamaların anahtar çiftine erişip erişemeyeceğini belirtir.
-
applicationId
-
Etiket kimliği değeri 601 olan
Tag::APPLICATION_ID
yetkilendirme etiketine karşılık gelir. -
creationDateTime
-
701 etiket kimliği değerini kullanan
Tag::CREATION_DATETIME
yetkilendirme etiketine karşılık gelir. -
origin
-
702 kimlik değerini kullanan
Tag::ORIGIN
yetkilendirme etiketine karşılık gelir. -
rollbackResistant
-
Yalnızca anahtar onay sürümleri 1 ve 2'de sunun.
703 kimlik değerini kullanan
Tag::ROLLBACK_RESISTANT
yetkilendirme etiketine karşılık gelir. -
rootOfTrust
-
704 etiket kimliği değerini kullanan
Tag::ROOT_OF_TRUST
yetkilendirme etiketine karşılık gelir.Daha fazla bilgi için RootOfTrust veri yapısını açıklayan bölüme bakın.
-
osVersion
-
Etiket kimliği değeri 705 olan
Tag::OS_VERSION
yetkilendirme etiketine karşılık gelir.Keymaster ile ilişkilendirilmiş Android işletim sistemi sürümü. Altı basamaklı tam sayı olarak belirtilir. Örneğin, sürüm 8.1.0, 080100 olarak temsil edilir.
Yalnızca Keymaster 1.0 veya sonraki sürümler bu değeri yetkilendirme listesine dahil eder.
-
osPatchLevel
-
706 etiket kimliği değerini kullanan
Tag::PATCHLEVEL
yetkilendirme etiketine karşılık gelir.Keymaster'da kullanılan güvenlik yamasıyla ilişkili ay ve yıl, altı haneli bir tam sayı olarak belirtilir. Örneğin, Ağustos 2018 yaması 201808 olarak temsil edilir.
Yalnızca Keymaster 1.0 veya sonraki sürümler bu değeri yetkilendirme listesine dahil eder.
-
attestationApplicationId
-
Yalnızca anahtar onay sürümleri >= 2'de mevcut.
709 etiket kimliği değerini kullanan
Tag::ATTESTATION_APPLICATION_ID
Keymaster yetkilendirme etiketine karşılık gelir.Daha fazla bilgi için AttestationApplicationId veri yapısını açıklayan bölüme bakın.
-
attestationIdBrand
-
Yalnızca 2 ve üzeri anahtar doğrulama sürümlerinde bulunur.
710 kimlik değerini kullanan
Tag::ATTESTATION_ID_BRAND
Keymaster etiketine karşılık gelir. -
attestationIdDevice
-
Yalnızca 2 ve üzeri anahtar doğrulama sürümlerinde bulunur.
Etiket kimliği değeri 711 olan
Tag::ATTESTATION_ID_DEVICE
Keymaster etiketine karşılık gelir. -
attestationIdProduct
-
Yalnızca 2 ve üzeri anahtar doğrulama sürümlerinde bulunur.
712 kimlik değerini kullanan
Tag::ATTESTATION_ID_PRODUCT
Keymaster etiketine karşılık gelir. -
attestationIdSerial
-
Yalnızca anahtar onay sürümleri >= 2'de mevcut.
713 kimlik değerini kullanan
Tag::ATTESTATION_ID_SERIAL
Keymaster etiketine karşılık gelir. -
attestationIdImei
-
Yalnızca 2 ve sonraki anahtar doğrulama sürümlerinde bulunur.
714 etiket kimliği değerini kullanan
Tag::ATTESTATION_ID_IMEI
yetkilendirme etiketine karşılık gelir. -
attestationIdMeid
-
Yalnızca 2 ve üzeri anahtar doğrulama sürümlerinde bulunur.
715 kimlik değerini kullanan
Tag::ATTESTATION_ID_MEID
yetkilendirme etiketine karşılık gelir. -
attestationIdManufacturer
-
Yalnızca 2 ve üzeri anahtar doğrulama sürümlerinde bulunur.
716 kimlikli bir etiket değeri kullanan
Tag::ATTESTATION_ID_MANUFACTURER
yetkilendirme etiketine karşılık gelir. -
attestationIdModel
-
Yalnızca anahtar onay sürümleri >= 2'de mevcut.
717 etiket kimliği değerini kullanan
Tag::ATTESTATION_ID_MODEL
yetkilendirme etiketine karşılık gelir. -
vendorPatchLevel
-
Yalnızca 3 ve üzeri anahtar doğrulama sürümlerinde bulunur.
718 kimlikli bir etiket değeri kullanan
Tag::VENDOR_PATCHLEVEL
izin etiketine karşılık gelir.Bu anahtarın kullanılabilmesi için cihaza yüklenmesi gereken tedarikçi firma resmi güvenlik yaması düzeyini belirtir. Değer, tedarikçi firma güvenlik yamasının tarihini temsil eden YYYYAAGG biçiminde görünür. Örneğin, bir Android cihazda tedarikçi firmanın 1 Ağustos 2018 güvenlik yaması yüklüyken bir anahtar oluşturulduysa bu değer 20180801 olur.
-
bootPatchLevel
-
Yalnızca 3 ve sonraki anahtar doğrulama sürümlerinde bulunur.
719 etiket kimliği değerini kullanan
Tag::BOOT_PATCHLEVEL
izin etiketine karşılık gelir.Bu anahtarın kullanılabilmesi için cihaza yüklenmesi gereken çekirdek görüntüsü güvenlik yaması düzeyini belirtir. Değer, sistem güvenlik yamasının tarihini temsil eden YYYYAAGG biçiminde görünür. Örneğin, 5 Ağustos 2018 güvenlik yaması yüklü bir Android cihazda anahtar oluşturulduysa bu değer 20180805 olur.
-
deviceUniqueAttestation
-
Yalnızca 4 ve sonraki anahtar doğrulama sürümlerinde bulunur.
720 değerinde bir etiket kimliği kullanan
Tag::DEVICE_UNIQUE_ATTESTATION
izin etiketine karşılık gelir. -
attestationIdSecondImei
-
Yalnızca 300 veya daha büyük anahtar onay sürümlerinde sunulur.
723 kimlikli bir etiket değeri kullanan
Tag::ATTESTATION_ID_SECOND_IMEI
yetkilendirme etiketine karşılık gelir.
Güven Kökü
Bu değer koleksiyonu, cihazın durumuyla ilgili önemli bilgileri tanımlar.
Aşağıdaki listedeki her alan zorunludur:
-
verifiedBootKey
-
Sistem görüntüsünü doğrulayan anahtarın güvenli karması. Bu karma oluşturma işlemi için SHA-256 algoritmasını kullanmanız önerilir.
-
deviceLocked
- Cihazın bootloader'ı kilitliyse doğru değerini alır. Bu durumda, Doğrulanmış Başlatma kontrolü etkinleştirilir ve imzasız bir cihaz resminin cihaza yüklenmesine izin verilmez. Bu özellik hakkında daha fazla bilgi için Doğrulanmış Başlatma belgelerini inceleyin.
-
verifiedBootState
- Doğrulanmış Başlatma özelliğine göre cihazın başlatma durumu.
-
verifiedBootHash
-
Yalnızca anahtar onay sürümleri >= 3'te mevcut.
Doğrulanmış Önyükleme ile korunan tüm verilerin özeti. Doğrulanmış Başlatma'nın Android Doğrulanmış Başlatma uygulamasını kullanan cihazlarda bu değer, VBMeta yapısının veya Doğrulanmış Başlatma meta veri yapısının özetini içerir.
Bu değerin nasıl hesaplanacağı hakkında daha fazla bilgi edinmek için VBMeta Digest başlıklı makaleyi inceleyin.
VerifiedBootState
Bu veri yapısı, cihazın mevcut önyükleme durumunu sağlar. Bu durum, cihazın önyüklemesi tamamlandıktan sonra kullanıcıya ve uygulamalara sağlanan koruma düzeyini temsil eder. Bu özellik hakkında daha fazla bilgi için Doğrulanmış Başlatma belgelerinin Başlatma Durumu bölümüne bakın.
Bu veri yapısı bir liste olduğundan tam olarak aşağıdaki değerlerden birini alır:
- Doğrulandı
-
Önyükleme yükleyiciyi, önyükleme bölümünü ve doğrulanmış tüm bölümleri içeren tam bir güven zincirini gösterir.
Cihaz bu önyükleme durumundayken
verifiedBootKey
, cihaz üreticisinin fabrikada cihazın ROM'una eklediği cihaza yerleştirilmiş sertifikanın karmasıdır. - Kendinden İmzalı
-
Cihaza yerleştirilmiş sertifikanın, cihazın başlatma bölümünü doğruladığını ve imzanın geçerli olduğunu belirtir.
Cihaz bu önyükleme durumundayken
verifiedBootKey
, kullanıcı tarafından yüklenen bir sertifikanın karmasıdır. Bu sertifika, kullanıcının orijinal, üretici tarafından sağlanan önyükleme bölümünün yerine cihaza eklediği önyükleme bölümünü imzalar. - Doğrulanmadı
- Kullanıcının cihazı özgürce değiştirebileceğini belirtir. Bu nedenle, cihazın bütünlüğünü doğrulama
- Başarısız
-
Cihazın doğrulamayı geçemediğini gösterir. Onay sertifikası hiçbir zaman
VerifiedBootState
için bu değeri kullanmamalıdır.
AttestationApplicationId
Bu veri yapısı, Android platformunun, hangi uygulamaların doğrulama kapsamında gizli anahtar materyalini kullanmasına izin verildiğine dair görüşünü yansıtır. Kimlik, yalnızca birden fazla paketin aynı UID'yi paylaşması durumunda birden fazla paket içerebilir. Sekizlik dize, aşağıdaki ASN.1 şemasına göre biçimlendirilir:
AttestationApplicationId ::= SEQUENCE { package_infos SET OF AttestationPackageInfo, signature_digests SET OF OCTET_STRING, } AttestationPackageInfo ::= SEQUENCE { package_name OCTET_STRING, version INTEGER, }
- paket_bilgileri
-
Her biri bir paketin adını ve sürüm numarasını sağlayan bir
AttestationPackageInfo
nesnesi grubu. - signature_digests
-
Uygulamanın imzalama sertifikalarının SHA-256 özet dizisi. Bir uygulamanın birden fazla imzalama anahtarı sertifika zinciri olabilir. Her biri için "yaprak" sertifikası ayrıştırılır ve
signature_digests
alanına yerleştirilir. Alan adı yanıltıcıdır. Çünkü sıkıştırılmış veriler,getPackageInfo()
çağrısı tarafından döndürülenSignature
sınıfına göre adlandırıldığı için uygulama imzaları değil, uygulamanın imzalama sertifikalarıdır. Aşağıdaki kod snippet'inde bir örnek küme gösterilmektedir:{SHA256(PackageInfo.signature[0]), SHA256(PackageInfo.signature[1]), ...}
Kurulum bilgileri uzantı veri şeması
Temel hazırlama bilgileri uzantısının OID'si 1.3.6.1.4.1.11129.2.1.30
. Uzantı, cihaz sağlama sunucusu tarafından cihaz hakkında bilinen bilgileri sağlar. Bu uzantı CDDL şemasını izler.
{ 1 : int, ; certificates issued }
Harita sürümü değiştirilmemiştir. İsteğe bağlı yeni alanlar eklenebilir.
-
certs_issued
-
Son 30 gün içinde cihaza verilen yaklaşık sertifika sayısı. Bu değer, ortalamadan birkaç kat daha büyükse olası kötüye kullanım sinyali olarak kullanılabilir.