المؤلفون: براتيك ، روشان ، سيدهارثا ولينجويني (Marlin) ، كرين (Asula) المترجم: Shew ، GodRealmX
منذ إعلان Apple عن السحابة الخاصة وتوفير NVIDIA للحوسبة السرية في وحدة تحكم المعالجة الرسومية (GPU) ، أصبحت بيئات التنفيذ الموثوقة (TEE) أكثر شيوعًا. يساعد ضمان السرية على حماية بيانات المستخدم (التي قد تتضمن المفتاح الخاص) ، بينما يضمن العزلة أن تنفيذ البرامج التي يتم نشرها عليه لا يتم تلاعبه - سواء من قبل البشر أو برامج أو أنظمة التشغيل. لذلك ، فإن استخدام TEE بشكل كبير في بناء المنتجات في مجال Crypto x AI ليس أمرًا غريبًا.
كما هو الحال مع أي تكنولوجيا جديدة ، يمر TEE بفترة تجريبية متفائلة. يهدف هذا المقال إلى توفير دليل مفاهيمي أساسي للمطورين والقراء العامين لمساعدتهم على فهم ما هو TEE ، نموذج أمان TEE ، الثغرات الشائعة وأفضل الممارسات الأمنية لاستخدام TEE. (* ملاحظة: من أجل جعل النص سهل الفهم ، قمنا بعمد استبدال مصطلحات TEE بكلمات مكافئة أبسط).
ما هو TEE
TEE هو بيئة عزل للمعالج أو مركز البيانات حيث يمكن تشغيل البرامج فيه دون أي تدخل من بقية أجزاء النظام. من أجل تجنب تدخل الأجزاء الأخرى في TEE ، نحتاج إلى سلسلة من التصميمات ، بما في ذلك التحكم الصارم في الوصول ، أي التحكم في وصول أجزاء النظام الأخرى إلى البرامج والبيانات الداخلة في TEE. حاليًا ، TEE متوفر في الهواتف المحمولة والخوادم وأجهزة الكمبيوتر الشخصية والبيئة السحابية في كل مكان ، وبالتالي يمكن الوصول إليه بسهولة وبسعر معقول.
قد يبدو محتوى أعلاه غامضًا ومجردًا في الواقع، طرق تنفيذ TEE مختلفة بين الخوادم ومزودي الخدمات السحابية، ولكن الهدف الأساسي هو تجنب تدخل برامج أخرى في TEE.
معظم القراء قد يستخدمون معلومات التعرف على الكائنات الحية لتسجيل الدخول إلى الأجهزة، مثل فتح الهاتف ببصمة الإصبع. ولكن كيف نضمن أن التطبيقات الضارة أو المواقع الإلكترونية أو أنظمة التشغيل المكركة لا يمكنها الوصول إلى هذه المعلومات وسرقتها؟ في الواقع، بالإضافة إلى تشفير البيانات، لا تسمح الدوائر في أجهزة TEE بأن يصل أي برنامج إلى منطقة الذاكرة والمعالج التي تحتوي على البيانات الحساسة.
محفظة الأجهزة هي مثال آخر لسيناريوهات تطبيق TEE. تتصل محفظة الأجهزة بالكمبيوتر وتتواصل معه في بيئة معزولة، ولكن الكمبيوتر غير قادر على الوصول مباشرة إلى عبارة التذكير المخزنة في محفظة الأجهزة. في كلا الحالتين، يثق المستخدمون في قدرة مصنعي الأجهزة على تصميم الشرائح بشكل صحيح وتوفير التحديثات الثابتة المناسبة لمنع تصدير أو عرض البيانات السرية داخل TEE.
نموذج الأمان
للأسف، هناك العديد من أنواع تنفيذ TEE، وهذه التنفيذات المختلفة (Intel SGX، Intel TDX، AMD SEV، AWS Nitro Enclaves، ARM TrustZone) تتطلب جميعها نمذجة تحليل أمنية مستقلة. في بقية هذه المقالة، سنناقش بشكل رئيسي Intel SGX و TDX و AWS Nitro، لأن هذه الأنظمة TEE لديها عدد أكبر من المستخدمين وتتوفر لديها أدوات تطوير كاملة. وهذه الأنظمة المذكورة أعلاه هي أيضًا الأنظمة TEE الأكثر استخداما في Web3.
بشكل عام، يتبع تدفق عمل التطبيق المستحدث في TEE التالي:
واضح أن هناك 3 مخاطر محتملة:
من السعيد أن TEE لديها الآن حلاً للتخلص من المخاطر المذكورة أعلاه، وهو إعادة بناء مستدام وإثبات عن بعد.
فما هو البناء المتكرر؟ غالبًا ما يتطلب تطوير البرمجيات الحديث استيراد العديد من الاعتمادات ، مثل الأدوات الخارجية والمكتبات والأطر الخ. قد تكون هناك مشكلات محتملة في هذه الملفات الاعتماد. تستخدم حلول مثل npm الآن هاش الكود المقابل لملف الاعتماد كمعرف فريد. عندما يكتشف npm أن ملف الاعتماد لا يتطابق مع القيمة المقابلة للهاش المسجل ، يعتبر أن هذا الملف تم تعديله.
ويمكن اعتبار البناء المتكرر مجموعة من المعايير ، والهدف هو أنه عند تشغيل أي كود على أي جهاز ، يمكن الحصول في النهاية على قيمة تجزئة متسقة طالما يتم البناء وفقًا للإجراءات المحددة مسبقًا. بالطبع ، يمكننا أيضًا في التطبيق العملي استخدام منتجات خارجية للتجزئة كمعرف. نشير إليها هنا باسم قياس الكود(code measurement).
Nix هي أداة شائعة للإنشاءات القابلة للتكرار. عندما يتم الكشف عن الكود المصدري للبرنامج ، يمكن لأي شخص فحص الكود للتأكد من أن المطور لم يقم بإدراج أي شيء غير عادي ، ويمكن لأي شخص إنشاء الكود باستخدام Nix للتحقق مما إذا كان المنتج المدمج يحتوي على نفس مقاييس / تجزئة الكود مثل المنتج الذي نشره فريق المشروع في الإنتاج. ولكن كيف نعرف مقاييس الكود لبرنامج في TEE؟ هذا يقودنا إلى مفهوم يسمى “إثبات عن بعد”. **
الدليل عن بُعد هو رسالة توقيع من منصة TEE (الجهة الموثوق بها) تحتوي على قيمة قياسية لكود البرنامج وإصدار منصة TEE وما إلى ذلك. يتيح الدليل عن بُعد للمراقبين الخارجيين معرفة أن برنامجًا ما يُنفذ في مكان آمن لا يمكن لأي شخص الوصول إليه (TEE الحقيقي للإصدار xx).
يجعل البناء المتكرر والبرهان عن بعد من الممكن لأي مستخدم معرفة الشفرة الفعلية التي تعمل داخل TEE ومعلومات إصدار TEE ، وبالتالي يمنع المطورين أو الخوادم الشريرة.
ومع ذلك، في حالة TEE، من الضروري دائمًا الاعتماد على مورد الخدمة. إذا قام مورد TEE بالقيام بأعمال شريرة، فيمكنه مباشرة تزوير البرهان البعيد. لذلك، إذا تم اعتبار المورد كوسيط هجوم محتمل، يجب تجنب الاعتماد فقط على TEE، والأفضل دمجها مع ZK أو بروتوكول الاتفاق.
سحر TEE
في رأينا، تُعتبر TEE محبوبة بشكل خاص بسبب السمات التالية، وخصوصًا بالنسبة إلى ودية نشر وكيل الذكاء الاصطناعي:
بغض النظر عن جودتها ، فإن العديد من حالات استخدام TEE في الوقت الحالي من الصعب العثور على بدائل. نحن نعتقد أن إدخال TEE يوسع مزيداً من مساحة تطوير تطبيقات السلسلة الجانبية، وهذا قد يعزز ظهور سيناريوهات تطبيق جديدة.
TEE ليس رصاصة فضية
البرامج التي تعمل في TEE لا تزال عرضة لسلسلة من الهجمات والأخطاء. تشابه الأمر مع العقود الذكية ، فهي تواجه مجموعة من المشاكل بسهولة. لأسباب بسيطة ، سنصنف الثغرات المحتملة على النحو التالي:
خطأ من المطورين
سواء كان ذلك عمدًا أم غير عمد، يمكن لمطوري البرامج تضعيف ضمانات أمان TEE من خلال التعمد أو عدم التعمد. يتضمن ذلك:
ثغرة زمن التشغيل
قد يصبح المطورون ، على الرغم من حذرهم ، ضحايا الثغرات أثناء التشغيل. يجب على المطورين التفكير بعناية ما إذا كان أي من هذه العوامل سيؤثر على ضمان أمان مشروعهم:
على سبيل المثال، يمكن تشغيل محرك المطابقة الذي يمكنه التعامل مع المعاملات المشفرة في TEE، وهذا المحرك غير قادر على توفير ضمان ترتيب عادل (مكافحة MEV)، لأنه لا يزال بإمكان الموجه/البوابة/المضيف التخلص من الحزم البيانات التي تأتي من عنوان IP المصدر أو تأخيرها أو منحها الأولوية وفقا لذلك.
عيوب في التصميم
يجب أن يكون استخدام تقنية الكتف بحذر من قبل تطبيق TEE. قد تواجه مشاكل التالية عند بناء تطبيق TEE:
مشكلة التشغيل
وأما آخر نقطة ولكنها ليست الأقل أهمية هي أنه هناك بعض الاعتبارات العملية بشأن كيفية تشغيل خادم ينفذ برنامج TEE بشكل فعلي:
بناء برنامج TEE آمن
سنقسم اقتراحاتنا إلى النقاط التالية:
1. أكثر حل آمن: بدون تبعيات خارجية
قد ينطوي إنشاء تطبيق آمن للغاية على القضاء على الاعتمادات الخارجية مثل الإدخالات الخارجية وواجهات برمجة التطبيقات أو الخدمات ، وبالتالي تقليل سطح الهجوم. يمكن أن يضمن هذا الأسلوب تشغيل التطبيق بشكل مستقل ، دون أي تفاعل خارجي يمكن أن يضر بسلامة أو أمان التطبيق. على الرغم من أن هذا الاستراتيجية قد تقيد تنوع وظائف البرنامج ، إلا أنها يمكن أن توفر أمانًا عاليًا جدًا.
إذا تم تشغيل النموذج محليًا ، يمكن تحقيق هذا المستوى من الأمان لمعظم حالات استخدام CryptoxAI.
2. إجراءات الوقاية اللازمة
بغض النظر عما إذا كان التطبيق لديه تبعيات خارجية، فإن الأمور التالية ضرورية!
اعتبار تطبيقات TEE على أنها عقود ذكية بدلاً من تطبيقات الخلفية؛ والحفاظ على تردد تحديث منخفض واختبار صارم.
يجب أن يكون بناء برامج TEE متشددًا مثل كتابة واختبار وتحديث العقود الذكية. مثل العقود الذكية، يعمل TEE في بيئة حساسة للغاية وغير قابلة للتلاعب، حيث يمكن أن تؤدي الأخطاء أو السلوك غير المتوقع إلى عواقب خطيرة، بما في ذلك فقدان الأموال تمامًا. التدقيق الشامل والاختبار الشامل وأقل تحديث ممكن واختباره بعناية ضروري لضمان سلامة وموثوقية تطبيقات TEE.
فحص رمز التدقيق وفحص أنابيب البناء
أمان التطبيق لا يعتمد فقط على الرمز نفسه، ولكن أيضًا على الأدوات المستخدمة في عملية البناء. يعد خط أنابيب البناء الآمن حاسمًا لمنع الثغرات. لا يمكن لـ TEE إصلاح العيوب التي تم إدخالها خلال عملية البناء، ولكنه يضمن فقط تشغيل الرمز المزود وفقًا للعملية المتوقعة.
لتقليل المخاطر ، يجب إجراء اختبارات وتدقيق صارم للشفرة للتخلص من الأخطاء ومنع تسرب المعلومات غير الضرورية. بالإضافة إلى ذلك ، يلعب البناء قابل للتكرار دورًا حيويًا ، خاصةً عندما يتم تطوير الشفرة من قبل جهة واحدة واستخدامها من قبل جهة أخرى. يسمح البناء القابل للتكرار لأي شخص بالتحقق مما إذا كان البرنامج المنفذ داخل وحدة التشغيل الآمنة مطابقًا للشفرة المصدر الأصلية ، مما يضمن الشفافية والثقة. إذا لم يكن هناك بناء قابل للتكرار ، فإن تحديد محتوى البرنامج المنفذ داخل وحدة التشغيل الآمنة يكاد يكون مستحيلاً ، مما يعرض أمان التطبيق.
على سبيل المثال، فإن الشفرة المصدرية لمشروع DeepWorm (الذي يشغل نموذج دماغ الدودة في TEE) مفتوحة بشكل كامل. تم بناء برنامج التنفيذ داخل TEE باستخدام أنابيب Nix بطريقة يمكن إعادة إنتاجها.
استخدم مكتبات تم التدقيق فيها أو التحقق منها
عند معالجة البيانات الحساسة في برنامج TEE، يرجى استخدام المكتبة المدققة في إدارة المفاتيح ومعالجة البيانات الخاصة. قد تؤدي المكتبة غير المدققة إلى تعريض المفاتيح وتضر بأمان التطبيق. يجب الأخذ في الاعتبار الاعتمادات الموثوقة والتي تركز على الأمان والتي تمت مراجعتها بشكل كامل للحفاظ على سرية وسلامة البيانات.
التحقق الدائم من دليل TEE
يجب على مستخدمي TEE التفاعل مع تحقق البرهان البعيد الذي تم إنشاءه من قبل TEE أو آلية التحقق، لضمان تفاعل آمن وموثوق. بدون هذه الفحوصات، قد يقوم الخادم بتلاعب الإجابة، مما يجعل من الصعب التمييز بين إخراج TEE الحقيقي والبيانات المعدلة. يوفر البرهان البعيد برهانًا أساسيًا للمكتبة والتكوين التي تعمل في TEE، ويمكننا استنتاج مدى توافق البرنامج الذي تم تنفيذه داخل TEE مع المتوقع بناءً على البرهان البعيد.
يمكن أن يتم التحقق بشكل محدد على السلسلة (IntelSGX، AWSNitro) ، واستخدام إثبات ZK (IntelSGX، AWSNitro) للتحقق دون سلسلة ، كما يمكن للمستخدمين أو الخدمات المستضافة (مثل t16z أو MarlinHub) تنفيذ التحقق.
3. توصيات تعتمد على الحالة
وفقًا لحالة استخدام وبنية التطبيق الخاص بك ، قد تساعدك النصائح التالية على جعل تطبيقك أكثر أمانًا.
التأكد دائمًا من تنفيذ تفاعل المستخدم مع TEE في القناة الآمنة
خادم TEE في الأساس غير موثوق به. يمكن للخادم اعتراض وتعديل الاتصالات. في بعض الحالات، قد يكون من المقبول أن يقرأ الخادم البيانات دون تغييرها، في حين أنه في حالات أخرى قد لا يكون قراءة البيانات حتى هي مقبولة. من أجل تقليل هذه المخاطر، من الضروري إنشاء قناة تشفير نهاية إلى نهاية آمنة بين المستخدم و TEE. يرجى التأكد على الأقل من أن الرسالة تتضمن توقيعًا للتحقق من صحتها ومصدرها. بالإضافة إلى ذلك، يجب على المستخدمين التحقق دائمًا من إثبات البعد البعيد الذي يتم تقديمه من قبل TEE للتحقق من ما إذا كانوا يتواصلون مع TEE الصحيح. هذا يضمن سلامة الاتصال وسرية المعلومات.
على سبيل المثال ، يمكن لـ Oyster دعم توزيع توقيع الطبقة الأمنية (CAA) و RFC8657 للحصول على توزيع TLS الآمن. بالإضافة إلى ذلك ، يوفر بروتوكول Scallop الأصلي لـ TEE TLS ، والذي لا يعتمد على WebPKI.
تعلم أن ذاكرة TEE هي عابرة
ذاكرة TEE هي عابرة للزمن، وهذا يعني أنه عند إغلاق TEE، سيتم فقدان محتواها (بما في ذلك المفاتيح التشفيرية). إذا لم يكن هناك آلية آمنة للحفاظ على هذه المعلومات، فقد يتعذر الوصول إلى البيانات الحساسة بشكل دائم، مما قد يؤدي إلى تعرض الأموال أو العمليات التشغيلية لمشكلات خطيرة.
يمكن استخدام شبكة الحساب العددي المتعدد (MPC) التي تحتوي على نظام تخزين مركزي مثل IPFS كحلا لهذه المشكلة. تقوم شبكة MPC بتقسيم المفتاح إلى عدة عقد، مما يضمن عدم امتلاك أي عقد فردي للمفتاح الكامل، مع السماح في الوقت نفسه للشبكة بإعادة بناء المفتاح عند الحاجة. يمكن تخزين البيانات المشفرة بهذا المفتاح بشكل آمن على IPFS.
إذا لزم الأمر ، يمكن لشبكة MPC توفير المفاتيح لخادم TEE الجديد الذي يعمل بنفس الصورة ، شريطة توفير شروط محددة. يمكن أن يضمن هذا الأسلوب المرونة والأمان القوي ، بحيث يمكن الوصول إلى البيانات والحفاظ على خصوصيتها حتى في بيئات غير موثوقة.
هناك حلاً آخر، ** وهو أن يقوم TEE بتقسيم المعاملات ذات الصلة وتسليمها إلى خوادم MPC مختلفة، ثم يقوم خوادم MPC بالتوقيع وتجميع التوقيعات وتقديم المعاملات النهائية للسلسلة. هذا الطريقة أقل مرونة بكثير، ولا يمكن استخدامها لحفظ مفتاح API أو كلمة مرور أو بيانات عشوائية (بدون خدمة تخزين ثالثة موثوقة).**
تقليل سطح الهجوم
بالنسبة لحالات الاستخدام الحرجة من حيث الأمان ، يستحق المحاولة للحد من الاعتمادات الخارجية بأقصى قدر ممكن على حساب تجربة المطور. على سبيل المثال ، يأتي Dstack مع نواة دقيقة على أساس Yocto والتي تحتوي فقط على الوحدات اللازمة لعمل Dstack. ربما يستحق حتى استخدام التقنيات القديمة مثل SGX (تفوق TDX) ، لأن هذه التقنية لا تحتاج إلى برنامج تحميل أو نظام تشغيل ليتم تحميلهما كجزء من TEE.
العزل الفيزيائي
عن طريق عزل TEE عن أي تدخل بشري محتمل في المستقبل، يمكن تعزيز أمان TEE بشكل أكبر. على الرغم من أننا يمكن أن نعتمد على مراكز البيانات ومزودي الخدمات السحابية لاستضافة خوادم TEE ونثق في قدرتهم على توفير الأمان الفيزيائي، إلا أن مشاريع مثل Spacecoin تستكشف بدلاً من ذلك بديلاً مثيرًا للاهتمام - الفضاء. يعتمد ورقة عمل SpaceTEE على إجراءات أمنية مثل قياس عزم الدوران بعد الإطلاق للتحقق مما إذا كان القمر الصناعي ينحرف عن المسار المتوقع عند دخول المدار.
متعدد الإثبات
تمامًا مثلما يعتمد Ethereum على عدة عملاء لتخفيض مخاطر أخطاء البرامج الضارة التي تؤثر على الشبكة بأكملها ، يستخدم multiprovers خططًا مختلفة لـ TEE لزيادة الأمان والمرونة. يمكن للتحقق المتعدد ضمان أن أي عيوب في تنفيذ TEE معين لن تؤثر على التطبيق بأكمله عن طريق تشغيل نفس الخطوات الحسابية عبر عدة منصات TEE مختلفة. على الرغم من أن هذا النهج يتطلب أن يكون عملية الحساب محددة بشكل دقيق ، أو تعريف الاتفاق بين خطط TEE المختلفة في حالة عدم التحديد ، فإنه يوفر أيضًا مزايا ملحوظة مثل العزلة من الأخطاء والتكرار والتحقق المتقاطع ، مما يجعله خيارًا جيدًا للتطبيقات التي تتطلب ضمانات الموثوقية.
توقعات المستقبل
يبدو أن TEE أصبح مجالًا مثيرًا للغاية. كما ذكرنا سابقًا ، فإن وجود AI في كل مكان والوصول المستمر إلى بيانات المستخدم الحساسة يعني أن شركات التكنولوجيا الكبرى مثل Apple و NVIDIA تستخدم TEE في منتجاتها وتقدمها كجزء من منتجاتها.
من ناحية أخرى، كانت المجتمع المشفر مهتمة دائمًا بالأمان. مع محاولة المطورين لتوسيع تطبيقات السلسلة الضوئية وحالات الاستخدام، لاحظنا أن تقنية TEE أصبحت شائعة كحلا يوفر توازنًا صحيحًا بين الوظائف وافتراضات الثقة. ** على الرغم من أن TEE لا توفر الحد الأدنى للثقة مثل حل ZK الكامل، إلا أننا نتوقع أن تصبح TEE المنهج الذي سيتم دمج شركات Web3 ومنتجات الشركات التكنولوجية الكبيرة به لأول مرة تدريجيًا. **