هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها

تنوع البرمجيات

من أرابيكا، الموسوعة الحرة

هذه هي النسخة الحالية من هذه الصفحة، وقام بتعديلها عبود السكاف (نقاش | مساهمات) في 06:33، 29 أغسطس 2023 (حذف وسائط lay-* ملغية). العنوان الحالي (URL) هو وصلة دائمة لهذه النسخة.

(فرق) → نسخة أقدم | نسخة حالية (فرق) | نسخة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

تنوع البرمجيات هو مجال بحثي حول فهم وهندسة التنوع في سياق البرمجيات.

مجالات رئيسية

تمت مناقشة المجالات المختلفة لتنوع البرامج في الاستطلاعات حول التنوع من أجل التسامح مع الخطأ[1] أو الأمن.[2][3] يؤكد مسح حديث على أحدث التطورات في هذا المجال.[4]

المجالات الرئيسية هي:

  • تنوع التصميم، برمجة الإصدار ن، تنوع البيانات لتحمل الخطأ.
  • التوزيع العشوائي.
  • تنوع البرامج الطبيعية.
  • خط منتجات البرمجيات.[5]

مجالات فرعية

يمكن تنويع البرمجيات في معظم المجالات:

تقنيات

من الممكن تضخيم تنوع البرمجيات من خلال عمليات التحويل المؤتمتة التي تخلق تنوعًا اصطناعيًا. المحول البرمجي المتعدد هو مترجم محرك التنويع.[8] تعتبر بيئة التنفيذ متعددة المتغيرات (MVEE) مسؤولة عن اختيار المتغير لتنفيذ ومقارنة الإخراج.[9]

كان فريد كوهين من بين أوائل المروجين لهذا النهج. واقترح سلسلة من تحويلات إعادة الكتابة وإعادة البرمجة التي تهدف إلى إنتاج كميات هائلة من الإصدارات المختلفة من وظائف أنظمة التشغيل.[10] تم تطوير هذه الأفكار على مر السنين وأدت إلى إنشاء مخططات تشويش متكاملة لحماية الوظائف الرئيسية في أنظمة البرمجيات الكبيرة.[11]

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

يستكشف العمل الأخير على التنوع التلقائي للبرمجيات الأشكال المختلفة لتحويلات البرامج التي تختلف قليلاً في سلوك البرامج. الهدف هو تطوير برنامج واحد إلى مجموعة من البرامج المتنوعة التي تقدم جميعها خدمات مماثلة للمستخدمين، ولكن برمز مختلف.[13][14] يعزز هذا التنوع في التعليمات البرمجية حماية المستخدمين من هجوم واحد يمكن أن يؤدي إلى تعطل جميع البرامج في نفس الوقت.

تشمل عوامل التحويل ما يلي:[15]

  • التوزيع العشوائي لتخطيط التعليمات البرمجية: إعادة ترتيب الوظائف في التعليمات البرمجية.
  • عشوائية تخطيط الكرات: إعادة ترتيب الكرات.
  • المكدس العشوائي المتغير: إعادة ترتيب المتغيرات في كل إطار المكدس.
  • عشوائية تخطيط كومة.

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

مراجع

  1. ^ Deswarte, Y.; Kanoun, K.; Laprie, J.-C. (Jul 1998). Diversity against accidental and deliberate faults. pp. 171–181. CiteSeerX:10.1.1.27.9420. DOI:10.1109/csda.1998.798364. ISBN:978-0769503370. {{استشهاد بكتاب}}: |صحيفة= تُجوهل (help)صيانة الاستشهاد: لغة غير مدعومة (link)
  2. ^ Knight, John C. (2011), "Diversity", Dependable and Historic Computing, Lecture Notes in Computer Science (بEnglish), Springer Berlin Heidelberg, vol. 6875, pp. 298–312, DOI:10.1007/978-3-642-24541-1_23, ISBN:9783642245404
  3. ^ Just، James E.؛ Cornwell، Mark (29 أكتوبر 2004). Review and analysis of synthetic diversity for breaking monocultures. ACM. ص. 23–32. CiteSeerX:10.1.1.76.3691. DOI:10.1145/1029618.1029623. ISBN:978-1581139709.
  4. ^ Baudry، Benoit؛ Monperrus، Martin (29 سبتمبر 2015). "The Multiple Facets of Software Diversity: Recent Developments in Year 2000 and Beyond". ACM Computing Surveys. ج. 48 ع. 1: 16. arXiv:1409.7324. DOI:10.1145/2807593. ISSN:0360-0300.
  5. ^ Schaefer, Ina; Rabiser, Rick; Clarke, Dave; Bettini, Lorenzo; Benavides, David; Botterweck, Goetz; Pathak, Animesh; Trujillo, Salvador; Villela, Karina (28 Jul 2012). "Software diversity: state of the art and perspectives". International Journal on Software Tools for Technology Transfer (بEnglish). 14 (5): 477–495. CiteSeerX:10.1.1.645.1960. DOI:10.1007/s10009-012-0253-y. ISSN:1433-2779.
  6. ^ أ ب Hosseinzadeh، Shohreh؛ Rauti، Sampsa؛ Hyrynsalmi، Sami؛ Leppanen، Ville (ديسمبر 2015). Security in the Internet of Things through obfuscation and diversification. ص. 1–5. DOI:10.1109/cccs.2015.7374189. ISBN:978-1-4673-9354-6. {{استشهاد بكتاب}}: |صحيفة= تُجوهل (مساعدة)
  7. ^ Franz، Michael (21 سبتمبر 2010). "E unibus pluram". E unibus pluram: massive-scale software diversity as a defense mechanism. ص. 7–16. DOI:10.1145/1900546.1900550. ISBN:9781450304153.
  8. ^ "Protecting Applications with Automated Software Diversity". Galois, Inc. 10 سبتمبر 2018. مؤرشف من الأصل في 2020-03-09. اطلع عليه بتاريخ 2019-02-12.
  9. ^ Coppens، Bart؛ De Sutter، Bjorn؛ Volckaert، Stijn (1 مارس 2018)، "Multi-variant execution environments"، The Continuing Arms Race: Code-Reuse Attacks and Defenses، ACM، ص. 211–258، DOI:10.1145/3129743.3129752، ISBN:9781970001839
  10. ^ Cohen، Frederick B. (1993). "Operating system protection through program evolution" (PDF). Computers & Security. ج. 12 ع. 6: 565–584. DOI:10.1016/0167-4048(93)90054-9. ISSN:0167-4048. مؤرشف من الأصل (PDF) في 2015-09-10. {{استشهاد بدورية محكمة}}: يحتوي الاستشهاد على وسيط غير معروف وفارغ: |بواسطة= (مساعدة)
  11. ^ Chenxi Wang; Davidson, J.; Hill, J.; Knight, J. (2001). Protection of software-based survivability mechanisms (PDF). pp. 193–202. CiteSeerX:10.1.1.1.7416. DOI:10.1109/dsn.2001.941405. ISBN:978-0769511016. Archived from the original (PDF) on 2017-07-06. {{استشهاد بكتاب}}: |صحيفة= تُجوهل (help) and يحتوي الاستشهاد على وسيط غير معروف وفارغ: |بواسطة= (help)صيانة الاستشهاد: لغة غير مدعومة (link)
  12. ^ Forrest, S.; Somayaji, A.; Ackley, D.H. (1997). Building diverse computer systems (PDF). pp. 67–72. CiteSeerX:10.1.1.131.3961. DOI:10.1109/hotos.1997.595185. ISBN:978-0818678349. Archived from the original (PDF) on 2016-04-13. {{استشهاد بكتاب}}: |صحيفة= تُجوهل (help) and يحتوي الاستشهاد على وسيط غير معروف وفارغ: |بواسطة= (help)صيانة الاستشهاد: لغة غير مدعومة (link)
  13. ^ Schulte, Eric; Fry, Zachary P.; Fast, Ethan; Weimer, Westley; Forrest, Stephanie (28 Jul 2013). "Software mutational robustness" (PDF). Genetic Programming and Evolvable Machines (بEnglish). 15 (3): 281–312. arXiv:1204.4224. DOI:10.1007/s10710-013-9195-8. ISSN:1389-2576. Archived from the original (PDF) on 2017-08-11. {{استشهاد بدورية محكمة}}: يحتوي الاستشهاد على وسيط غير معروف وفارغ: |بواسطة= (help)
  14. ^ Baudry، Benoit؛ Allier، Simon؛ Monperrus، Martin (21 يوليو 2014). Proceedings of the 2014 International Symposium on Software Testing and Analysis - ISSTA 2014. ACM. ص. 149–159. arXiv:1401.7635. DOI:10.1145/2610384.2610415. ISBN:9781450326452. مؤرشف من الأصل في 2018-11-07.
  15. ^ "Automated Software Diversity: Sometimes More Isn't Merrier". Galois, Inc. 10 سبتمبر 2018. مؤرشف من الأصل في 2020-03-09. اطلع عليه بتاريخ 2019-02-12.
  16. ^ Harrand, Nicolas; Allier, Simon; Rodriguez-Cancio, Marcelino; Monperrus, Martin; Baudry, Benoit (25 Jun 2019). "A journey among Java neutral program variants". Genetic Programming and Evolvable Machines (بEnglish). 20 (4): 531–580. arXiv:1901.02533. DOI:10.1007/s10710-019-09355-3. ISSN:1389-2576.