مشاركة عبر


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

يمكن تقسيم المطالبات التي تم إنشاؤها في عملية التصديق على الجيوب باستخدام 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 للتعليمة البرمجية للجيب مع الإصدار الموصى به من قبل كاتب الجيب، يفشل التصديق.

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

مطالبة مهملة المطالبة الموصى بها
$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 العام بتنسيق DER)).
  • tpmVersion: قيمة عدد صحيح تحتوي على الإصدار الرئيسي لوحدة النظام الأساسي الموثوق به (TPM).
  • secureBootEnabled: قيمة منطقية للإشارة إلى ما إذا تم تمكين التمهيد الآمن.
  • iommuEnabled: قيمة منطقية للإشارة إلى ما إذا تم تمكين وحدة إدارة ذاكرة الإدخال والإخراج (Iommu).
  • bootDebuggingDisabled: قيمة منطقية للإشارة إلى ما إذا كان تصحيح أخطاء التمهيد معطلا.
  • notSafeMode: قيمة منطقية للإشارة إلى ما إذا كان 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

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

  • x-ms-sgx-is-debuggable: قيمة منطقية، والتي تشير إلى ما إذا كان الجيب قد تم تمكين تصحيح الأخطاء أم لا.
  • x-ms-sgx-product-id: قيمة معرف المنتج لجيب SGX.
  • x-ms-sgx-mrsigner: قيمة مشفرة سداسية لحقل MRSIGNER لاقتباس .
  • x-ms-sgx-mrenclave: قيمة مشفرة سداسية لحقل MRSIGNER لاقتباس .
  • 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 لقائمة TCB Info التي تصدر شهادات CRL.
    • 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 (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).
  • x-ms-sevsnpvm-vmpl: VMPL الذي أنشأ هذا التقرير (0 ل HCL).

تصديق TPM وVBS

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

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

تصديق TPM وVBS

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

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