
تحكم هادف بالبيانات في الأنظمة الموزعة.
Oak هي منصة برمجية لبناء أنظمة موزعة تقدّم ادعاءات قابلة للتحقق منها خارجيًا (أو قابلة للتكذيب) حول سلوكيات النظام بطريقة شفافة.
تقدّم Oak لبنات بناء تُستخدم لبناء تطبيقات Enclave، أي التطبيقات المعزولة عن المضيف الذي تعمل عليه، والقابلة للإثبات عن بُعد.
في هذا المستند نركّز على الأنظمة الموزعة المكوّنة من "عُقد" غير متجانسة؛ قد تكون العقدة تطبيق Enclave يعمل على خادم (مثل مركز بيانات خاص، أو مزوّد سحابي عام، إلخ)، أو تطبيقًا عاديًا يعمل على جهاز عميل (مثل هاتف، حاسوب محمول)، أو خدمة HTTP أو gRPC عادية، أو نظام تخزين، إلخ. عندما تتواصل عقدتان مع بعضهما البعض، فقد تكون إحداهما أو كلتاهما تطبيقات Enclave. لكل تفاعل بين عقدتين، نشير إليهما بـ "المُبادر" و"المُستجيب". نتجنّب مصطلحي "العميل" و"الخادم" لهذين الدورين، لأن العقدة "المُبادرة" قد تكون في بعض الحالات تعمل فعليًا على "خادم" - فجميع التوليفات ممكنة.
يمكن لتطبيق Enclave في نظام Oak الموزّع أن يُثبت نفسه عن بُعد للعُقد الأخرى: ويتجلّى ذلك في تقديم دليل على هويته البرمجية والعُتادية، مرتبطًا بمفاتيح تشفيرية محلية (مخزّنة في عتاد مقاوم للعبث، يضمن عدم إمكانية تسريب المفاتيح أو نسخها)، وموقّعًا في النهاية بواحد أو أكثر من جذور الثقة البرمجية أو العتادية المتاحة على مضيف تلك العقدة. تتكوّن الهوية البرمجية لتطبيق Enclave من قياسات (أي بصمات / تجزئات) للملفات التنفيذية الثنائية التي تساهم فيه، بالإضافة إلى بيانات إضافية (مثل التهيئة).
تركّز Oak على بيئات التنفيذ الموثوقة (TEEs) القائمة على الأجهزة الافتراضية (مثل AMD SEV-SNP، Intel TDX) كجذر ثقة عتادي لتطبيقات Enclave. يتيح ذلك لتطبيق Enclave تقديم تقرير إثبات عن بُعد موقّع بمفاتيح مرتبطة بالعتاد داخل الـ TEE، لا يمكن لمزوّد الخدمة الوصول إليها. تستند هذه المفاتيح في النهاية إلى مُصنّع الـ TEE (مثل AMD، Intel)؛ وهذا يقلّل (ويُزيل مثاليًا) الحاجة إلى الثقة بمزوّد خدمة تلك العقدة من أجل التحقق من دليلها، عبر توزيع الثقة على عدة فاعلين غير متواطئين.
عند بدء التشغيل، يولّد كل تطبيق Enclave زوج مفاتيح محليًا، ويربط المفتاح العام بدليله الخاص. عندما تنوي عقدة التواصل مع تطبيق Enclave (سواء كمُبادر أو كمُستجيب)، تُنشأ قناة مشفّرة من طرف إلى طرف بين العقدتين. وكجزء من إنشاء القناة، تقدّم كل عقدة أيضًا دليلها الخاص (إن وُجد) للعقدة الأخرى، وقد تستخدم الدليل المقدَّم من العقدة الأخرى لتحديد مدى موثوقيتها، قبل أن تقرّر ما إذا كانت ستتبادل البيانات معها.
توفّر هذه القناة المشفّرة والموثّقة ما يلي:
من أجل تقليل سطح الهجوم وقاعدة الحوسبة الموثوقة (TCB) لتطبيق Enclave إلى الحد الأدنى، تشجّع Oak على بنية منقسمة:
تطبيق Enclave: ملف ثنائي مبني (بشكل قابل لإعادة الإنتاج) من شيفرة مفتوحة المصدر، يعمل داخل TEE. يمتلك تطبيق Enclave إمكانية الوصول إلى مفاتيح فك التشفير المرتبطة بأدلة الإثبات؛ فهو يفك تشفير الطلبات الواردة من العقد الأخرى، ويعالجها، ويشفّر الاستجابات ويرسلها مرة أخرى عبر قناة الاتصال. هذا هو الملف الثنائي المرتبط بادعاءات قابلة للتحقق خارجيًا. لا يمتلك أي ملف ثنائي آخر إمكانية الوصول إلى الطلبات الواردة بنص صريح.
تطبيق المضيف: ملف ثنائي يعمل في بيئة الخادم المضيف (غير الموثوقة) ويعمل كواجهة أمامية لتطبيق Enclave؛ فهو يكشف نقطة نهاية gRPC يمكن الوصول إليها خارجيًا من العقد الأخرى. لا يتعامل هذا الملف الثنائي إلا مع البيانات المشفرة؛ وتتمثل مهمته الرئيسية في إنشاء نسخة من تطبيق Enclave في TEE والحفاظ عليها، وتمرير البيانات المشفرة من وإلى تطبيق Enclave. قد يحتوي أيضًا على منطق خاص مطلوب للتفاعل مع مستوى التحكم أو الأنظمة الداخلية الأخرى اللازمة للتشغيل على البنية التحتية لمزود الخدمة.
يعني هذه البنية أن مزود الخدمة لن يكون قادرًا على استبدال الملف الثنائي لتطبيق Enclave بملف آخر (قد يكون ضارًا) دون أن يُكتشف ذلك. إذا أراد مزود الخدمة إدخال باب خلفي في تطبيق Enclave، فسيتعين عليه توقيع الملف الثنائي ونشره في سجل قابل للتحقق عبر عملية الإصدار الشفاف (Transparent Release)، مما سيجعل الباب الخلفي مرئيًا بشكل لا رجعة فيه للمراقبين الخارجيين.
أحد الاستخدامات النموذجية لـ Oak هو بناء تطبيقات حوسبة مختومة تحافظ على الخصوصية.
في تطبيق الحوسبة المختومة، ترسل عقدة (عادةً جهاز عميل) بيانات إلى تطبيق enclave (عادةً خادم)، والذي يعالج البيانات دون أن يتمكن مزود الخدمة المستضيف لتطبيق enclave من رؤية المدخلات أو المخرجات أو الآثار الجانبية للعملية الحسابية.
فيما يلي رسم تخطيطي مبسّط للبنية.
يدعم Oak نوعين من أنظمة التشغيل داخل TEE، يمكن نشر تطبيقات Enclave عليهما:
Oak Restricted Kernel: نواة صغيرة (microkernel) مخصصة مكتوبة يدويًا وبسيطة جدًا لا تدعم سوى وحدة معالجة مركزية واحدة وتطبيق واحد. تفرض قيودًا صارمة جدًا على ما يمكن للتطبيق فعله من خلال كشف مجموعة محدودة جدًا من استدعاءات النظام (syscalls) للتطبيق. تطبيقات Oak Restricted Kernel مناسبة للحالات التي تكون فيها مراجعة قاعدة الشيفرة الموثوقة بأكملها داخل TEE أمرًا بالغ الأهمية، وتكون الميزات المحدودة والأداء المنخفض مقايضة مقبولة. من الناحية المثالية، ينبغي أن يكون بمقدور خبير بشري واحد مراجعة شيفرة Oak Restricted Kernel بالكامل في غضون بضعة أسابيع.
Oak Containers: يُقدَّم تطبيق Enclave كجزء من حزمة تشغيل OCI. يتضمن ذلك نواة Linux كاملة وتوزيعة Linux مع محرك تشغيل حاويات داخل TEE. يوفر استخدام حزمة تشغيل OCI كطبقة توافق تجربة تطوير أكثر ألفة ومرونة أكبر. يدعم Oak Containers أيضًا وحدات معالجة مركزية متعددة في TEE، وبالتالي فهو مناسب للحالات ذات متطلبات الأداء العالي. يتمثل عيب هذا النهج في أن حجم قاعدة الشيفرة الموثوقة بأكملها العاملة في TEE أكبر بكثير، إذ ليس من الممكن لمراجع بشري واحد مراجعة شيفرة نواة Linux وتوزيعة Linux بالكامل. يعتمد نموذج الثقة لهذا النهج على أمان منظومة Linux الأوسع. كما أن الميزات الإضافية والمرونة التي توفرها نواة Linux للتطبيق تجعل من الصعب الاستدلال على سلوك التطبيق، مما يزيد بدوره من تعقيد عملية المراجعة.
الإثبات عن بُعد (Remote Attestation) هو عملية يقدم من خلالها TEE دليلًا إلى طرف بعيد حول حالته الخاصة وهوية عبء العمل العامل داخل TEE (تطبيق Enclave).
يستخدم Oak بروتوكولاً متعدد المراحل لقياس هوية كل طبقة في عملية الإقلاع (بما يتجاوز مجرد محمّل الإقلاع) وربطها تشفيرياً مع أدلة TEE. يتم تحميل البرنامج الثابت الافتراضي Oak Stage 0 مسبقاً في ذاكرة الآلة الافتراضية، وهو مشمول في تقرير إثبات TEE. لتغطية مراحل الإقلاع اللاحقة، يعتمد Oak على نهج محرك تركيب معرّف الجهاز (DICE)، حيث تكون كل مرحلة إقلاع مسؤولة عن قياس المرحلة التالية. يعزّز Oak تقرير الإثبات بهذه الأدلة الإضافية بحيث تكون هوية جميع مكوّنات عبء العمل (مثل النواة والتطبيق) مشمولة بالأدلة.