اكتمال تورينج غير متوقع في كل مكان

كتالوج من بنيات البرمجيات واللغات وواجهات برمجة التطبيقات التي تم اكتشافها بشكل غير متوقع. آثار هذا على السلامة والموثوقية. التطبيق: كم عدد أجهزة الكمبيوتر في جهاز الكمبيوتر الخاص بك؟

يحتوي أي برنامج C أو فورتران معقد إلى حد ما على تطبيق مكتوب حديثًا وغير محدد وبوغاتي وبطيء لنصف اللغة المشتركة Lisp . - قاعدة جرينسبان العاشرة

Turing الاكتمال (TC) هي خاصية للنظام لتنفيذ أي وظيفة محسوبة مع بعض التمثيل البسيط للمدخلات والمخرجات.

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

يمكن أيضًا أن تؤدي لغات البرمجة القوية جدًا إلى هجمات DoS غير سارة. وجد Fazzer afl مثل هذه الخدعة في OpenBSD أنها قادرة على توليد حلقة لا نهائية ، وإساءة استخدام بعض قواعد استبدال السلسلة.

ربما ، من الأفضل اعتبار هذه الأمثلة غير المتوقعة لأنظمة تورينج كاملة كمجموعة فرعية من لغات البرمجة الباطنية "المكتشفة" أو "الموجودة". لذا فإن FRACTRAN البسيط للغاية لا يعتبر 2 ، بالإضافة إلى اللغة المشوشة بشكل خاص Malbolge (حيث ستستغرق كتابة برنامج تافه سنوات) ، لأنها مصممة خصيصًا للغة الباطنية YaP. أيضًا ، لم يتم تضمين لعبة Life في مجموعتنا الفرعية ، لأن الأسئلة حول اكتمال تورينج ظهرت فور إصدارها ، ولم يكن التعرف على تورينج الكامل بمثابة مفاجأة. وبالنظر إلى تعقيد الشبكات مع التوجيه وتحويل الحزم ، فإنه ليس من المستغرب أن يمكن بناء أوتوماتيكية خلوية على هذه الشبكات أو مخططات المنطق ، وأن تخطيط / التحقق من تذاكر الطيران ليس فقط مهمة NP صعبة بل وحتى EXPSPACE صعبة ، ولكنها غير قابلة للحل تمامًا (بسبب قواعد طيران معقدة).

العديد من التكوينات أو اللغات الخاصة أو الأدوات أو الألعاب المعقدة ، كما اتضح ، تنتهك قاعدة أقل قوة و "تصبح Turing Complete كاملة دون قصد" ، مثل MediaWiki أو قوالب sed أو أوامر regexp / find-replace المتكررة في المحرر. بشكل عام ، أي شكل من أشكال استبدال الخط أو التشكيل ، أو التجميع على الفور مع احتمال كبير هو نظام Turing-Complete نفسه أو عند تكراره ، حيث غالبًا ما يدعم حساب التفاضل والتكامل لامدا أو إعادة كتابة مصطلحات اللغة أو التسمية ، على سبيل المثال ، اللغات الباطنية " /// " أو خميس .

XSLT ، كاسحة الألغام اللانهائية ، قلعة القزم 3 ، Starcraft ، Minecraft ، Ant ، Transport Tycoon ، قوالب C ++ وتعميمات Java ، حسابات DNA وما إلى ذلك - كل هذه أنظمة كاملة من Turing ، وهذا ليس مفاجئًا أيضًا. تدعم العديد من الألعاب البرامج النصية لتبسيط التطوير والتعديلات المخصصة. لذلك ، لجعل لعبة Turing-Complete الابتدائية: ما عليك سوى تشغيل بناء الجملة لاستدعاء لغات أكثر شهرة مثل Perl.

قد يكون اكتساب الكمال جزءًا غير معروف من التنسيق القياسي. ربما ، في عصرنا ، لا يعرف الكثير أن TrueType والعديد من الخطوط هي برامج PostScript على الأجهزة المكدسة ، على غرار بيانات تعريف ELF ومعلومات تصحيح DWARF . أو أن بعض تنسيقات الموسيقى تتجاوز MIDI ، وتدعم البرامج النصية وتحتاج إلى تفسير. إذا كنت تعرف عن اكتمال Turing للخطوط ، فإن اكتمال Turing للوثائق TeX ليس مفاجئًا ، والذي يسبب بطبيعة الحال العديد من نقاط الضعف الأمنية الخطيرة والمثيرة للاهتمام في الخطوط والوسائط ، مثل BLEND أو Linux SNES و NES استغلال. في تنسيقات أخرى مثل PDF ، هناك قدر هائل من الثغرات 4 . مرة أخرى ، الإنجازات البارزة مثل إنشاء آلة Turing صغيرة من كتل Lego أو الدومينو 5 لا تؤخذ في الاعتبار ، لأننا نعرف منذ فترة طويلة كيفية عمل أجهزة الكمبيوتر الميكانيكية.

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


ربما تكون الأنظمة التالية غير مقصودة تمامًا عن طريق الخطأ:

  • CSS بدون نقرات
  • SVG: PostScript هو TC حسب التصميم ، ولكن ماذا عن تنسيق SVG المتجهات الأكثر حداثة ، والذي تتم كتابته بتنسيق XML ، أي بلغة مستند (عادةً) لا تكتمل تورنج؟ يبدو أنه بالاشتراك مع XSLT قد يكون الأمر كذلك ، ولكن لم أجد أي دليل أو عرض على ذلك في السياق المعتاد لمتصفح الويب. معيار SVG رائع وأحيانًا مرعب: حاول إصدار غير ناجح من معيار SVG 1.2 إضافة القدرة على فتح مقابس الشبكة في صور SVG.
  • Unicode : يقترح نيكولاس سيريوت أن خوارزميات Unicode ثنائية الاتجاه (المصممة لعرض البرامج النصية من اليمين إلى اليسار ، مثل العربية أو العبرية) يمكن أن تكون معقدة بما يكفي لدعم نظام العلامات من خلال القواعد الحساسة لحالة الأحرف (على سبيل المثال ، التركية)

انظر أيضًا



المراجع



التطبيق


كم عدد أجهزة الكمبيوتر في جهاز الكمبيوتر الخاص بك؟


يتورط البعض في نزاعات حول السيارات الغريبة أو حول مدى "حجم" وكيل الذكاء الاصطناعي: سيتم إنشاء واحدة أو اثنتين أو عشرة أو الملايين. لا يهم ، لأن هذه مجرد مسألة تنظيمية. في الواقع ، تعتبر مدخلات ومخرجات النظام مهمة: ما مدى كفاءة النظام ككل وما هي الموارد التي يستهلكها؟ لا أحد يهتم إذا كانت Google تعمل على 50 جهاز كمبيوتر فائق ، أو 50000 حاسب مركزي ، أو 5 ملايين خادم ، أو 50 مليون معالج مدمج / محمول ، أو مزيج من كل ما سبق . لا يهم أن تستخدم Google مجموعة متنوعة من الرقائق: من "معالجات الموتر" ذاتية الصنع إلى معالجات السليكون الفريدة (تبيعها Intel على الرقائق لمعالجات Xeon لعدد من العملاء الرئيسيين) ، FPGA ، GPU ، وحدة المعالجة المركزية ، إلى معدات أكثر غرابة مثل أجهزة الكمبيوتر الكمومية D-Wave . من المهم فقط أن تظل قادرة على المنافسة ويمكن أن تقدم خدمات مقابل رسوم معتدلة. في النهاية ، يبدو الكمبيوتر العملاق اليوم عادةً مثل عدد كبير من خوادم الحامل مع كمية هائلة من وحدات معالجة الرسومات واتصالات InfiniBand عالية السرعة بشكل غير عادي. أي أن الكمبيوتر العملاق لا يختلف كثيرًا عن مركز البيانات ، كما قد تعتقد. يمكن لأي من المعدات المدرجة أن تدعم العديد من الآلات الغريبة ، اعتمادًا على الديناميكيات الداخلية والاتصال.

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

فيما يلي مثال لسؤال غير محدد بدقة: كم عدد أجهزة الكمبيوتر لديك في جيوبك وعلى مكتبك الآن؟ كم عدد الحواسيب الموجودة في "حاسوبك"؟ فكر في واحد فقط؟ دعونا نلقي نظرة فاحصة.

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

لذلك:

  • في معالج Intel التقليدي ، تؤدي مليارات الترانزستورات العديد من المهام:

    • كل من نوى المعالج الرئيسية 2-8 قادرة على العمل بشكل مستقل ، وتشغيلها وإيقافها حسب الضرورة ، ولديها ذاكرة تخزين مؤقت خاصة بها (أكبر من ذاكرة الوصول العشوائي في معظم أجهزة الكمبيوتر حتى وقت قريب) ، ويجب اعتبارها جهاز كمبيوتر مستقل.
    • تتم إعادة برمجة وحدة المعالجة المركزية ككل عبر الرمز الصغير ، على سبيل المثال ، للقضاء على أخطاء تصميم الشريحة ، وتتفاخر الكائنات بشكل متزايد معتمًا مثل Intel Management Engine (مع JVM للبرمجة ؛ Rouen ، 2014 و SGX ) أو AMD's Platform Security Processor (PSP) ، أو Android TEE وحدات الأجهزة هذه ، كقاعدة عامة ، هي أجهزة كمبيوتر كاملة في حد ذاتها ، وتعمل بشكل مستقل عن المضيف ، وقد تتداخل مع تشغيلها.
    • يمكن لأي FPU أن يصبح نظام Turing-Complete من خلال التشفير في عمليات النقطة العائمة بروح FRACTRAN.
  • يمكن برمجة وحدة معالجة الوسائط (MMU) في جهاز خطأ صفحة غريب ، كما ذكر أعلاه.
  • كتل DSP ، رقائق مخصصة. على الأرجح ، لن تكون ASICs لتنسيقات الفيديو مثل h.264 أنظمة مكتملة (على الرغم من دعم الدلتا المعقدة وأساليب الضغط التي يمكن أن تسمح بشيء مثل بلاط Van). لكن شركة SoC للهاتف المحمول Apple A9 تتجاوز بكثير معالج ARM ثنائي النواة المعتاد مع وحدة معالجة رسومات مدمجة. مثل رقائق سطح المكتب من Intel أو AMD ، تتضمن بيئة آمنة تسمى Secure Enclave (نوى المعالج المخصصة فعليًا) ، ولكنها تحتوي أيضًا على معالج مشترك للصور ومعالج للتعرف على الصوت (جزئيًا لدعم Siri) ، وعلى ما يبدو ، العديد من النوى الأخرى. توجد ASICs هذه أحيانًا لمهام الذكاء الاصطناعي ، وعلى ما يبدو ، تتخصص في مضاعفات المصفوفة للشبكات العصبية ، وبما أن الشبكات العصبية المتكررة تكتمل تورينج ، فأنت تعرف نفسك. كما سارعت Motorola و Qualcomm وشركات أخرى لتوسيع SoC.
  • BIOS اللوحة الأم و / أو رقائق التحكم في الوصول إلى الشبكة.

    • يلاحظ مارك إرمولوف :

      "إنه لأمر مدهش عدد النوى غير المتجانسة من المعالج المدمجة في Intel Silvermont Moorefield SoC (ANN): x86 ، ARC ، LMT ، 8051 ، Audio DSP ، لكل منها برامجها الثابتة ودعم واجهة JTAG

    يمكن أن تظل رقائق التحكم أو تصحيح الأخطاء هذه "غير مقصودة" نشطة على الأجهزة بعد البيع ، مثل ARM المدمج في وحدة المعالجة المركزية عبر C3 .
  • يحتوي GPU على عدة مئات أو آلاف من النوى البسيطة ، يعمل كل منها بشكل جيد جدًا مع الشبكات العصبية أو يقوم بإجراء حسابات للأغراض العامة (وإن كان أبطأ من المعالج).
  • عادةً ما يتم تشغيل وحدات التحكم في الأشرطة والقرص الصلب ومحرك أقراص فلاش ومحركات أقراص الحالة الثابتة على معالجات ARM لتشغيل أدوات مساعدة مضمنة لمهام مثل إخفاء القطاعات التالفة من نظام التشغيل. يمكن اختراقهم. ولكن يتم استخدام معالجات ARM في معظم التطبيقات المضمنة ، لذلك يحب ARM أن يتباهى بأن "الهاتف الذكي الحديث يحتوي على 8 إلى 14 معالج ARM ، أحدهم هو معالج تطبيق (يعمل بنظام Android أو iOS) ، والآخر هو معالج لمكدس نطاق التردد (مكدس القاعدي) " .
  • تقوم رقائق الشبكة بمعالجة مستقلة لـ DMA (بفضل وظائف الاستقلالية مثل Wake-on-LAN لأعمال netboot ).
  • الهواتف الذكية: بالإضافة إلى جميع الكتل المذكورة ، هناك أيضًا معالج نطاق أساسي مستقل يعمل تحت نظام التشغيل الخاص به في الوقت الفعلي لمعالجة الاتصالات مع الأبراج الخلوية / GPS / إلخ. أو حتى أكثر من واحد إذا كنت تستخدم المحاكاة الافتراضية مثل L4 . تم الكشف عن الأبواب الخلفية بالفعل في معالجات النطاق الأساسي ، بالإضافة إلى نقاط الضعف الأخرى.
  • بطاقات SIM للهواتف الذكية هي أكثر بكثير من مجرد بطاقات ذاكرة مع تسجيل بيانات المشترك الخاصة بك. هذه هي البطاقات الذكية التي يمكنها تشغيل تطبيقات Java Card بشكل مستقل (ربما رقائق NFC أيضًا). انها مثل JVM في IME. بطبيعة الحال ، يمكن اختراق بطاقات SIM واستخدامها للمراقبة ، إلخ.
  • يمكن تجهيز الأجهزة المتصلة عبر USB أو باللوحة الأم بمعالجات خاصة بها. على سبيل المثال ، محولات WiFi ولوحات المفاتيح والفئران ، إلخ. نظريًا ، يتم عزل معظمها من التداخل المباشر مع المضيف من خلال DMA و IOMMU ، ولكن الشيطان يكمن في التفاصيل ...
  • رقائق غريبة عشوائية مثل MacBook Touch تعمل بنظام WatchOS .
  • ...

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

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

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



1. — , - (. ). , ? , . لذلك ، إذا كان TC مسموحًا به ، فإننا نفقد جميع خصائص الإثبات الممكنة. على العكس من ذلك ، يمكن إثبات العديد من الأشياء المفيدة بسهولة بلغة تورينج غير مكتملة: على سبيل المثال ، أن البرنامج كامل أو آمن من النوع أم لا ، وأنه من السهل التحويل إلى نظرية منطقية ، وأنه يستهلك كمية محدودة من الموارد ، وأن تنفيذ البروتوكول صحيح أو معادل لتطبيق آخر. من السهل إثبات عدم وجود آثار جانبية وأنه يمكن تحويل البرنامج إلى مكافئ منطقي ، ولكن خيار أسرع (هذا مهم بشكل خاص للغات التصريحية مثل SQL ، حيث تكون قدرة المحسن على تحويل الاستعلامات هي مفتاح الأداء المقبول. على الرغم من ، بالطبع ، يمكن تنفيذ أشياء مذهلة باستخدام SQL ، مثلنزول التدرج لنماذج التعلم الآلي ، وبعض امتدادات SQL تجعلها كاملة على أي حال ، مما يسمح لك إما بتشفير نظام حلقة ، أو modelDSL ، أو استدعاء PL / SQL ، إلخ.

إليكم بعض المؤلفات عن السيارات الغريبة:




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

3. يوفر Dwarf Fortress العمل على مدار الساعة ، لذا فإن اكتمال تورينج ليس مفاجئًا. ولكن يتم تنفيذ الماء أيضًا كآلية خلوية بسيطة ، لذلك هناك المزيد من الطرق للحصول على اكتمال! الآن ، تسمي ويكي اللعبة أربع طرق محتملة لإنشاء بوابات منطقية: السوائل وآليات عمل الساعة وعربات المنجم وبوابات منطق المخلوق / الحيوان مع أبواب وأجهزة استشعار الضغط.

4. يتم تضخيم مواصفات PDF الكاملة بشكل استثنائي. على سبيل المثال ، في عارض PDF بسيط يدعم ما يكفي من مواصفات PDF ، مثل متصفح Google Chrome ، يمكنك تشغيل Breakout (لأن PDF يتضمن مجموعة فرعية فرعية غريبة من JavaScript). يدعم عارض Adobe PDF الرسمي الوظائف حتى CAD ثلاثي الأبعاد.

5. انظر البوابات المنطقية الدومينو على Think Math وعرض توضيحي لأداة الدومينو المفصل 4 بت .

Source: https://habr.com/ru/post/ar429602/


All Articles