الأمن القائم على القدرات

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

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

مقدمة

تُحقق الإمكانيات هدفها المتمثل في تحسين أمان النظام من خلال استخدامها بدلاً من المراجع القابلة للتزوير . يُحدد المرجع القابل للتزوير (مثل اسم المسار ) كائنًا، ولكنه لا يُحدد حقوق الوصول المناسبة لهذا الكائن وبرنامج المستخدم الذي يمتلك هذا المرجع. وبالتالي، يجب على نظام التشغيل التحقق من صحة أي محاولة للوصول إلى الكائن المُشار إليه، استنادًا إلى صلاحيات البرنامج الطالب، عادةً عبر استخدام قائمة التحكم بالوصول (ACL). أما في نظام مزود بإمكانيات، فإن مجرد امتلاك برنامج المستخدم لهذه الإمكانية يُخوله استخدام الكائن المُشار إليه وفقًا للحقوق التي تُحددها تلك الإمكانية. نظريًا، يُلغي النظام المزود بإمكانيات الحاجة إلى أي قائمة تحكم بالوصول أو آلية مماثلة، وذلك بمنح جميع الكيانات جميع الإمكانيات التي تحتاجها فعليًا فقط.

تُنفَّذ الإمكانية عادةً كبنية بيانات مميزة تتألف من قسم يُحدد حقوق الوصول، وقسم آخر يُعرّف الكائن المراد الوصول إليه بشكل فريد. لا يصل المستخدم إلى بنية البيانات أو الكائن مباشرةً، بل عبر مُعرِّف . عمليًا، يُستخدم المُعرِّف بشكل مشابه لمُعرِّف الملف في نظام التشغيل التقليدي (مُعرِّف تقليدي)، ولكن للوصول إلى جميع الكائنات في النظام. عادةً ما يخزن نظام التشغيل الإمكانيات في قائمة، مع وجود آلية لمنع البرنامج من تعديل محتويات الإمكانية مباشرةً (لتزوير حقوق الوصول أو تغيير الكائن الذي تُشير إليه). كما اعتمدت بعض الأنظمة على عنونة قائمة على الإمكانيات (دعم الأجهزة للإمكانيات)، مثل نظام بليسي 250 .

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

لا ينبغي الخلط بين الإمكانيات المذكورة في هذه المقالة وإمكانيات واجهة نظام التشغيل المحمولة ( POSIX ) 1e/2c . فالأخيرة عبارة عن امتيازات عامة لا يمكن نقلها بين العمليات.

أمثلة

تُعرَّف القدرة بأنها مرجع كائن محمي ، يمنح، بفضل امتلاكه من قِبل عملية مستخدم، تلك العملية القدرة (ومن هنا جاء الاسم) على التفاعل مع كائن بطرق محددة. قد تشمل هذه الطرق قراءة البيانات المرتبطة بالكائن، وتعديله، وتنفيذ البيانات الموجودة فيه كعملية، وغيرها من حقوق الوصول الممكنة. تتكون القدرة منطقيًا من مرجع يُعرّف كائنًا معينًا بشكل فريد، ومجموعة من حق واحد أو أكثر من هذه الحقوق.

لنفترض أنه في مساحة ذاكرة عملية المستخدم، توجد السلسلة التالية:

/etc/passwd

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

/etc/passwd O_RDWR

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

والآن، لنفترض أن برنامج المستخدم قد نفذ بنجاح العبارة التالية:

int fd = open ( "/etc/passwd" , O_RDWR );

يحتوي المتغير fdالآن على فهرس مُعرِّف ملف في جدول مُعرِّفات الملفات الخاص بالعملية. يُعدّ مُعرِّف الملف هذا إحدى إمكانيات العملية. وجوده في جدول مُعرِّفات الملفات الخاص بالعملية كافٍ لإثبات أن العملية لديها بالفعل حق الوصول المشروع إلى الكائن. من السمات الرئيسية لهذا الترتيب أن جدول مُعرِّفات الملفات موجود في ذاكرة النواة ولا يمكن لبرنامج المستخدم التلاعب به مباشرةً.

المشاركة بين العمليات

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

في النظام القائم على القدرات، يتم تمرير القدرات نفسها بين العمليات والتخزين باستخدام آلية معروفة لنظام التشغيل للحفاظ على سلامة تلك القدرات.

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

إمكانيات POSIX

تحدد مسودة معيار واجهة نظام التشغيل المحمول (POSIX) رقم 1003.1e مفهومًا للأذونات يُسمى "الصلاحيات". مع ذلك، تختلف صلاحيات POSIX عن الصلاحيات المذكورة في هذه المقالة. لا ترتبط صلاحية POSIX بأي كائن؛ إذ يمكن لعملية تمتلك صلاحية CAP_NET_BIND_SERVICE الاستماع على أي منفذ TCP ضمن المنفذ 1024. يوجد هذا النظام في نظام لينكس. [ 1 ]

على النقيض من ذلك، يجمع نظام Capsicum Unix بين نموذج نظام الصلاحيات الحقيقي وتصميم Unix وواجهة برمجة تطبيقات POSIX. تُعدّ صلاحيات Capsicum شكلاً مُحسّناً من مُعرّفات الملفات، وهي حق قابل للتفويض بين العمليات، ويمكن الإشارة إلى أنواع كائنات إضافية تتجاوز POSIX التقليدي، مثل العمليات، عبر الصلاحيات. في وضع صلاحيات Capsicum، لا تستطيع العمليات استخدام مساحات الأسماء العامة (مثل مساحة اسم نظام الملفات) للبحث عن الكائنات، ويجب عليها بدلاً من ذلك وراثتها أو تفويضها. يوجد هذا النظام بشكل أصلي في FreeBSD، ولكن تتوفر تصحيحات لأنظمة أخرى. [ 2 ]

التطبيقات

تشمل أنظمة البحث والتجارة البارزة التي تستخدم الأمن القائم على القدرات ما يلي:

تم إيقاف إنتاجه

انظر أيضاً

مراجع

  1. دليل مبرمج لينكس – نظرة عامة، واصطلاحات، ومعلومات متنوعة من موقع Manned.orgcapabilities(7)  
  2. دليل واجهات نواة FreeBSDcapsicum(4)  
  3. "Capsicum(4)" .
  4. كابسيكوم: إمكانيات عملية لنظام يونكس . تم الاطلاع عليه بتاريخ 9 يوليو 2024
  5. "نظام التشغيل Genode: نسمة منعشة في أمن أنظمة التشغيل والبرمجيات" . Rudd-O.com . تاريخ الاسترجاع: 21 ديسمبر 2023 .
  6. "نظام التشغيل Fuchsia من جوجل يعمل على أي جهاز تقريبًا" . Engadget . 14 أغسطس 2016. تاريخ الاطلاع: 21 ديسمبر 2023 .
  7. ديكي، مارتن. "أنظمة التشغيل القائمة على النواة المصغرة والأنظمة القائمة على القدرات" (ملف PDF) . D3S . تم الاطلاع عليه بتاريخ 23 ديسمبر 2023 .
  8. "docs/en/application-dev/security/accesstoken-overview.md at master · openharmony/docs" . GitHub . تم الاطلاع عليه بتاريخ 4 مايو 2024 .
  9. دارك نيفي (11 يونيو 2024). "تقرير AVSS: تقييم أولي لقدرات الخصوم الأمنية لأنظمة iOS وAndroid وHarmonyOS - النواة" . دارك نيفي . تاريخ الاسترجاع: 4 يوليو 2024 .
  10. دزيوبا، تيد. "روسي يركب فانتوم نحو الخلود في نظام التشغيل" . ذا ريجستر . تم الاسترجاع في 31 ديسمبر 2023 .

للمزيد من القراءة

إمكانيات POSIX في لينكس: