مجموعات المطالبة

يمكن تقسيم المطالبات التي تم إنشاؤها في عملية التصديق على الجيوب باستخدام Microsoft Azure Attestation إلى هذه الفئات:

  • المطالبات الواردة: المطالبات التي تم إنشاؤها بواسطة Microsoft Azure Attestation بعد تحليل دليل التصديق ويمكن استخدامها من قبل مؤلفي النهج لتحديد قواعد التخويل في نهج مخصص

  • المطالبات الصادرة: المطالبات التي تم إنشاؤها بواسطة Azure Attestation والمضمنة في رمز التصديق المميز

  • مطالبات الممتلكات: المطالبات التي تم إنشاؤها كإخراج بواسطة Azure Attestation. وهو يحتوي على جميع المطالبات التي تمثل خصائص رمز الشهادة، مثل ترميز التقرير ومدة صلاحية التقرير وما إلى ذلك.

المطالبات الواردة

تصديق SGX

المطالبات التي يستخدمها مؤلفو السياسات لتحديد قواعد التفويض في سياسة تصديق SGX:

  • x-ms-sgx-is-debuggable: قيمة منطقية، والتي تشير إلى ما إذا كان تصحيح الأخطاء في الجيب ممكنا أم لا.

    يمكن تحميل جيوب SGX بتمكين أو تعطيل خاصية تصحيح الأخطاء. عند تعيين العلامة إلى true في الجيب، فإنه يُمكن ميزات التصحيح للتعليمات البرمجية الخاص بالجيب. يشمل ذلك القدرة على الوصول إلى ذاكرة الجيب. ومن ثم، يُوصي بتعيين العلم إلى «true» فقط لأغراض التنمية. إذا تم تمكينها في بيئة الإنتاج، فلن يتم الاحتفاظ بضمانات الأمان الخاصة ب SGX.

    يمكن لمستخدمي Azure Attestation استخدام نهج المصادقة للتحقق مما إذا كان تصحيح الأخطاء معطلاً لجيب SGX أم لا. بمجرد إضافة قاعدة النهج، سوف تفشل الشهادة عندما يقوم مستخدم ضار بتشغيل دعم التصحيح للوصول إلى محتوى الجيب.

  • x-ms-sgx-product-id: قيمة عدد صحيح، والتي تشير إلى معرف المنتج لجيب SGX.

    يقوم مؤلف الجيب بتعيين ID منتج لكل جيب. يتيح ID المنتج لمؤلف الجيب تقسيم الجيوب الموقعة باستخدام نفس MRSIGNER. عن طريق إضافة قاعدة التحقق من الصحة في نهج التصديق، يمكن للعملاء التحقق مما إذا كانوا يستخدمون الجيوب المقصودة. سوف يفشل التصديق إذا لم يتناسب معرف منتج الجيب مع القيمة التي قام مؤلف الجيب بنشرها.

  • x-ms-sgx-mrsigner: قيمة سلسلة، والتي تحدد مؤلف جيب SGX.

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

    عندما يفضل مؤلف الجيب تدوير MRSIGNER لأسباب أمنية، يجب تحديث نهج مصادقة Azure لدعم قيم MRSIGNER الجديدة والقديمة قبل تحديث الثنائيات. وإلا سوف تفشل عمليات التحقق من التخويل، ما يؤدي إلى فشل المصادقة.

    يجب تحديث نهج التصديق باستخدام التنسيق أدناه.

    قبل دوران المفتاح

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      };
    

    في أثناء دوران المفتاح

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      [ type=="x-ms-sgx-is-debuggable", value==false ]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    

    بعد دوران المفتاح

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: قيمة سلسلة، والتي تحدد التعليمات البرمجية والبيانات المحملة في ذاكرة الجيب.

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

  • x-ms-sgx-svn: قيمة عدد صحيح، والتي تشير إلى رقم إصدار الأمان لجيب SGX

    يقوم مؤلف الجيب بتعيينSecurity Version Number (SVN) لكل إصدار من جيب SGX. عند اكتشاف مشكلة أمنية في التعليمات البرمجية الخاصة بالجيب، يقوم مؤلف الجيب بإضافة قيمة SVN بعد إصلاح الثغرة الأمنية. لمنع التفاعل مع التعليمات البرمجية الخاصة بالجيب غير الآمنة، يمكن للعملاء إضافة قاعدة التحقق من الصحة في نهج المصادقة. إذا لم يتطابق SVN الخاص بالتعليمات البرمجية الخاصة بالجيب SVN مع الإصدار الموصى به من قبل مؤلف الجيب، فسوف تفشل المصادقة.

وتعتبر هذه المطالبات مهملة ولكنها مدعومة بالكامل وستستمر في إدراجها في المستقبل. يوصى باستخدام أسماء المطالبات غير المهملة:

مطالبة مهملة المطالبة الموصى بها
$is-debuggable x-ms-sgx-is-debuggable
$product-id x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

تصديق TPM

المطالبات التي يستخدمها مؤلفو السياسات لتحديد قواعد التفويض في نهج مصادقة TPM:

  • aikValidated: قيمة منطقية تحتوي على معلومات إذا تم التحقق من صحة شهادة Attestation Identity Key (AIK) أم لا
  • aikPubHash: سلسلة تحتوي على base64(SHA256(AIK public key in DER format))
  • tpmVersion: قيمة عدد صحيح تحتوي على الإصدار الرئيسي لوحدة النظام الأساسي الموثوق به (TPM)
  • secureBootEnabled: قيمة منطقية للإشارة إلى ما إذا كان التمهيد الآمن ممكنا
  • iommuEnabled: قيمة منطقية للإشارة إلى ما إذا تم تمكين وحدة إدارة ذاكرة الإدخال والإخراج (Iommu)
  • bootDebuggingDisabled: قيمة منطقية للإشارة إلى ما إذا كان تصحيح أخطاء التمهيد معطلا
  • not خزينة Mode: قيمة منطقية للإشارة إلى ما إذا كان Windows لا يعمل على الوضع الآمن
  • notWinPE: قيمة منطقية تشير إلى ما إذا كان Windows لا يعمل في وضع WinPE
  • vbsEnabled: قيمة منطقية تشير إلى ما إذا تم تمكين VBS
  • vbsReportPresent: قيمة منطقية تشير إلى ما إذا كان تقرير جيب VBS متوفرا

تصديق VBS

بالإضافة إلى مطالبات نهج تصديق TPM، يمكن لمؤلفي النهج استخدام هذه المطالبات لتحديد قواعد التخويل في نهج تصديق VBS:

  • enclaveAuthorId: قيمة السلسلة التي تحتوي على القيمة المشفرة Base64Url لمعرف كاتب الجيب- معرف المؤلف للوحدة النمطية الأساسية للجيب
  • enclaveImageId: قيمة السلسلة التي تحتوي على القيمة المشفرة Base64Url لمعرف صورة الجيب-معرف الصورة للوحدة النمطية الأساسية للجيب
  • enclaveOwnerId: قيمة السلسلة التي تحتوي على القيمة المشفرة Base64Url لمعرف مالك الجيب- معرف مالك الجيب
  • enclaveFamilyId: قيمة السلسلة التي تحتوي على القيمة المشفرة Base64Url لمعرف عائلة الجيب. معرف أسرة الوحدة النمطية الأساسية للجيب
  • enclaveSvn: قيمة عدد صحيح تحتوي على رقم إصدار الأمان للوحدة النمطية الأساسية للجيب
  • enclavePlatformSvn: قيمة عدد صحيح تحتوي على رقم إصدار الأمان للنظام الأساسي الذي يستضيف الجيب
  • enclaveFlags: مطالبة enclaveFlags هي قيمة عدد صحيح تحتوي على علامات تصف نهج وقت التشغيل للجيب

المطالبات الصادرة

معروف لجميع أنواع التصديق

يتضمن Azure Attestation هذه المطالبات في رمز التصديق المميز لجميع أنواع الإثبات:

  • x-ms-ver: إصدار مخطط JWT (من المتوقع أن يكون "1.0")
  • x-ms-attestation-type: قيمة السلسلة التي تمثل نوع التصديق
  • x-ms-policy-hash: تجزئة نهج تقييم Azure Attestation المحسوبة على أنها BASE64URL(SHA256(UTF8(BASE64URL(UTF8(policy text)))))
  • x-ms-policy-signer: كائن JSON مع عضو "jwk" يمثل المفتاح الذي استخدمه العميل لتوقيع نهجه. يُطبق ذلك عندما يقوم العميل بتحميل نهج موقع
  • x-ms-runtime: كائن JSON يحتوي على "مطالبات" يتم تعريفها وإنشاءها داخل البيئة المصدق عليها. هذا تخصص لمفهوم "البيانات المحتفظ بها في الجيب"، حيث يتم تنسيق "البيانات المحتفظ بها في الجيب" على وجه التحديد كترميز UTF-8 ل JSON جيد التكوين
  • x-ms-inittime: كائن JSON يحتوي على "مطالبات" يتم تعريفها والتحقق منها في وقت التهيئة للبيئة المصدق عليها

يتم استخدام أسماء المطالبات أدناه من مواصفات IETF JWT

  • مطالبة "jti" (JWT ID) - معرف فريد ل JWT
  • مطالبة "iss" (المصدر) - المبدأ الذي أصدر JWT
  • مطالبة "iat" (الصادرة في) - الوقت الذي تم فيه إصدار JWT في
  • مطالبة "exp" (وقت انتهاء الصلاحية) - وقت انتهاء الصلاحية الذي يجب بعده عدم قبول JWT للمعالجة
  • مطالبة "nbf" (ليس قبل) - ليس قبل الوقت الذي يجب قبله عدم قبول JWT للمعالجة

يتم استخدام أسماء المطالبات هذه من مواصفات مسودة IETF EAT:

  • "Nonce claim" (nonce) - نسخة مباشرة غير مترجمة من قيمة nonce اختيارية يوفرها العميل

وفيما يلي المطالبات التي تعتبر مهملة ولكنها مدعومة بالكامل وستستمر في إدراجها في المستقبل. ومن المستحسن تجنب استخدام أسماء المطالبات غير المهملة.

مطالبة مهملة المطالبة الموصى بها
ver x-ms-ver
tee x-ms-attestation-type
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data نونس

تصديق SGX

يتم إنشاء هذه caims وتضمينها في رمز التصديق المميز بواسطة خدمة تصديق SGX:

  • x-ms-sgx-is-debuggable: قيمة منطقية، والتي تشير إلى ما إذا كان الجيب قد تم تمكين تصحيح الأخطاء أم لا
  • x-ms-sgx-product-id: قيمة معرف المنتج لجيب SGX
  • x-ms-sgx-mrsigner: قيمة مشفرة سداسية لحقل "mrsigner" لاقتباس
  • x-ms-sgx-mrenclave: قيمة مشفرة سداسية لحقل "mrenclave" لاقتباس
  • x-ms-sgx-svn: رقم إصدار الأمان المشفر في عرض الأسعار
  • x-ms-sgx-ehd: يحتفظ الجيب بالبيانات المنسقة على أنها BASE64URL (بيانات الجيب المحتفظ بها)
  • x-ms-sgx-collateral: كائن JSON يصف الضمان المستخدم لإجراء التصديق. قيمة المطالبة x-ms-sgx-collateral هي كائن JSON متداخل مع أزواج المفتاح/القيمة التالية:
    • qeidcertshash: قيمة SHA256 لشهادات إصدار هوية جيب الاقتباس (QE)
    • qeidcrlhash: قيمة SHA256 لقائمة CRL لإصدار هوية QE
    • qeidhash: قيمة SHA256 من ضمان هوية QE
    • quotehash: قيمة SHA256 لاقتباس التقييم
    • tcbinfocertshash: قيمة SHA256 لشهادات إصدار معلومات TCB
    • tcbinfocrlhash: قيمة SHA256 لقائمة CRL لمعلومات TCB التي تصدر
    • tcbinfohash: قيمة SHA256 من ضمان معلومات TCB
  • x-ms-sgx-report-data: حقل بيانات تقرير جيب SGX (عادة ما يكون تجزئة SHA256 من x-ms-sgx-ehd)

ستظهر هذه المطالبات فقط في رمز التصديق الذي تم إنشاؤه لمنصات خادم Intel® Xeon® Scalable المستندة إلى المعالج. لن تظهر المطالبات إذا لم يتم تكوين جيب SGX مع دعم فصل المفاتيح والمشاركة. يمكن العثور على تعريفات المطالبة هنا:

  • x-ms-sgx-config-id
  • x-ms-sgx-config-svn
  • x-ms-sgx-isv-extended-product-id
  • x-ms-sgx-isv-family-id

وتعتبر هذه المطالبات مهملة، ولكنها مدعومة بالكامل وستستمر في إدراجها في المستقبل. يوصى باستخدام أسماء المطالبات غير المهملة:

مطالبة مهملة المطالبة الموصى بها
$is-debuggable x-ms-sgx-is-debuggable
$product-id x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn
$maa-ehd x-ms-sgx-ehd
$aas-ehd x-ms-sgx-ehd
$maa-attestationcollateral x-ms-sgx-collateral

شهادة SEV-SNP

المطالبات التالية مدعومة بالإضافة إلى ذلك من قبل نوع إثبات SevSnpVm:

  • x-ms-sevsnpvm-authorkeydigest: تجزئة SHA384 لمفتاح توقيع المؤلف
  • x-ms-sevsnpvm-bootloader-svn :AMD boot loader security version number (SVN)
  • x-ms-sevsnpvm-familyId: سلسلة تعريف العائلة لطبقة توافق المضيف (HCL)
  • x-ms-sevsnpvm-guestsvn: رقم إصدار أمان HCL (SVN)
  • x-ms-sevsnpvm-hostdata: بيانات عشوائية يحددها المضيف في وقت تشغيل الجهاز الظاهري
  • x-ms-sevsnpvm-idkeydigest: تجزئة SHA384 لمفتاح توقيع التعريف
  • x-ms-sevsnpvm-imageId: تعريف صورة HCL
  • x-ms-sevsnpvm-is-debuggable: قيمة منطقية تشير إلى ما إذا كان يتم تمكين تصحيح أخطاء AMD SEV-SNP
  • x-ms-sevsnpvm-launchmeasurement: قياس صورة الضيف التي تم إطلاقها
  • x-ms-sevsnpvm-microcode-svn: رقم إصدار أمان AMD microcode (SVN)
  • x-ms-sevsnpvm-migration-allowed: قيمة منطقية تشير إلى ما إذا كان دعم ترحيل AMD SEV-SNP ممكنا
  • x-ms-sevsnpvm-reportdata: البيانات التي تم تمريرها بواسطة HCL لتضمينها مع التقرير، للتحقق من صحة مفتاح النقل وتكوين الجهاز الظاهري
  • x-ms-sevsnpvm-reportid: معرف التقرير للضيف
  • x-ms-sevsnpvm-smt-allowed: قيمة منطقية تشير إلى ما إذا كان يتم تمكين SMT على المضيف
  • x-ms-sevsnpvm-snpfw-svn: رقم إصدار أمان البرنامج الثابت AMD (SVN)
  • x-ms-sevsnpvm-tee-svn: رقم إصدار أمان بيئة التنفيذ الموثوق بها ل AMD (TEE) (SVN)
  • x-ms-sevsnpvm-vmpl: VMPL الذي أنشأ هذا التقرير (0 ل HCL)

تصديق TPM وVBS

  • cnf (تأكيد): يتم استخدام المطالبة "cnf" لتحديد مفتاح إثبات الحيازة. مطالبة التأكيد كما هو محدد في RFC 7800، تحتوي على الجزء العام من مفتاح الجيب الذي تمت المصادقة عليه يمثله كائن ثنائي الحجم JSON Web Key (JWK) (RFC 7517)
  • rp_data (بيانات جهة الاعتماد): بيانات جهة الاعتماد، إن وجدت، المحددة في الطلب، التي يستخدمها الطرف المعتمد كغير مضمن لضمان حداثة التقرير. تتم إضافة rp_data فقط إذا كان هناك rp_data

مطالبات الممتلكات

تصديق TPM وVBS

  • report_validity_in_minutes: مطالبة عدد صحيح للدلالة على مدة صلاحية الرمز المميز.
    • القيمة الافتراضية (الوقت): يوم واحد بالدقائق.
    • الحد الأقصى للقيمة (الوقت): سنة واحدة بالدقائق.
  • omit_x5c: مطالبة منطقية تشير إلى ما إذا كان يجب على Azure Attestation حذف الشهادة المستخدمة لتوفير إثبات صحة الخدمة. إذا كان صحيحًا، فستتم إضافة x5t إلى رمز المصادقة. إذا كان خطأً (افتراضيًا)، فستتم إضافة x5c إلى رمز المصادقة.

الخطوات التالية