hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
البرمجة الموجهة للعودة الهجمات
على الرغم من إمكانية تنفيذ هجمات البرمجة الموجهة للعودة على مجموعة متنوعة من البنيات التحتية، فإن ورقة شاكام وأغلب الأعمال اللاحقة تركز على بنية Intel x86. هندسة x86 عبارة عن مجموعة تعليمات CISC ذات طول متغير. تستفيد البرمجة الموجهة نحو العودة على x86 من حقيقة أن مجموعة التعليمات "كثيفة" للغاية، أي أن أي تسلسل عشوائي من البايتات من المحتمل أن يكون قابلاً للتفسير كمجموعة صالحة من تعليمات x86.
البرمجة الموجهة للعودة الهجمات
لذلك، من الممكن البحث عن التعليمات البرمجية التي تغير تدفق التحكم، وخاصة تعليمة الإرجاع (0xC3)، ثم النظر إلى الوراء في النظام الثنائي بحثًا عن البايتات السابقة التي تشكل تعليمات مفيدة محتملة. يمكن بعد ذلك ربط مجموعات "الأدوات" الإرشادية هذه عن طريق الكتابة فوق عنوان الإرجاع، من خلال استغلال تجاوز سعة المخزن المؤقت، باستخدام عنوان التعليمات الأولى للأداة الأولى. يُكتب بعد ذلك العنوان الأول للأدوات اللاحقة على التوالي على المكدس. في ختام الجهاز الأول، سيُنفذ تعليمة الإرجاع، والتي ستؤدي إلى إخراج عنوان الجهاز التالي من المكدس والانتقال إليه. وفي ختام تلك الأداة، تستمر السلسلة مع الأداة الثالثة، وهكذا. من خلال ربط تسلسلات التعليمات الصغيرة، يتمكن المهاجم من إنتاج سلوك برمجي عشوائي من كود مكتبة موجود مسبقًا. يؤكد شاكام أنه إذا توفرت كمية كبيرة من الكود (بما في ذلك، على سبيل المثال لا الحصر، مكتبة C القياسية)، فسوف توجد أدوات كافية للوظيفة الكاملة لتورينج.
البرمجة الموجهة للعودة الهجمات
طورت أداة آلية للمساعدة في أتمتة عملية تحديد موقع الأدوات وبناء هجوم ضد نظام ثنائي. تبحث هذه الأداة، المعروفة باسم ROPgadget، في ملف ثنائي عن أدوات مفيدة محتملة، وتحاول تجميعها في حمولة هجومية تولد غلافًا لقبول أوامر عشوائية من المهاجم.
تخطيط مساحة العنوان العشوائية لديه أيضًا نقاط ضعف. وفقًا لورقة Shacham et al، فإن ASLR على البنيات المكونة من 32 بت محدودة بعدد البتات المتاحة لتوزيع العناوين بشكل عشوائي. تتوفر 16 بتة فقط من أصل 32 بت عنوان للعشوائية، ويمكن التغلب على 16 بتة من العشوائية في العنوان عن طريق هجوم القوة الغاشمة في دقائق. تتمتع معماريات 64 بت بالمزيد من القوة، حيث يتوفر 40 بت من أصل 64 بت للتوزيع العشوائي. من الممكن أن يُشن هجوم بالقوة الغاشمة ضد التوزيع العشوائي المكون من 40 بت، ولكن من غير المرجح أن يمر دون أن يلاحظه أحد. بالإضافة إلى هجمات القوة الغاشمة، توجد تقنيات لإزالة العشوائية.
حتى مع التوزيع العشوائي المثالي، إذا كان هناك أي تسرب للمعلومات الخاصة بمحتويات الذاكرة، فسيكون من المفيد حساب عنوان القاعدة لمكتبة مشتركة على سبيل المثال في وقت التشغيل.
وفقًا لورقة Checkoway et al، من الممكن إجراء برمجة موجهة نحو العودة على معماريات x86 وARM دون استخدام تعليمة العودة (0xC3 على x86). وبدلاً من ذلك، استخدموا تسلسلات تعليمات مصممة بعناية وموجودة بالفعل في ذاكرة الجهاز لتتصرف مثل تعليمات الإرجاع. تحتوي تعليمات الإرجاع على تأثيرين: أولاً، تقوم بقراءة القيمة المكونة من أربعة بايتات في أعلى المكدس، وتضبط مؤشر التعليمات إلى تلك القيمة، وثانياً، تقوم بزيادة قيمة مؤشر المكدس بمقدار أربعة بايتات (ما يعادل عملية البوب). في بنية x86، يمكن لتسلسلات تعليمات jmp وpop أن تعمل بمثابة تعليمات إرجاع. في ARM، يمكن لتسلسلات تعليمات التحميل والفرع أن تعمل بمثابة تعليمات إرجاع.
وبما أن هذا النهج الجديد لا يستخدم تعليمات الإرجاع، فإنه ينطوي على آثار سلبية على الدفاع. عندما يقوم برنامج الدفاع بالتحقق ليس فقط من عدة إرجاعات ولكن أيضًا من عدة تعليمات قفز، فقد يُكشف هذا الهجوم.
البرمجة الموجهة للعودة الدفاعات
طورت تقنية G-Free بواسطة كان أونارلي أوغلو، وليلى بيلج، وأندريا لانزي، وديفيد بالزاروتي، وإنجين كيردا. إنه حل عملي ضد أي شكل ممكن من أشكال البرمجة الموجهة نحو العودة. يعمل الحل على إزالة جميع تعليمات الفرع الحر غير المتوافقة (تعليمات مثل RET أو CALL والتي يمكن للمهاجمين استخدامها لتغيير تدفق التحكم) داخل ملف تنفيذي ثنائي، ويحمي تعليمات الفرع الحر من أن يستخدمها المهاجم. الطريقة التي تحمي بها G-Free عنوان الإرجاع تشبه طريقة XOR Canary التي ينفذها StackGuard. علاوة على ذلك، فإنه يتحقق من صحة استدعاءات الوظيفة عن طريق إضافة كتلة التحقق من الصحة. إذا لم يُعثر على النتيجة المتوقعة، فإن G-Free يتسبب في تعطل التطبيق.
البرمجة الموجهة للعودة الدفاعات
أُقترح عدد من التقنيات لعرقلة الهجمات استنادًا إلى البرمجة الموجهة نحو العودة. يعتمد معظمها على عشوائية موقع البرنامج ورمز المكتبة، بحيث لا يتمكن المهاجم من التنبؤ بدقة بموقع التعليمات التي قد تكون مفيدة في الأدوات وبالتالي لا يتمكن من شن سلسلة هجوم برمجة موجهة نحو العودة ناجحة. أحد التطبيقات الشائعة إلى حد ما لهذه التقنية، وهي توزيع مساحة العنوان بشكل عشوائي (ASLR)، تقوم بتحميل المكتبات المشتركة في موقع ذاكرة مختلف عند كل تحميل للبرنامج. على الرغم من انتشاره على نطاق واسع بواسطة أنظمة التشغيل الحديثة، فإن ASLR معرضة لهجمات تسريب المعلومات والطرق الأخرى لتحديد عنوان أي وظيفة مكتبة معروفة في الذاكرة. إذا تمكن المهاجم من تحديد موقع تعليمة معروفة بنجاح، فيمكن استنتاج موقع جميع التعليمات الأخرى وبناء هجوم برمجة موجه نحو العودة.
البرمجة الموجهة للعودة الدفاعات
يمكن اتخاذ هذا النهج العشوائي بشكل أكبر عن طريق نقل جميع التعليمات و/أو حالة البرنامج الأخرى (السجلات وكائنات المكدس) للبرنامج بشكل منفصل، بدلاً من مواقع المكتبة فقط. يتطلب هذا دعمًا مكثفًا لوقت التشغيل، مثل مترجم ديناميكي للبرمجيات، لتجميع التعليمات العشوائية معًا مرة أخرى في وقت التشغيل. تعتبر هذه التقنية ناجحة في جعل العثور على الأدوات واستخدامها أمرًا صعبًا، ولكنها تأتي مع تكاليف إضافية كبيرة.
هناك نهج آخر، يتخذه kBouncer، وهو تعديل نظام التشغيل للتحقق من أن تعليمات الإرجاع تعمل بالفعل على تحويل تدفق التحكم مرة أخرى إلى موقع بعد تعليمات الاستدعاء مباشرةً. يؤدي هذا إلى منع تسلسل الأجهزة، ولكنه يحمل عقوبة أداء ثقيلة،  وهو غير فعال ضد هجمات البرمجة الموجهة للقفز والتي تعمل على تغيير القفزات وتعليمات تعديل تدفق التحكم الأخرى بدلاً من الإرجاعات.
البرمجة الموجهة للعودة الدفاعات
تستخدم بعض الأنظمة الحديثة مثل Cloud Lambda (FaaS) وتحديثات إنترنت الأشياء عن بعد البنية الأساسية السحابية لإجراء التجميع أثناء التنقل قبل نشر البرنامج. يمكن للتقنية التي تقدم اختلافات لكل حالة من حالات برنامج التنفيذ أن تزيد بشكل كبير من مناعة البرنامج ضد هجمات ROP. قد يؤدي استخدام القوة الغاشمة في Cloud Lambda إلى مهاجمة عدة حالات من البرنامج العشوائي مما يقلل من فعالية الهجوم. نشر أساف شيلي هذه التقنية في عام 2017 وأظهر استخدام العشوائية الثنائية في نظام تحديث البرامج. بالنسبة لكل جهاز حُدث، قدمت الخدمة المستندة إلى السحابة اختلافات في الكود، وأجرت التجميع عبر الإنترنت، وأرسلت الملف الثنائي. تعتبر هذه التقنية فعالة للغاية لأن هجمات ROP تعتمد على معرفة البنية الداخلية للبرنامج. إن العيب في هذه التقنية هو أن البرنامج لا يُختبر بالكامل قبل نشره لأنه ليس من الممكن اختبار جميع الاختلافات في البرنامج العشوائي. وهذا يعني أن العديد من تقنيات التوزيع العشوائي الثنائي قابلة للتطبيق على واجهات الشبكة وبرمجة النظام ولا يوصى بها للخوارزميات المعقدة.
البرمجة الموجهة للعودة الدفاعات
تعتبر حماية الكتابة فوق معالج الاستثناءات المنظم ميزة من ميزات Windows تعمل على الحماية ضد هجمات تجاوز سعة المكدس الأكثر شيوعًا، وخاصةً ضد الهجمات على معالج الاستثناءات المنظم.
مع انتشار الأنظمة المضمنة الصغيرة بسبب توسع إنترنت الأشياء، تتزايد أيضًا الحاجة إلى حماية هذه الأنظمة المضمنة. باستخدام التحكم في الوصول إلى الذاكرة المستند إلى التعليمات (IB-MAC) المطبق في الأجهزة، من الممكن حماية الأنظمة المضمنة منخفضة التكلفة ضد هجمات تدفق التحكم الضارة وتدفق المكدس. يمكن توفير الحماية عن طريق فصل كومة البيانات ومكدس الإرجاع. ومع ذلك، بسبب عدم وجود وحدة إدارة الذاكرة في بعض الأنظمة المضمنة، لا يمكن تطبيق الحل المادي على جميع الأنظمة المضمنة.
البرمجة الموجهة للعودة الدفاعات
في عام 2010، اقترح جينكو لي وآخرون أن المترجم المعدل بشكل مناسب يمكنه التخلص من "الأدوات" الموجهة للعودة عن طريق استبدال كل call f مع تسلسل التعليمات pushl $index ; jmp f وكل ret مع تسلسل التعليمات popl %reg ; jmp table(%reg)، حيث يمثل table جدولًا ثابتًا لجميع عناوين العودة "الشرعية" في البرنامج ويمثل index فهرسًا محددًا في هذا الجدول. :5–6يمنع هذا إنشاء أداة موجهة نحو الإرجاع والتي تعود مباشرة من نهاية وظيفة إلى عنوان عشوائي في منتصف وظيفة أخرى؛ بدلاً من ذلك، يمكن للأدوات العودة فقط إلى عناوين الإرجاع "المشروعة"، مما يزيد بشكل كبير من صعوبة إنشاء أدوات مفيدة. زعم لي وآخرون أن "تقنية الإرجاع غير المباشر التي استخدمناها تُعيد البرمجة الموجهة نحو الإرجاع إلى النمط القديم من الإرجاع إلى مكتبة libc." وقد تضمن مُجمِّع إثبات المفهوم الخاص بهم مرحلة تحسين ثقب الباب للتعامل مع "تعليمات آلية معينة تحتوي على شفرة الإرجاع في شفراتها أو متغيراتها المباشرة،" مثل movl $0xC3, %eax.
البرمجة الموجهة للعودة الدفاعات
يقدم تصميم ARMv8.3-A ميزة جديدة على مستوى الأجهزة تستفيد من البتات غير المستخدمة في مساحة عنوان المؤشر لتوقيع عناوين المؤشر تشفيريًا باستخدام تشفير كتلة قابل للتعديل مصمم خصيصًا والذي يوقع القيمة المطلوبة (عادةً، عنوان الإرجاع) جنبًا إلى جنب مع قيمة "السياق المحلي" (على سبيل المثال، مؤشر المكدس).
قبل إجراء عملية حساسة (أي العودة إلى المؤشر المحفوظ)، يمكن التحقق من التوقيع للكشف عن التلاعب أو الاستخدام في السياق غير الصحيح (على سبيل المثال، الاستفادة من عنوان العودة المحفوظ من سياق الترامبولين الاستغلالي).
من الجدير بالذكر أن شرائح Apple A12 المستخدمة في أجهزة iPhone ترقت إلى ARMv8.3 وتستخدم PACs. حصل لينكس على دعم لمصادقة المؤشر داخل النواة في الإصدار 5.7 الذي أُصدر في عام 2020؛ وأُضيف الدعم لتطبيقات مساحة المستخدم في عام 2018.
في عام 2022، نشر باحثون في معهد ماساتشوستس للتكنولوجيا هجومًا جانبيًا ضد PACs أطلقوا عليه اسم PACMAN.
يقدم تصميم ARMv8.5-A ميزة جديدة أخرى على مستوى الأجهزة تعمل على تحديد الأهداف الصالحة لتعليمات الفرع بشكل صريح. يقوم المترجم بإدراج تعليمة خاصة، رمز العملية المسمى "BTI"، في كل نقطة هبوط متوقعة لتعليمات الفرع غير المباشرة. تشتمل وجهات الفروع المحددة هذه عادةً على نقاط إدخال الوظائف وكتل رمز التبديل/الحالة.
يُستخدم تعليمات BTI في صفحات ذاكرة التعليمات البرمجية التي وضع علامة "محمية" عليها بواسطة المترجم والرابط. يؤدي أي تعليم فرعي غير مباشر يقع في صفحة محمية عند أي تعليمة أخرى غير BTI إلى حدوث خطأ.
تمثل الوجهات المحددة التي أُدرج فيها تعليمات BTI ما يقرب من 1% من جميع التعليمات في كود التطبيق المتوسط. لذلك، فإن استخدام BTI يزيد من حجم الكود بنفس المقدار.
تتواجد الأدوات التي يُستخدم في هجوم ROP في أي مكان في كود التطبيق. لذلك، في المتوسط، 99% من الأدوات تبدأ بتعليمات ليست BTI. يؤدي التفرع إلى هذه الأدوات بالتالي إلى حدوث خطأ. إذا أخذنا في الاعتبار أن هجوم ROP يتكون من سلسلة من الأدوات المتعددة، فإن احتمال أن تكون جميع الأدوات في السلسلة جزءًا من 1% التي تبدأ بـ BTI منخفض جدًا.
PAC وBTI عبارة عن آليات تكميلية لمنع حقن التعليمات البرمجية المارقة باستخدام هجمات البرمجة الموجهة للعودة والموجهة للقفز. بينما يركز PAC على مصدر عملية الفرع (مؤشر موقّع)، يركز BTI على وجهة الفرع.
فرشخة
الفرشخة هو وضع جسدي تكون فيه الرجلين في خط واحد وممتدتين في اتجاهين متعاكسين. تجرى الفرشخة في العديد من الأنشطة الرياضية، مثل الرقص والتزلج الفني على الجليد والجمباز والالتواء والسباحة الفنية والتشجيع والفنون القتالية والفنون الجوية واليوغة تمرينًا.
شبكات بالو ألتو
شركة Palo Alto Networks, Inc ، تعد شركة أمريكية متعددة الجنسيات للأمن السيبراني و يقع مقرها الرئيسي في سانتا كلارا، كاليفورنيا . المنتج الأساسي لها هو منصة تتضمن جدران حماية متقدمة وعروضًا قائمة على السحابة تمتد بتلك الجدران لتغطية جوانب أخرى من الأمان. تخدم الشركة أكثر من 70 ألف منظمة في أكثر من 150 دولة، بما في ذلك 85 من شركات Fortune 100.  وهي تضم فريق  أبحاث التهديدات التابع لوحدة 42  وتستضيف مؤتمر Ignite للأمن السيبراني .  كما إنها منظمة منظمة شريكة للمنتدى الاقتصادي العالمي .
في يونيو 2018، انضم نيكيش أرورا، التنفيذي السابق في شركتي جوجل وسوفت بنك، إلى الشركة  بصفته رئيسًا لمجلس الإدارة و الرئيس التنفيذي .
شبكات بالو ألتو تاريخ
تأسست شركة Palo Alto Networks في عام 2005 على يد نير زوك،  وهو يعد مهندس سابق في شركتي Check Point و NetScreen Technologies .  وزوك، هو من مواليد إسرائيل، بدأ العمل مع الحواسيب من خلال خدمته العسكرية الإلزامية في قوات الدفاع الإسرائيلية في أوائل التسعينيات  وشَغِلَ منصب رئيس لتطوير البرمجيات في الوحدة 8200 ، وهي فرع من فيلق الاستخبارات الإسرائيلي.
كان ظهور الشركة الأول في بورصة نيويورك في 20 يوليو 2012، و لقد جمعت 260 مليون دولار من خلال طرحها العام الأولي ،الذي كان رابع أكبر طرح عام أولي في قطاع التكنولوجيا في عام 2012.   وظلت مدرجة في بورصة نيويورك حتى أكتوبر 2021 عندما نقلت الشركة إدراجها إلى بورصة ناسداك .
شبكات بالو ألتو تاريخ
في عام 2014، أسست شركة Palo Alto Networks تحالف التهديدات السيبرانية بالتعاون مع Fortinet وMcAfee وNortonLifeLock ، وهي منظمة غير ربحية تهدف إلى تحسين الأمن السيبراني " من أجل المصلحة العامة" من خلال تشجيع مؤسسات الأمن السيبراني على التعاون عبر تبادل معلومات التهديدات السيبرانية بين الأعضاء.   وبحلول عام 2018، كان لدى المنظمة 20 عضوًا من بينهم Cisco وCheck Point وJuniper Networks و Sophos .
بدأت الشركة في عام 2018، بافتتاح مرافق تدريب الأمن السيبراني حول العالم كجزء من مبادرة النطاق السيبراني العالمي .
في مايو 2018، أعلنت الشركة عن إطار العمل التطبيقي، وهو نظام بيئي مفتوح يقدم عبر السحابة حيث يمكن للمطورين نشر خدمات أمنية كتطبيقات SaaS يمكن توصيلها للعملاء على الفور.
أعلنت الشركة في عامها 2019 ،عن سلسلة K2، وهي جدار حماية من الجيل التالي جاهز لشبكة الجيل الخامس و مطوّر لمزودي الخدمة الذين لديهم متطلبات تتعلق بالجيل الخامس وإنترنت الأشياء . [بحاجة لمصدر أفضل]في فبراير 2019، أعلنت الشركة عن Cortex، وهي منصة أمينة مستمرة تعتمد على الذكاء الاصطناعي
شبكات بالو ألتو البحث عن التهديدات
هو فريق استخبارات التهديدات و استشارات الأمنية في Palo Alto Networks. و هم مجموعة من الباحثين في مجال الأمن السيبراني وخبراء الصناعة الذين يستخدمون البيانات التي تجمعها منصة الأمان الخاصة بالشركة لاكتشاف تهديدات سيبرانية جديدة، مثل أشكال جديدة من البرامجيات الخبيثة والجهات الخبيثة التي تعمل في جميع أنحاء العالم.  يدير الفريق مدونة شهيرة حيث ينشرون فيها تقارير فنية تحلل التهديدات و الخصوم النشطين.  تم إدراج العديد من باحثي في الوحدة 42 ضمن قائمة MSRC Top 100، وهو التصنيف السنوي الذي تقوم به شركة Microsoft لأفضل 100 باحث أمني.  في أبريل 2020، اندمجت وحدة الأعمال المكونة من مجموعة Crypsis التي تقدم خدمات الطب الشرعي الرقمي والاستجابة للحوادث وتقييم المخاطر وخدمات الاستشارات الأخرى مع فريق استخبارات التهديدات في الوحدة 42.
شبكات بالو ألتو البحث عن التهديدات
وفقًا لمكتب التحقيقات الفيدرالي ، ساعد الفريق 42 في شركة Palo Alto Networks في حل العديد من قضايا الجرائم السيبرانية ، مثل قضايا Mirai Botnet وClickfraud Botnet،  وقضية LuminosityLink RAT ،   وقدم المساعدة في "عملية واير-واير".
في عام 2018، اكتشف فريق 42 Unit مجموعة القرصنة المعروفة باسم "غورغون"، التي يُعتقد أنها تعمل من باكستان وتستهدف المنظمات الحكومية في المملكة المتحدة وإسبانيا وروسيا والولايات المتحدة. تم اكتشاف المجموعة وهي ترسل رسائل تصيد موجهة  مرفقة بوثائق Microsoft Word مصابة باستخدام استغلال يُستخدام عادة من قبل المجرمين السيبرانيين وحملات التجسس الإلكتروني .
شبكات بالو ألتو البحث عن التهديدات
في سبتمبر 2018، اكتشف فريق 42 Unit برنامج Xbash، وهو برنامج فدية يقوم أيضًا بالتعدين للعملات المشفرة ، ويُعتقد أنه مرتبط بالتهديدات الصيني "Iron".  يتمتع Xbash بقدرة على الانتشار مثل الدودة و يمحو قواعد البيانات المخزنة على أجهزة الضحايا.  في أكتوبر، حذر فريق Unit 42 من برنامج خبيث جديد للتعدين للعملات المشفرة، XMRig، والذي يأتي مع تحديثات Adobe Flash المصابة. يستخدم البرنامج الخبيث موارد حاسوب الضحية للتعدين على العملة المشفرة Monero .
في نوفمبر 2018، أعلنت شركة Palo Alto Networks عن اكتشاف "Cannon"، وهو حصان طروادة يُستخدم لاستهداف الكيانات الحكومية في الولايات المتحدة وأوروبا.   يُعتقد أن القراصنة وراء البرمجيات الخبيثة هم مجموعة Fancy Bear الروسية، التي يُعتقد أنها المسؤولة عن اختراق اللجنة الوطنية الديمقراطية في عام 2016 . يتواصل البرنامج الخبيث مع خادم التحكم والقيادة الخاص به عبر البريد الإلكتروني ويستخدم التشفير لتفادي الاكتشاف.
تكرار آلة الحالة
في علوم الكمبيوتر، تكرار آلة الحالة (SMR) أو نهج آلة الحالة هو طريقة عامة لتنفيذ خدمة مقاومة للأخطاء عن طريق تكرار الخوادم وتنسيق تفاعلات العميل مع نسخ الخوادم. يوفر النهج أيضًا إطارًا لفهم وتصميم بروتوكولات إدارة التكرار.
تكرار آلة الحالة تعريف المشكلة
فيما يتعلق بالعملاء والخدمات، تتألف كل خدمة من خادم واحد أو أكثر وتصدر العمليات التي يستدعيها العملاء عن طريق تقديم الطلبات. على الرغم من أن استخدام خادم مركزي واحد هو أبسط طريقة لتنفيذ خدمة ما، إلا أن الخدمة الناتجة لا يمكن أن تكون متسامحة مع الأخطاء إلا بقدر المعالج الذي ينفذ هذا الخادم. إذا كان هذا المستوى من التسامح مع الأخطاء غير مقبول، فمن الممكن استخدام خوادم متعددة تفشل بشكل مستقل. عادةً، يُنفذ نسخ متماثلة من خادم واحد على معالجات منفصلة لنظام موزع، ويُستخدم البروتوكولات لتنسيق تفاعلات العميل مع هذه النسخ المتماثلة.
بالنسبة للمناقشة اللاحقة، سيعرف آلة الحالة على أنها مجموعة القيم التالية (انظر أيضًا آلة Mealy وآلة Moore):
تبدأ آلة الحالة عند الحالة المسماة "البدء". تُمرر كل مدخلات أُستلمت من خلال وظيفة الانتقال والإخراج لإنتاج حالة جديدة وإخراج جديد. تظل الحالة مستقرة حتى تُلقى إدخال جديد، بينما يوصل الإخراج إلى المتلقي المناسب.
تكرار آلة الحالة تعريف المشكلة
تتطلب هذه المناقشة أن تكون آلة الحالة حتمية: تبدأ نسخ متعددة من نفس آلة الحالة في حالة البدء، واستقبال نفس المدخلات بنفس الترتيب سيصل إلى نفس الحالة بعد توليد نفس المخرجات.
بشكل عام، تقوم الأنظمة التي تعتمد على تكرار آلة الحالة طواعية بتقييد تنفيذاتها لاستخدام آلات الحالة المحدودة لتبسيط استرداد الأخطاء.
إن الحتمية هي سمة مثالية لتوفير التسامح مع الأخطاء. بديهيًا، إذا كانت هناك نسخ متعددة من نظام ما، فإن الخطأ في أحدها سيكون ملحوظًا كاختلاف في الحالة أو الإخراج عن النسخ الأخرى.
الحد الأدنى لعدد النسخ المطلوبة للتسامح مع الأخطاء هو ثلاث؛ نسخة واحدة بها خطأ، واثنتان أخريان نقارن بهما الحالة والإخراج. نسختان ليست كافية لأنه لا توجد طريقة لمعرفة أي نسخة هي النسخة المعيبة.
لا يمكن لنظام النسخ الثلاث أن يتحمل فشلاً واحدًا على الأكثر (وبعد ذلك يجب إصلاح النسخة المعيبة أو استبدالها). إذا فشلت أكثر من نسخة واحدة، فقد تختلف الحالات الثلاث والمخرجات، ولن تكون هناك طريقة لاختيار النسخة الصحيحة.
تكرار آلة الحالة تعريف المشكلة
بشكل عام، يجب أن يحتوي النظام الذي يدعم حالات فشل F على نسختين F+1 (وتسمى أيضًا النسخ المتماثلة).  يُستخدم النسخ الإضافية كدليل لتحديد أي النسخ صحيحة وأيها خاطئة. يمكن للحالات الخاصة تحسين هذه الحدود.
كل هذا الاستنتاج يفترض أن النسخ المتماثلة تواجه أخطاء مستقلة عشوائية فقط مثل أخطاء الذاكرة أو تعطل القرص الصلب. يمكن أيضًا التعامل مع الأعطال الناجمة عن النسخ المتماثلة التي تحاول الكذب أو الخداع أو التواطؤ من خلال نهج آلة الحالة، من خلال التغييرات المعزولة.
لا يلزم إيقاف النسخ المتماثلة الفاشلة؛ إذ يمكنها الاستمرار في العمل، بما في ذلك إنشاء مخرجات زائفة أو غير صحيحة.
من الناحية النظرية، إذا ضُمن توقف النسخة المتماثلة الفاشلة دون توليد مخرجات، فلن تكون هناك حاجة إلا إلى نسخ F+1، ويمكن للعملاء قبول أول إخراج يُنشئ بواسطة النظام. لا يمكن لأي أنظمة موجودة تحقيق هذا الحد، ولكن غالبًا ما يُستخدم عند تحليل الأنظمة المبنية على طبقة مقاومة للأخطاء (نظرًا لأن طبقة مقاومة للأخطاء توفر دلالات التوقف والفشل لجميع الطبقات الموجودة أعلى منها).
تكرار آلة الحالة تعريف المشكلة
تسمى الأخطاء التي ترسل فيها النسخة المتماثلة قيمًا مختلفة في اتجاهات مختلفة (على سبيل المثال، الإخراج الصحيح لبعض النسخ المتماثلة الأخرى والمخرجات غير الصحيحة للآخرين) بالأعطال البيزنطية. قد تكون الإخفاقات البيزنطية أخطاء عشوائية زائفة، أو هجمات خبيثة وذكية. تعتبر النسخ المتماثلة 2F+1، ذات التجزئات غير المشفرة، كافية للبقاء على قيد الحياة في مواجهة جميع حالات الفشل البيزنطية غير الضارة (باحتمالية عالية). تتطلب الهجمات الخبيثة بدائيات تشفيرية لتحقيق 2F+1 (باستخدام توقيعات الرسائل)، أو يمكن تطبيق تقنيات غير تشفيرية ولكن يجب زيادة عدد النسخ المتماثلة إلى 3F+1.
تكرار آلة الحالة نهج آلة الدولة
تتضمن المناقشة البديهية السابقة تقنية بسيطة لتنفيذ خدمة مقاومة للأخطاء من حيث آلة الحالة:
يتناول الجزء المتبقي من هذه المقالة تفاصيل هذه التقنية.
يحتوي الملحق على مناقشة حول الامتدادات النموذجية المستخدمة في الأنظمة الواقعية مثل التسجيل ونقاط التفتيش وإعادة التكوين ونقل الحالة.
الخطوة الحاسمة في بناء نظام موزع لآلات الحالة هي اختيار ترتيب معالجة المدخلات. نظرًا لأن جميع النسخ المتماثلة غير المعيبة ستصل إلى نفس الحالة والإخراج إذا أُعطيت نفس المدخلات، فمن الضروري إرسال المدخلات بالترتيب المكافئ في كل نسخة متماثلة. وقد أُقترح العديد من الحلول في الأدبيات.
القناة المرئية هي مسار اتصال بين كيانين يشاركان بنشاط في النظام (مثل العملاء والخوادم). مثال: من العميل إلى الخادم، ومن الخادم إلى الخادم
القناة المخفية هي مسار اتصال لا يُكشف عنه للنظام. على سبيل المثال: عادةً ما تكون قنوات العميل إلى العميل مخفية؛ مثل المستخدمين الذين يتواصلون عبر الهاتف، أو عملية تكتب ملفات على القرص والتي يتم قراءتها بواسطة عملية أخرى.
تكرار آلة الحالة نهج آلة الدولة
عندما تكون جميع مسارات الاتصال عبارة عن قنوات مرئية ولا توجد قنوات مخفية، يمكن استنتاج نظام عالمي جزئي (النظام السببي) من نمط الاتصالات. من الممكن اشتقاق الترتيب السببي بشكل مستقل بواسطة كل خادم. يمكن تنفيذ المدخلات إلى آلة الحالة بالترتيب السببي، مما يضمن حالة وإخراجًا متسقين لجميع النسخ المتماثلة غير الخاطئة.
في الأنظمة المفتوحة، تعد القنوات المخفية شائعة ويجب استخدام شكل أضعف من الترتيب. من الممكن تعريف ترتيب المدخلات باستخدام بروتوكول التصويت الذي تعتمد نتائجه فقط على القنوات المرئية.
تسمى مشكلة التصويت على قيمة واحدة من قبل مجموعة من الكيانات المستقلة بالإجماع. بالتوسع، من الممكن اختيار سلسلة من القيم من خلال سلسلة من حالات الإجماع. تصبح هذه المشكلة صعبة عندما يواجه المشاركون أو وسيلة الاتصال الخاصة بهم إخفاقات.
يمكن ترتيب المدخلات حسب موقعها في سلسلة حالات الإجماع ( ترتيب الإجماع). يمكن استخلاص ترتيب الإجماع بشكل مستقل من قبل كل خادم. يمكن تنفيذ المدخلات إلى آلة الحالة بترتيب الإجماع، مما يضمن حالة وإخراجًا متسقين لجميع النسخ المتماثلة غير الخاطئة.
تكرار آلة الحالة نهج آلة الدولة
في بعض الحالات، تتوفر معلومات إضافية (مثل الساعات في الوقت الفعلي). في هذه الحالات، من الممكن تحقيق ترتيب سببي أو توافقي أكثر كفاءة للمدخلات، مع عدد أقل من الرسائل، أو جولات رسائل أقل، أو أحجام رسائل أصغر. انظر المراجع للتفاصيل
تتوفر تحسينات إضافية عند مراعاة دلالات عمليات آلة الحالة (مثل عمليات القراءة مقابل الكتابة). انظر المراجع المعممة Paxos.
تُفسر طلبات العميل كمدخلات إلى آلة الحالة، ومعالجتها إلى مخرجات بالترتيب المناسب. ستقوم كل نسخة متماثلة بإنشاء إخراج بشكل مستقل. ستنتج النسخ المتماثلة غير المعيبة دائمًا نفس الناتج. قبل أن يُرسل استجابة العميل، يجب تصفية المخرجات الخاطئة. بشكل عام، ستقوم غالبية النسخ المتماثلة بإرجاع نفس الإخراج، ويُرسل هذا الإخراج كاستجابة للعميل.
إذا لم يكن هناك أغلبية من النسخ المتماثلة بنفس الإخراج، أو إذا كان عدد النسخ المتماثلة التي أرجعت إخراجًا أقل من أغلبية، فقد حدث فشل في النظام. يجب أن تكون استجابة العميل هي الإخراج الفريد: FAIL.
تكرار آلة الحالة نهج آلة الدولة
يُطلق على الاختراق الدائم وغير المخطط له للنسخة المتماثلة اسم الفشل. من الصعب الحصول على دليل على الفشل، حيث قد تكون النسخة بطيئة في الاستجابة، أو حتى تكذب بشأن حالتها.
ستحتوي النسخ المتماثلة غير المعيبة دائمًا على نفس الحالة وتنتج نفس المخرجات. يتيح هذا الثابت اكتشاف الفشل عن طريق مقارنة الحالات والمخرجات لجميع النسخ المتماثلة. بشكل عام، يتم إعلان النسخة المتماثلة التي تختلف حالتها أو إخراجها عن غالبية النسخ المتماثلة على أنها خاطئة.
التنفيذ الشائع هو تمرير مجموعات التحقق من حالة النسخة المتماثلة الحالية والمخرجات الأخيرة بين الخوادم. تعمل عملية التدقيق في كل خادم على إعادة تشغيل النسخة المتماثلة المحلية إذا تم اكتشاف أي انحراف. لا يتطلب التحقق من صحة المبالغ المجمعة الأمان التشفيري.
من الممكن أن يكون الخادم المحلي قد تعرض للاختراق، أو أن عملية التدقيق بها خلل، وتستمر النسخة المتماثلة في العمل بشكل غير صحيح. يتم التعامل مع هذه الحالة بأمان بواسطة مرشح الإخراج الموضح سابقًا (انظر إرسال المخرجات).
تكرار آلة الحالة الملحق: الامتدادات
في نظام خالٍ من الأعطال، قد تُهمَل المُدخلات بعد معالجتها بواسطة آلة الحالة. يجب أن تُعوّض عمليات النشر الواقعية عن السلوكيات غير المُؤقتة للنظام، مثل فقدان الرسائل، وأقسام الشبكة، وبطء المُعالجات.
إحدى التقنيات هي تخزين سلسلة المدخلات في سجل. خلال فترات السلوك المؤقت، قد تطلب النسخ المتماثلة نسخًا من إدخال سجل من نسخة متماثلة أخرى لملء المدخلات المفقودة.
بشكل عام، ليس من الضروري أن يكون السجل مستمرًا (يمكن حفظه في الذاكرة). قد يعوض السجل المستمر عن فترات مؤقتة ممتدة، أو يدعم ميزات إضافية للنظام مثل نقاط التفتيش وإعادة التكوين.
إذا تركت دون تحديد، فسوف ينمو السجل حتى يستنفد جميع موارد التخزين المتاحة. للاستمرار في التشغيل، من الضروري نسيان إدخالات السجل. بشكل عام، قد يُنسى إدخال السجل عندما تصبح محتوياته غير ذات صلة (على سبيل المثال، إذا قامت جميع النسخ المتماثلة بمعالجة إدخال، فلن تكون هناك حاجة إلى معرفة الإدخال).
تكرار آلة الحالة الملحق: الامتدادات
إحدى التقنيات الشائعة للتحكم في حجم السجل هي تخزين حالة مكررة (تسمى نقطة تفتيش)، ثم تجاهل أي إدخالات سجل ساهمت في نقطة التفتيش. يؤدي هذا إلى توفير المساحة عندما تكون الحالة المكررة أصغر من حجم السجل.
من الممكن إضافة نقاط تفتيش إلى أي آلة حالة من خلال دعم إدخال إضافي يسمى CHECKPOINT. تحتفظ كل نسخة متماثلة بنقطة تفتيش بالإضافة إلى قيمة الحالة الحالية. عندما يصبح السجل كبيرًا، تقوم النسخة المتماثلة بإرسال أمر CHECKPOINT تمامًا مثل طلب العميل. سيضمن النظام أن تقوم النسخ المتماثلة غير المعيبة بمعالجة هذا الأمر بنفس الترتيب، وبعد ذلك قد يُتجاهل جميع إدخالات السجل قبل نقطة التفتيش.
في نظام يحتوي على نقاط تفتيش، يُتجاهل طلبات إدخالات السجل التي تحدث قبل نقطة التفتيش. تعتبر النسخ المتماثلة التي لا يمكنها تحديد موقع نسخ من إدخال السجل المطلوب معيبة ويجب إعادة الانضمام إلى النظام (راجع إعادة التكوين).