التحقُّق من أزواج المفاتيح المستنِدة إلى الأجهزة باستخدام مصادقة المفتاح

تمنحك شهادة إثبات ملكية المفاتيح ثقة أكبر بأنّ المفاتيح التي تستخدمها في تطبيقك يتم تخزينها في متجر مفاتيح يستند إلى الأجهزة في الجهاز. توضّح الأقسام التالية كيفية التحقّق من خصائص المفاتيح المستندة إلى الأجهزة وكيفيةinterpret interpreting data extension data of attestation certificates.interpret interpreting data extension data of attestation certificates.

ملاحظة: قبل التحقّق من خصائص الأجهزة في بيئة الإنتاج، تأكَّد من أنّ الجهاز يتيح مصادقة المفتاح على مستوى الجهاز. لإجراء ذلك، تأكَّد من أنّ سلسلة شهادة الشهادة تحتوي على شهادة جذر تم توقيعها باستخدام مفتاح الجذر لشهادة الاعتماد من Google ومن أنّه تم ضبط العنصر attestationSecurityLevel ضمن بنية بيانات وصف المفتاح على مستوى الأمان TrustedEnvironment أو على مستوى الأمان StrongBox.

بالإضافة إلى ذلك، من المهم التحقّق من التوقيعات في سلسلة الشهادات والتأكّد من أنّه لم يتم إبطال أي من المفاتيح في السلسلة عن طريق التحقّق من قائمة حالة إبطال الشهادة. لا تثق بشكل كامل في شهادة الاعتماد ما لم تكن جميعها صالحة وكان المفتاح الجذر هو مفتاح Google الجذر. وتجدر الإشارة إلى أنّ الأجهزة التي تحتوي على شهادات تم إبطالها تظل على الأقل جديرة بالثقة مثل الأجهزة التي تتيح مصادقة البرامج فقط. إنّ الحصول على إقرار صالح بالكامل هو مؤشر إيجابي قوي. ويُعدّ عدم توفّر علامة مؤشرًا محايدًا، وليس سلبيًا.

استرداد زوج مفاتيح مستند إلى الجهاز والتحقّق منه

أثناء إثبات ملكية المفتاح، يمكنك تحديد الاسم المعرِّف لزوج مفاتيح التشفير واسترداد سلسلة شهادته، والتي يمكنك استخدامها للتحقّق من خصائص هذا الزوج.

إذا كان الجهاز متوافقًا مع إثبات ملكية المفتاح على مستوى الأجهزة، يتم توقيع شهادة الجذر ضمن هذه السلسلة باستخدام مفتاح جذر إثبات الملكية الذي تم تزويده بأمان في متجر المفاتيح المستند إلى الأجهزة في الجهاز.

ملاحظة: على الأجهزة التي يتم شحنها مع شهادة اعتماد مفتاح على مستوى الأجهزة ونظام التشغيل Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث و"خدمات Google Play"، يتم توقيع الشهادة الجذر باستخدام مفتاح الجذر لشهادة اعتماد Google. تأكَّد من أنّ شهادة الجذر هذه هي من بين الشهادات المدرَجة في القسم المتعلّق بشهادات الجذر.

لتنفيذ عملية إثبات ملكية المفتاح، أكمِل الخطوات التالية:

  1. استخدِم طريقة getCertificateChain() لكائن KeyStore للحصول على مرجع إلى سلسلة شهادات X.509 المرتبطة بمخزن المفاتيح المستند إلى الجهاز.
  2. أرسِل الشهادات إلى خادم منفصل تثق به للتحقّق من صحتها.

    تحذير: لا تُكمِل عملية التحقّق التالية على الجهاز نفسه الذي يتضمّن "متجر المفاتيح". إذا تم اختراق نظام Android على هذا الجهاز، قد يؤدي ذلك إلى ثقة عملية التحقّق من شيء غير موثوق به.

  3. احصل على مرجع إلى مكتبة تحليل سلسلة شهادة X.509 والتحقّق منها التي تكون الأكثر ملاءمةً لمجموعة أدواتك. تأكَّد من أنّ الشهادة العامة الجذر جديرة بالثقة وأنّ كل شهادة توقع الشهادة التالية في السلسلة.

  4. تحقّق من حالة إبطال كل شهادة للتأكّد من أنّه لم يتم إبطال أيّ من الشهادات.

  5. يمكنك اختياريًا فحص إضافة شهادة معلومات التوفّر التي لا تظهر إلا في سلاسل الشهادات الأحدث.

    واحصل على مرجع لمكتبة المحلل اللغوي CBOR الأنسب لمجموعة أدواتك. ابحث عن أقرب شهادة إلى الجذر الذي يحتوي على إضافة شهادة معلومات توفير المتطلبات اللازمة. استخدِم المُحلِّل لاستخراج بيانات إضافة شهادة معلومات الإعداد من هذه الشهادة.

    اطّلِع على القسم حول مخطّط بيانات إضافة معلومات التوفّر للحصول على مزيد من التفاصيل.

  6. احصل على مرجع إلى مكتبة مفسِّر ASN.1 الأكثر ملاءمةً لمجموعة أدواتك. ابحث عن أقرب شهادة إلى الجذر تحتوي على إضافة شهادة إثبات ملكية المفتاح . إذا كانت إضافة شهادة معلومات توفير المتطلبات اللازمة متوفّرة، يجب أن تكون إضافة شهادة مصادقة المفتاح في الشهادة اللاحقة على الفور. استخدِم المحلل اللغوي لاستخراج بيانات إضافة شهادة مصادقة المفتاح من تلك الشهادة.

    تحذير: لا تفترض أنّ إضافة شهادة إثبات هوية المفتاح متوفّرة في الشهادة الطرفية للسلسلة. يمكن الوثوق فقط بأول مرّة تظهر فيها الإضافة في السلسلة. ولم يتم إصدار أي مثيلات أخرى من الإضافة من خلال الجهاز الآمن، وقد يكون قد أصدرها مهاجم أثناء محاولة إنشاء عمليات مصادقة مزيفة للمفاتيح غير الموثوق بها.

    يستخدم نموذج ملف تعريف هوية مفتاح التشفير منصة تحليل ASN.1 من Bouncy Castle لاستخراج data إضافة شهادة الشهادة. يمكنك استخدام هذا العيّنة كمرجع لإنشاء معالج لسلاسل النصوص.

    اطّلِع على القسم حول مخطّط بيانات إضافة ملف تعريف هوية العميل للحصول على مزيد من التفاصيل.

  7. تحقَّق من بيانات الإضافة التي استرجاعتها في الخطوات السابقة للتأكّد من تناسقها وقارِنها بمجموعة القيم التي تتوقّع أن يحتوي عليها المفتاح المستند إلى الجهاز.

شهادات الجذر

تعتمد موثوقية شهادة الاعتماد على شهادة الجذر في السلسلة. أجهزة Android التي اجتازت الاختبار المطلوب لتثبيت حزمة تطبيقات Google، بما في ذلك Google Play، والتي تم تشغيلها باستخدام الإصدار 7.0 من Android (المستوى 24 لواجهة برمجة التطبيقات) أو إصدار أحدث، يجب أن تستخدم مفاتيح التصديق الموقَّعة بشهادة جذر تصديق أجهزة Google. يُرجى العِلم أنّه لم يكن مطلوبًا إرسال شهادات الاعتماد حتى الإصدار 8.0 من نظام التشغيل Android (المستوى 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-----
  

إذا كانت شهادة الجذر في سلسلة المصادقة التي تتلقّاها تحتوي على هذا المفتاح العام ولم يتم إبطال أي من الشهادات في السلسلة، سيكون على دراية بما يلي:

  1. أنّ مفتاحك محفوظ في جهاز تعتقد Google أنّه آمن
  2. أن تتضمّن السمات الموضّحة في شهادة الشهادة

إذا كانت سلسلة المصادقة تتضمن أي مفتاح عام جذري آخر، لا تقدّم Google أي مطالبات بشأن أمان الأجهزة. وهذا لا يعني أنّ مفتاحك قد تم اختراقه، بل فقط أنّ المصادقة لا تثبت أنّ المفتاح داخل أجهزة آمنة. ويجب تعديل الافتراضات المتعلّقة بالحماية وفقًا لذلك.

إذا لم تحتوي الشهادة الجذر على المفتاح العام في هذه الصفحة، هناك سببان محتمَلان لذلك:

  • على الأرجح، تم إطلاق الجهاز بإصدار 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
}

مثال على قائمة شهادات الاعتماد المُلغاة:

{
  "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"
    }
  }
}

مخطّط بيانات إضافة مصادقة المفتاح

تحتوي إضافة مصادقة المفتاح على معرّف الكائن 1.3.6.1.4.1.11129.2.1.17. تخزّن الإضافة المعلومات وفقًا لمخطّط ASN.1.

تقدّم القائمة التالية وصفًا لكل عنصر ضمن المخطّط:

KeyDescription

تقدّم تسلسل القيم هذا معلومات عامة عن زوج المفاتيح الذي يتم التحقّق منه من خلال شهادة إثبات ملكية المفتاح، كما توفّر إمكانية الوصول بسهولة إلى تفاصيل إضافية .

attestationVersion
إصدار ميزة مصادقة المفتاح
القيمةالإصدار
1الإصدار 2.0 من Keymaster
2الإصدار 3.0 من Keymaster
3الإصدار 4.0 من Keymaster
4الإصدار 4.1 من Keymaster
100الإصدار 1.0 من KeyMint
200الإصدار 2.0 من KeyMint
300الإصدار 3.0 من KeyMint
attestationSecurityLevel

مستوى المصادقة

تحذير: على الرغم من أنّه من الممكن إثبات صحة المفاتيح التي يتم تخزينها في نظام Android، أي في حال ضبط قيمة attestationSecurityLevel على Software، لا يمكنك الوثوق بهذه الإثباتات في حال اختراق نظام Android.

keymasterVersion / keyMintVersion
إصدار طبقة تجريد الأجهزة (HAL) في Keymaster أو KeyMint
القيمةالإصدار
0الإصدار 0.2 أو 0.3 من Keymaster
1الإصدار 1.0 من Keymaster
2الإصدار 2.0 من Keymaster
3الإصدار 3.0 من Keymaster
4الإصدار 4.0 من Keymaster
41الإصدار 4.1 من Keymaster
100الإصدار 1.0 من KeyMint
200الإصدار 2.0 من KeyMint
300الإصدار 3.0 من KeyMint
keymasterSecurityLevel / keyMintSecurityLevel
مستوى الأمان لتنفيذ Keymaster/KeyMint
attestationChallenge
يحتوي على التحدي الذي تم تقديمه في وقت إنشاء المفتاح. تحقَّق ممّا إذا كانت هذه القيمة تتطابق مع القيمة التي قدّمها خادمك، كما هو محفوظ في علامة التفويض Tag::ATTESTATION_CHALLENGE. بخلاف ذلك، قد تكون خدمتك عرضة لإعادة تشغيل شهادات الإثبات القديمة.
uniqueId
وتحدِّد هذه القيمة الجهاز، ولكن لفترة محدودة فقط. ويتم احتسابه ويُستخدم فقط من قِبل تطبيقات النظام. الحقل "uniqueId" فارغ في جميع التطبيقات الأخرى.
softwareEnforced
اختياري. قائمة الأذونات التي يفرضها نظام Android، وليس بيئة التنفيذ الموثوقة (TEE) في الجهاز، في Keymaster / KeyMint يتم جمع المعلومات الواردة في قائمة الأذونات هذه أو إنشاؤها عن طريق رمز برمجي يمثّل جزءًا من النظام الأساسي ويتم تخزينها في قسم النظام على الجهاز. يمكن الوثوق بمحتوى قائمة الأذونات هذه ما دام الجهاز يعمل بنظام تشغيل متوافق مع نموذج أمان نظام Android الأساسي. تلتزم جميع أجهزة Android المعتمَدة بنموذج الأمان هذا، لذا إذا كان الجهاز مقفلًا وكانت حالة التشغيل التي تم التحقّق منها هي Verified، يجب أن تكون القيم الواردة هنا موثوقة. على الجهاز المعدَّل الذي تم فتح قفل أداة تحميل البرامج، يمكن للمستخدم تثبيت نظام تشغيل لا يتوافق مع نموذج أمان نظام Android الأساسي، لذا قد يختار المستخدم القيم في هذا الحقل بشكل عشوائي.
hardwareEnforced
اختيارية. قائمة تفويض Keymaster / KeyMint التي يتم فرضها من خلال بيئة التنفيذ الموثوقة (TEE) الخاصة بالجهاز. يتم جمع المعلومات الواردة في قائمة التفويض هذه أو إنشاؤها باستخدام رمز يُعَد جزءًا من الأجهزة الآمنة ولا تتحكم فيه المنصة. على سبيل المثال، تأتي المعلومات الواردة في قائمة الأذونات من برنامج الإقلاع في الجهاز أو من وحدة TEE التي تعمل على الجهاز. إنّ الحقول في قائمة الأذونات هذه التي لا يتم ضبطها مباشرةً من خلال KeyMint يتم توفيرها من قِبل أجزاء أخرى من الأجهزة الآمنة (مثل أداة تحميل البرامج الثابتة) من خلال قنوات اتصال آمنة لا تتطلّب الثقة في النظام الأساسي. يتمثل الفرق بين الجهاز الآمن ونظام Android في أنّ المستخدم لا يمكنه تعديل الرمز البرمجي الذي يتم تشغيله في الجهاز الآمن (البرامج الثابتة) حتى لا يتمكّن من التلاعب بالقيم الواردة في قائمة الأذونات هذه.

SecurityLevel

تشير بنية البيانات هذه إلى مدى حماية ميزة معيّنة في البرنامج، مثل مفتاحَي التشفير، استنادًا إلى موقعها في الجهاز.

بما أنّ بنية البيانات هي تعداد، فإنها تأخذ إحدى القيم التالية بالضبط:

ملف تخزين المفاتيح
يتم تنفيذ منطق إنشاء الميزة وإدارتها في نظام Android. لأغراض إنشاء أزواج المفاتيح وتخزينها، يكون هذا الموقع أقل أمانًا من وحدة TEE، ولكنه أكثر أمانًا من مساحة عمليات تطبيقك.
TrustedEnvironment
يتم تنفيذ منطق إنشاء الميزة وإدارتها في الأجهزة الآمنة، مثل وحدة TEE. ولأغراض إنشاء أزواج المفاتيح وتخزينها، يكون هذا المكان أكثر أمانًا لأنّ الأجهزة الآمنة مقاومة بشدة للاختراق عن بُعد.
جهاز strongBox
يتم تنفيذ منطق إنشاء الميزة وإدارتها في وحدة أمان مخصّصة للأجهزة . ولأغراض إنشاء أزواج المفاتيح وتخزينها، يكون هذا الموقع أكثر أمانًا لأنه مقاوم للغاية للاختراقات عن بُعد وهجمات الأجهزة ضد الوحدة.
البرامج
يتم تنفيذ منطق إنشاء الميزة وإدارتها في عملية تنفيذ KeyMint أو Keymaster لا تعمل في بيئة آمنة. لأغراض إنشاء أزواج المفاتيح وتخزينها، يكون هذا الموقع أقل أماناً من TEE، ولكنه أكثر أمانًا من مساحة عمليات تطبيقك.

AuthorizationList

تحتوي بنية البيانات هذه على سمات مفتاحَي التشفير ذاتهما، كما هو محدّد في طبقة HAL (الاختصار لـ Hardware Abstraction Layer) الخاصة بخدمة Keymaster أو KeyMint. يمكنك مقارنة هذه القيم بحالة الجهاز الحالية أو بمجموعة من القيم المتوقّعة للتأكّد من أنّه لا يزال بإمكان زوج المفاتيح أن يكون صالحًا للاستخدام في تطبيقك.

يتوافق كل اسم حقل مع علامة تفويض Keymaster / KeyMint التي تتشابه أسماؤها. على سبيل المثال، يتوافق الحقل keySize في قائمة التفويض مع علامة التفويض Tag::KEY_SIZE.

تحتفظ مواصفات واجهة AIDL بالمعلومات النهائية عن علامات التفويض. يحدّد هذا المقياس قيمة المعرّف ونوع كل علامة، ويشير أيضًا إلى ما إذا كان من المتوقّع أن تكون كل علامة متوفّرة في قائمة تفويض hardwareEnforced (ما يشير إلى أنّ العلامة مفروضة في البيئة الآمنة)، أو في قائمة تفويض softwareEnforced (مع الإشارة إلى أنّ العلامة تفرضها Android، عادةً من خلال ملف تخزين المفاتيح).

كل حقل في القائمة التالية اختياري:

purpose
يطابِق علامة تفويض Tag::PURPOSE التي تستخدم قيمة رقم تعريف العلامة 1.
algorithm

يطابِق علامة التفويض Tag::ALGORITHM التي تستخدم القيمة 2 لرقم تعريف العلامة.

في كائن شهادة الاعتماد AuthorizationList، تكون قيمة الخوارزمية دائمًا RSA أو EC.

keySize
يتطابق مع علامة التفويض Tag::KEY_SIZE التي تستخدِم قيمة علامة ID‏ 3.
digest
يتوافق مع علامة التفويض Tag::DIGEST التي تستخدِم قيمة علامة ID‏ 5.
padding
يطابِق علامة تفويض Tag::PADDING التي تستخدم قيمة رقم تعريف العلامة 6.
ecCurve

تتوافق مع علامة التفويض Tag::EC_CURVE التي تستخدِم قيمة رقم تعريف العلامة 10.

يشير ذلك المصطلح إلى مجموعة المَعلمات المستخدَمة لإنشاء مفتاحَي التشفير البيضاوي (EC) الذي يستخدم ECDSA للتوقيع والتحقّق، ضمن ملف تخزين مفاتيح نظام Android.

rsaPublicExponent
يتوافق مع علامة التفويض Tag::RSA_PUBLIC_EXPONENT التي تستخدِم قيمة معرّف العلامة 200.
mgfDigest

لا يظهر هذا الحقل إلا في إصدار شهادة إثبات ملكية المفتاح الذي يكون أكبر من أو يساوي 100.

تتوافق مع علامة التفويض Tag::RSA_OAEP_MGF_DIGEST KeyMint التي تستخدِم قيمة معرّف العلامة 203.
rollbackResistance

يجب مشاركة العرض في إصدار مصادقة المفتاح >= 3.

يناظر علامة التفويض Tag::ROLLBACK_RESISTANT التي تستخدم قيمة رقم تعريف العلامة 303.

earlyBootOnly

يجب مشاركة العرض في إصدار مصادقة المفتاح >= 4 فقط.

تتوافق مع علامة التفويض Tag::EARLY_BOOT_ONLY التي تستخدم قيمة معرّف العلامة 305.

activeDateTime
يتوافق مع علامة التفويض Tag::ACTIVE_DATETIME التي تستخدم قيمة معرّف العلامة 400.
originationExpireDateTime
يتوافق مع Tag::ORIGINATION_EXPIRE_DATETIME علامة تفويض Keymaster ، التي تستخدم قيمة معرّف العلامة 401.
usageExpireDateTime
يتوافق مع علامة التفويض Tag::USAGE_EXPIRE_DATETIME، التي تستخدِم قيمة معرّف العلامة 402.
usageCountLimit
يتوافق مع علامة التفويض Tag::USAGE_COUNT_LIMIT، التي تستخدِم قيمة معرّف العلامة 405.
noAuthRequired

تتوافق مع علامة التفويض Tag::NO_AUTH_REQUIRED التي تستخدِم قيمة رقم تعريف العلامة 503.

userAuthType
يتوافق مع علامة التفويض Tag::USER_AUTH_TYPE التي تستخدِم قيمة رقم تعريف العلامة 504.
authTimeout
تتطابق مع علامة التفويض Tag::AUTH_TIMEOUT التي تستخدِم قيمة
رقم تعريف العلامة 505.
allowWhileOnBody

تتوافق مع علامة التفويض Tag::ALLOW_WHILE_ON_BODY، التي تستخدِم قيمة معرّف العلامة 506.

السماح باستخدام المفتاح بعد انتهاء مهلة المصادقة إذا كان المستخدم لا يزال يرتدي الجهاز يُرجى العِلم أنّه يتم استخدام كاميرا آمنة على الجسم لتحديد ما إذا كان الجهاز مثبّتًا على جسم المستخدم.

trustedUserPresenceRequired

لا يظهر هذا الحقل إلا في إصدار شهادة إثبات ملكية المفتاح الذي يكون أكبر من أو يساوي 3.

تتوافق مع علامة التفويض Tag::TRUSTED_USER_PRESENCE_REQUIRED ، التي تستخدِم قيمة معرّف العلامة 507.

يحدّد هذا الخيار أنّ هذا المفتاح لا يمكن استخدامه إلا إذا قدّم المستخدم دليلاً على وجوده المادي. تشمل العديد من الأمثلة ما يلي:

  • بالنسبة إلى مفتاح StrongBox، هو زر جهاز متصل بجهاز أمان على جهاز StrongBox.
  • بالنسبة إلى مفتاح TEE، توفّر مصادقة بصمة الإصبع دليلاً على الحضور ما دام TEE يتحكّم بشكل حصري في الماسح الضوئي وينفّذ عملية مطابقة بصمة الإصبع.
trustedConfirmationRequired

لا يظهر هذا الحقل إلا في إصدار شهادة إثبات ملكية المفتاح 3 أو الإصدارات الأحدث.

يطابِق علامة التفويض Tag::TRUSTED_CONFIRMATION_REQUIRED التي تستخدم قيمة رقم تعريف العلامة 508.

يحدِّد هذا الخيار أنّ المفتاح لا يمكن استخدامه إلا إذا قدّم المستخدم تأكيدًا على البيانات التي سيتم توقيعها باستخدام رمز موافقة. لمزيد من المعلومات حول كيفية الحصول على تأكيد المستخدم، يُرجى الاطّلاع على Android Protected Confirmation (تأكيد محمي).

ملاحظة: لا تنطبق هذه العلامة إلا على المفاتيح التي تستخدم الغرض SIGN.

unlockedDeviceRequired

يجب مشاركة العرض في إصدار مصادقة المفتاح >= 3.

تتوافق مع علامة التفويض Tag::UNLOCKED_DEVICE_REQUIRED ، التي تستخدِم قيمة معرّف العلامة 509.

allApplications

يناظر علامة التفويض Tag::ALL_APPLICATIONS التي تستخدم قيمة رقم تعريف العلامة 600.

يشير إلى ما إذا كان بإمكان جميع التطبيقات على الجهاز الوصول إلى مفتاحَي التشفير.

applicationId
يتوافق مع علامة التفويض Tag::APPLICATION_ID التي تستخدِم قيمة معرّف العلامة 601.
creationDateTime
يطابِق علامة التفويض Tag::CREATION_DATETIME التي تستخدم قيمة رقم تعريف العلامة 701.
origin

تتوافق مع علامة التفويض Tag::ORIGIN التي تستخدِم قيمة ID‏ 702.

rollbackResistant

لا تظهر إلا في الإصدارَين 1 و2 من مصادقة المفاتيح.

يناظر علامة التفويض Tag::ROLLBACK_RESISTANT التي تستخدم قيمة رقم تعريف العلامة 703.

rootOfTrust

تتوافق مع علامة التفويض Tag::ROOT_OF_TRUST التي تستخدِم قيمة معرّف العلامة 704.

لمزيد من التفاصيل، اطّلِع على القسم الذي يصف بنية بيانات RootOfTrust.

osVersion

يطابِق علامة التفويض Tag::OS_VERSION التي تستخدم قيمة رقم تعريف العلامة 705.

إصدار نظام التشغيل Android المرتبط بتطبيق Keymaster، ويتم تحديده كعدد صحيح مكوّن من ستة أرقام. على سبيل المثال، يتم تمثيل الإصدار 8.1.0 على النحو التالي: 080100.

لا يتضمّن سوى الإصدار 1.0 من Keymaster أو الإصدارات الأحدث هذه القيمة في قائمة الأذونات.

osPatchLevel

تتوافق مع علامة التفويض Tag::PATCHLEVEL التي تستخدِم قيمة معرّف العلامة 706.

الشهر والسنة المرتبطَين برقعة الأمان المستخدَمة ضمن Keymaster، ويتم تحديدهما كعدد صحيح مكوّن من ستة أرقام. على سبيل المثال، يتم تمثيل التصحيح لشهر آب (أغسطس) 2018 على النحو التالي: 201808.

يتضمّن الإصدار 1.0 أو الإصدارات الأحدث من Keymaster فقط هذه القيمة في قائمة التفويض.

attestationApplicationId

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

تتوافق مع علامة Tag::ATTESTATION_APPLICATION_ID Keymaster للسماح التي تستخدِم قيمة رقم تعريف العلامة 709.

لمزيد من التفاصيل، اطّلِع على القسم الذي يصف بنية بيانات AttestationApplicationId .

attestationIdBrand

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تكون قيمتها أكبر من أو تساوي 2.

تتوافق مع علامة Tag::ATTESTATION_ID_BRAND Keymaster التي تستخدِم قيمة رقم تعريف العلامةTag::ATTESTATION_ID_BRAND‏ 710.

attestationIdDevice

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

تتوافق مع علامة Tag::ATTESTATION_ID_DEVICE Keymaster التي تستخدِم قيمة رقم تعريف 711.

attestationIdProduct

يجب مشاركة العرض في إصدارات المصادقة الرئيسية فقط >= 2.

يناظر علامة Keymaster Tag::ATTESTATION_ID_PRODUCT التي تستخدم قيمة رقم تعريف العلامة 712.

attestationIdSerial

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

تتوافق مع علامة Tag::ATTESTATION_ID_SERIAL Keymaster التي تستخدِم قيمة رقم تعريف العلامةTag::ATTESTATION_ID_SERIAL‏ 713.

attestationIdImei

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

تتوافق مع علامة التفويض Tag::ATTESTATION_ID_IMEI، التي تستخدِم قيمة معرّف العلامة 714.

attestationIdMeid

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

يناظر علامة التفويض Tag::ATTESTATION_ID_MEID التي تستخدم قيمة رقم تعريف العلامة 715.

attestationIdManufacturer

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تكون قيمتها أكبر من أو تساوي 2.

يناظر علامة التفويض Tag::ATTESTATION_ID_MANUFACTURER التي تستخدم قيمة رقم تعريف العلامة 716.

attestationIdModel

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 2.

يناظر علامة التفويض Tag::ATTESTATION_ID_MODEL التي تستخدم قيمة رقم تعريف العلامة 717.

vendorPatchLevel

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 3.

تتوافق مع علامة التفويض Tag::VENDOR_PATCHLEVEL ، التي تستخدِم قيمة معرّف العلامة 718.

تُحدِّد مستوى تصحيح الأمان لصورة المورِّد الذي يجب تثبيته على الجهاز لاستخدام هذا المفتاح. تظهر القيمة في التنسيق YYYYMMDD، ما يمثّل تاريخ تصحيح الأمان الذي قدّمه المورّد. على سبيل المثال، إذا تم إنشاء مفتاح على جهاز Android تم تثبيت تصحيح الأمان بتاريخ 1 آب (أغسطس) 2018 من المورّد عليه، ستكون هذه القيمة هي 20180801.

bootPatchLevel

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 3.

تتوافق مع علامة التفويض Tag::BOOT_PATCHLEVEL ، التي تستخدِم قيمة معرّف العلامة 719.

تُحدِّد هذه السياسة مستوى رمز تصحيح الأمان لصورة النواة الذي يجب تثبيته على الجهاز لاستخدام هذا المفتاح. تظهر القيمة في النموذج YYYYMMDD، الذي يمثّل تاريخ تصحيح أمان النظام. على سبيل المثال، إذا تم إنشاء مفتاح على جهاز Android تم تثبيت تصحيح الأمان فيه بتاريخ 5 آب (أغسطس) 2018، ستكون هذه القيمة ‎20180805.

deviceUniqueAttestation

لا تظهر إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 4.

تتوافق مع علامة التفويض Tag::DEVICE_UNIQUE_ATTESTATION ، التي تستخدِم قيمة معرّف العلامة 720.

attestationIdSecondImei

لا يظهر هذا الحقل إلا في إصدارات شهادة إثبات ملكية المفتاح التي تزيد عن أو تساوي 300.

تتوافق مع Tag::ATTESTATION_ID_SECOND_IMEI علامة التفويض، التي تستخدِم قيمة معرّف العلامة 723.

RootOfTrust

تحدِّد مجموعة القيم هذه معلومات رئيسية عن حالة الجهاز.

يجب ملء كل حقل في القائمة التالية:

verifiedBootKey

تجزئة آمنة للمفتاح الذي يُثبت صحة صورة النظام ننصح باستخدام خوارزمية SHA-256 لتجزئة هذه القيمة.

deviceLocked
صحيح إذا كان برنامج إقلاع الجهاز مقفلاً، ما يؤدي إلى تفعيل "التحقق من التشغيل المتحقَّق منه" ومنع وميض صورة الجهاز التي لم يتم توقيعها على الجهاز. لمزيد من المعلومات حول هذه الميزة، اطّلِع على مستندات التحقّق من Boot.
verifiedBootState
توضِّح هذه السمة حالة بدء التشغيل للجهاز وفقًا لميزة "التشغيل المتحقّق منه".
verifiedBootHash

يجب توفيره فقط في إصدارات المصادقة الرئيسية >= 3.

ملخّص لجميع البيانات المحمية من خلال ميزة "التمهيد التحقق منه" بالنسبة إلى الأجهزة التي تستخدم تنفيذ "التشغيل المتحقّق منه على Android" لعملية "التشغيل المتحقّق منه"، تحتوي هذه القيمة على ملخّص بنية VBMeta أو بنية البيانات الوصفية المتعلّقة بالتمهيد المتحقّق منه.

لمعرفة المزيد من المعلومات عن كيفية احتساب هذه القيمة، يمكنك الاطّلاع على ملخّص VBMeta.

حالة VerifyBootState

تقدّم بنية البيانات هذه حالة تشغيل الجهاز الحالية، والتي تمثل مستوى الحماية المقدَّم للمستخدم والتطبيقات بعد انتهاء تشغيل الجهاز. لمزيد من المعلومات عن هذه الميزة، راجِع قسم حالة التمهيد ضمن مستندات "التحقّق من التشغيل".

بنية البيانات هذه هي قائمة، لذا فهي تأخذ بالضبط إحدى القيم التالية:

تم تأكيد معلوماتها

يشير إلى سلسلة ثقة كاملة، تشمل مشغّل الإقلاع وقسم التمهيد وجميع الأقسام التي تم التحقّق منها.

عندما يكون الجهاز في حالة التمهيد هذه، يكون verifiedBootKey هو تجزئة الشهادة المضمّنة في الجهاز، والتي تُضيفها الشركة المصنّعة للجهاز إلى ذاكرة الجهاز الثابتة في المصنع.

موقَّع ذاتيًا

تشير هذه العلامة إلى أنّ الشهادة المضمّنة في الجهاز قد تحقّقت من قسم تشغيل الجهاز وأنّ التوقيع صالح.

عندما يكون الجهاز في حالة التشغيل هذه، تكون verifiedBootKey هي تجزئة شهادة يثبّتها المستخدم، ما يشير إلى قسم تمهيد يضيفه المستخدم إلى الجهاز بدلاً من قسم التشغيل الأصلي الذي توفّره الشركة المصنّعة.

لم يتم تأكيد معلوماته
يشير ذلك إلى أنّه يمكن للمستخدم تعديل الجهاز بحرية. وبالتالي، يتحمّل المستخدم المسؤولية عن التحقّق من سلامة الجهاز.
تعذَّر التحميل
يشير ذلك إلى أنّه تعذّر إكمال عملية التحقّق من الجهاز. يجب ألا تستخدم شهادة التحقّق هذه القيمة مطلقًا لـ VerifiedBootState.

AttestationApplicationId

تعكس بنية البيانات هذه اعتقاد نظام Android الأساسي بالتطبيقات التي يُسمح لها باستخدام مادة المفتاح السري بموجب شهادة الاعتماد. يمكن أن يتضمّن المعرّف حِزمًا متعددة إذا كانت حِزم متعددة تتشارك معرّف مستخدم موحّد نفسه فقط. يتم تنسيق سلسلة الثمانيات نفسها وفقًا لمخطط ASN.1 التالي:

AttestationApplicationId ::= SEQUENCE {
    package_infos  SET OF AttestationPackageInfo,
    signature_digests  SET OF OCTET_STRING,
}

AttestationPackageInfo ::= SEQUENCE {
    package_name  OCTET_STRING,
    version  INTEGER,
}
package_infos
مجموعة من عناصر AttestationPackageInfo، يقدّم كلّ منها اسم الحزمة ورقم الإصدار
signature_digests

هي مجموعة من ملخصات SHA-256 لشهادات توقيع التطبيق. يمكن أن يحتوي التطبيق على سلاسل متعدّدة من شهادات مفاتيح التوقيع. ولكلّ منها، يتم تلخيص شهادة "ورقة الشجر" ووضعها في الحقل signature_digests. إنّ اسم الحقل مضلِّل، لأنّ البيانات المُلخّصة هي الشهادات المُستخدَمة لتوقيع التطبيق، وليس توقيعات التطبيق، لأنّه تم تسميته على اسم فئة Signature التي يتم عرضها من خلال طلب موجَّه إلى getPackageInfo(). يعرض مقتطف الرمز التالي مجموعة أمثلة:

{SHA256(PackageInfo.signature[0]), SHA256(PackageInfo.signature[1]), ...}

مخطّط بيانات إضافة معلومات توفير المتطلبات اللازمة

تحتوي إضافة معلومات التوفير على معرّف OID 1.3.6.1.4.1.11129.2.1.30. تقدّم الإضافة معلومات معروفة عن الجهاز من خلال خادم إدارة الحسابات. تتبع هذه الإضافة مخطّط CDDL.

  {
        1 : int,   ; certificates issued
  }

تم إلغاء نسخة الخريطة، وقد تتم إضافة حقول اختيارية جديدة.

certs_issued

عدد تقريبي للشهادات التي تم إصدارها للجهاز في آخر 30 يومًا يمكن استخدام هذه القيمة كإشارة على إساءة الاستخدام المحتمَلة إذا كانت القيمة أكبر من المتوسط بعدة مرات.