عملية التمهيد في أجهزة كمبيوتر Mac المزودة بسيليكون Apple
عند تشغيل كمبيوتر Mac مزود بسيليكون Apple، يقوم بعملية تمهيد مشابهة كثيرًا لعملية تمهيد الـ iPhone والـ iPad.
تعمل الشريحة على تنفيذ التعليمات البرمجية من Boot ROM في الخطوة الأولى في سلسلة الثقة. ويعمل التمهيد الآمن في macOS على Mac مزود بسيليكون Apple على التحقق من التعليمات البرمجية لنظام التشغيل نفسه، وكذلك سياسات الأمن وحتى عناصر kexts (المدعومة، لكن غير موصى بها) التي يقوم المستخدمون المصرح لهم بتكوينها.
عند تشغيل LLB (محمّل إقلاع المستوى الأدنى)، فإنه يتحقق من صحة التوقيعات ويحمّل البرامج الثابتة المقترنة بالنظام لمحاور intra-SoC، مثل وحدة التخزين وشاشة العرض وإدارة النظام ووحدات تحكم ثندربولت. ويتحمل LLB أيضًا مسؤولية تحميل LocalPolicy، وهو ملف موقع بواسطة معالج Secure Enclave. يصف ملف LocalPolicy التكوين الذي اختاره المستخدم لسياسات أمن تمهيد النظام ووقت التشغيل. تتمتع LocalPolicy بنفس تنسيق بنية البيانات الذي تتمتع به جميع كائنات التمهيد الأخرى، ولكن يتم توقيعها محليًا بواسطة مفتاح خاص يتوفر فقط داخل Secure Enclave الخاص بجهاز كمبيوتر معين، بدلاً من توقيعها بواسطة خادم Apple مركزي (مثل تحديثات البرامج).
للمساعدة على منع إعادة تشغيل أي LocalPolicy سابقة، يجب أن يبحث محمّل إقلاع المستوى الأدنى (LLB) عن قيمة غير قابلة لإعادة التشغيل من مكون التخزين الآمن المرتبط بـ Secure Enclave. للقيام بذلك، يستخدم Boot ROM في Secure Enclave ويتأكد من أن القيمة غير القابلة لإعادة التشغيل في LocalPolicy تطابق القيمة غير القابلة لإعادة التشغيل في مكون التخزين الآمن. ويساعد هذا الإجراء على منع إعادة تطبيق LocalPolicy قديمة—كان من الممكن تكوينها لتوفير مستوى أمني أقل—على النظام بعد ترقية المستوى الأمني. والنتيجة هي أن التمهيد الآمن على Mac مزود بسيليكون Apple يساعد على الحماية من التراجع إلى إصدارات نظام التشغيل الأقدم، وكذلك الحماية ضد خفض سياسات الأمان.
تكتشف LocalPolicy ما إذا كان نظام التشغيل قد تم تكوينه لتوفير التأمين الكامل أو المنخفض أو الأقل تقييدًا.
التأمين الكامل: يتصرف النظام مثل iOS و iPadOS، ويسمح فقط ببرنامج التمهيد الذي كان معروفًا أنه الأحدث في وقت التثبيت.
التأمين المنخفض: يتم توجيه LLB إلى الثقة في التوقيعات "العالمية" المرفقة مع نظام التشغيل. ويسمح ذلك للنظام بتشغيل إصدارات أقدم من macOS. نظرًا لأن الإصدارات الأقدم من macOS تحتوي حتمًا على ثغرات أمنية لم يتم إصلاحها، يتم وصف وضع الأمن هذا على أنه منخفض. وهذا هو أيضًا مستوى السياسة المطلوب لدعم تمهيد ملحقات kernel (kexts).
التأمين الأقل تقييدًا: يتصرف النظام مثل سلوك التأمين المنخفض من حيث أنه يستخدم التحقق من التوقيعات العالمية لـ iBoot وما بعده، ولكنه يخبر iBoot أيضًا بأنه يجب عليه قبول بعض كائنات التمهيد التي يتم توقيعها بواسطة Secure Enclave بنفس المفتاح المستخدم لتوقيع LocalPolicy. يدعم مستوى السياسة هذا المستخدمين في إنشاء ملحقات XNU kernels المخصصة الخاصة بهم وتوقيعها وتمهيدها.
إذا أشارت LocalPolicy إلى LLB بأن نظام التشغيل المحدد يعمل في التأمين الكامل، يقوم LLB بتقييم التوقيع المخصص لـ iBoot. إذا كان يعمل في التأمين المنخفض أو التأمين الأقل تقييدًا، فإنه يقيّم التوقيع العام. تؤدي أي أخطاء في التحقق من التوقيع إلى قيام النظام بالتمهيد إلى recoveryOS لتوفير خيارات الإصلاح.
بعد تسليم LLB إلى iBoot، يقوم بتحميل البرامج الثابتة المقترنة بـ macOS مثل تلك الخاصة بالمحرك العصبي الآمن والمعالج دائم التشغيل والبرامج الثابتة الأخرى. ويبحث iBoot أيضًا عن معلومات حول LocalPolicy التي تم تسليمها إليه من LLB. إذا كانت LocalPolicy تشير إلى أنه يجب أن يكون هناك مجموعة Kernel مساعدة (AuxKC)، فإن iBoot يبحث عنه في نظام الملفات، ويتحقق من توقيعه بواسطة Secure Enclave بنفس المفتاح الموجود في LocalPolicy ويتحقق من تطابق التجزئة الخاص به مع التجزئة المخزنة في LocalPolicy. إذا تم التحقق من AuxKC، فسيضعه iBoot في الذاكرة مع مجموعة Boot Kernel، قبل تأمين منطقة الذاكرة الكاملة التي تغطي مجموعة Boot Kernel و AuxKC باستخدام حماية تكامل المعالج الثانوي للنظام (CTRR). إذا أشارت السياسة إلى وجوب وجود AuxKC في حين أنها غير موجودة، فسيستمر النظام في التمهيد إلى macOS بدونها. كما أن iBoot مسؤول أيضًا عن التحقق من تجزئة الجذر الخاصة بوحدة تخزين النظام الموقَّعة (SSV)، للتحقق من أن نظام الملفات الذي سيقوم kernel بتحميله قد تم التحقق من سلامته بالكامل.