محیط اجرای قابل اطمینان

**محیط اجرای قابل اعتماد** ()، منطقه‌ای امن داخل پردازنده اصلی است که محرمانگی و جامعیت داده‌های داخلش را تضمین می‌کند. یک محیط اجرای قابل اطمینان به عنوان یک محیط اجرای جداگانه خدمات امنیتی مختلفی را ارائه می‌دهد. از جمله این خدمات می‌توان از محیط اجرا ایزوله شده، اطمینان از جامعیت و دست نخورده بودن برنامه‌های اجرا شده و محرمانه بودن اطلاعات و داده‌های این برنامه‌ها نام برد. درکل، محیط اجرای قابل اطمینان یک فضای اجرایی با امنیت سطح بالا را برای برنامه‌های مورد اعتماد فراهم می‌کند. شایان ذکر است که این محیط از سیستم عامل غنی امن تر است و عملکرد بهتری نسبت به «عنصر امن» (Secure Element) دارد.

## تاریخچه
محیط اجرای قابل اطمینان اولین بار توسط Open Terminal Platform تعریف شد و بخشی از استاندارد "Advanced Trusted Environment:OMTP TR1" بود.

تعریف رسمی ارائه شده برای آن به این صورت است :"مجموعه ای از اجزای سخت افزای و نرم‌افزاری که امکانات لازم برای پشتیبانی از برنامه‌های کاربردی را فراهم می‌کنند " این مجموعه باید نیازهای یکی از دو سطح امنیتی تعریف شده را ارضا کند. هدف سطح امنیتی اول یا Profile 1، مقابله با حملات نرم‌افزاری وهدف سطح امنیتی دوم ،Profile 2، مقابله با حملات نرم‌افزاری و سخت‌افزاری است. به بیان دیگر محیط اجرای قابل اطمینان، باید بتواند برنامه را یا فقط از حمله نرم‌افزاری یا نرم‌افزاری و سخت‌افزاری محافظت کند.

کمی بعد روش‌های تجاری برای پیاده‌سازی محیط اجرای قابل اطمینان ارائه شد. این روش‌ها مبتنی بر تکنولوژی منطقه امن پردازنده‌های ARM بودند و با استاندارد TR1 مطابقت داشند از جمله آن‌ها می‌توان از بنیادهای قابل اطمینان(Trusted Foundations)، که توسط Trusted Logic توسعه یافت نام برد.

در اواسط سال ۲۰۱۰ کار بر روی استانداردهای OMTP، با انتقال گروه آن به جامعه عمده فروشی برنامه‌های کاربردی، به پایان رسید.

امروزه، استانداردهای OMTP، شامل استانداردهای معرف محیط اجرای قابل اطمینان، توسط GSMA میزبانی می‌شود.

## جزئیات
استاندارد محیط اجرای قابل اطمینان با ساختن یک محیط جدا و ایزوله شده که به صورت موازی با سیستم عامل اجرا می‌شود، امنیت محیط غنی را فراهم می‌کند و برای داشتن امنیت بیشتر از سیستم عامل کاربرپسند به کار می‌رود. یکی از روش‌های پیاده‌سازی محیط اجرای قابل اطمینان استفاده از TrustZone یا منطقه امن پردازنده‌های ARM است. محیط اجرای قابل اطمینان TrustZone، برای محافظت از داده‌ها از یک روش ترکیبی که هم از سخت‌افزار و هم از نرم‌افزار بهره می‌برد، استفاده می‌کند. در نتیجه امنیت کافی را برای بسیاری از برنامه‌ها و کاربردها فراهم می‌کند. فقط برنامه‌های قابل اطمینان که در حال اجرا بر روی محیط اجرای قابل اطمینان TEE هستند به قدرت کامل پردازنده اصلی، لوازم جانبی و حافظه دسترسی دارند، در حالی که ایزوله بودن سخت‌افزار از این برنامه‌ها در برابر برنامه‌هایی که کاربر نصب کرده و در سیستم عامل اصلی اجرا می‌شوند، محافظت می‌کند. نرم‌افزار و جداسازهای داخل محیط اجرای قابل اطمینان از برنامه‌های درون این محیط در مقابل یکدیگر محافظت می‌کنند.

ارائه دهندگان خدمات، اپراتورهای شبکه تلفن همراه، توسعه دهندگان سیستم عامل، توسعه دهندگان برنامه‌ها، تولیدکنندگان دیوایس‌ها، عرضه‌کننده‌های پلتفرم و فروشندگان سیلیکون ذینفعان اصلی استانداردسازی محیط اجرای قابل اطمینان هستند و در این زمینه مشارکت دارند.

برای جلوگیری از شبیه‌سازی سخت‌افزار با نرم‌افزاری که توسط کاربر کنترل می‌شود، از «ریشه اعتماد سخت‌افزار» استفاده می‌شود. ریشه اعتماد سخت‌افزار مجموعه ای از کلیدهای خصوصی (که به آن‌ها «کلیدهای تأیید» یا «اسرار تأمین شده» گفته می‌شود) است که در هنگام تولید تراشه مستقیماً در آن تعبیه می‌شوند (معمولاً برای پیاده‌سازی این قسمت از حافظه‌هایی که فقط یک بار قابل برنامه‌ریزی هستند و مساحت زیادی هم دارند، مانند eFuse، استفاده می‌شود) کلیدهای روی ریشه اعتماد سخت افزار، قابل تغییر نیستند و کلیدهای عمومی مربوط به این کلیدهای خصوصی به همراه هش غیر مخفی کلید عمومی متعلق به طرف مورد اعتماد (معمولاً فروشنده تراشه) در پایگاه دادهٔ تولیدکننده قرار دارند و برای امضای نرم‌افزار قابل اعتماد دائمی ای که روی ROMحک شده و همچنین مدارهایی که عملیات رمزگذاری و کنترل سطح دسترسی را انجام می‌دهند استفاده می‌شود. این سخت‌افزار به نحوی طراحی شده‌است که از دسترسی تمام نرم‌افزارهایی که توسط کلید طرف مورد اعتماد امضا نشدند به قسمت محافظت شده، جلوگیری می‌کند. کلید عمومی فروشنده در زمان اجرا تولید و هش می‌شود. سپس این هش با نمونه تعبیه شده در تراشه مقایسه می‌شود. اگر هش منطبق باشد، از کلید عمومی برای تأیید امضای دیجیتالی firmware قابل اعتماد که توسط فروشنده کنترل می‌شود استفاده می‌شود (مثل زنجیرهٔ bootloaderها که در دستگاه‌های Android استفاده می‌شود). و بعد از آن firmware قابل اعتماد برای پیاده‌سازی تأیید از راه دور استفاده می‌شود.

یک مؤلفه غیر قابل اعتماد از یک برنامه برای تأیید اعتبار، مولفه قابل اطمینان را در حافظه قرار می‌دهد. سخت‌افزار از برنامه قابل اعتماد در برابر تغییر توسط مؤلفه‌های غیر قابل اعتماد محافظت می‌کند. سرور تصدیق کننده از طرف غیر قابل اطمینان درخواستی برای ارائه یک نانس می‌دهد. این نانس به عنوان بخشی از یک پروتکل احراز هویت و برای حفظ یکپارچگی برنامه قابل اعتماد است. اثبات به تأیید کننده ارسال می‌شود و توسط آن تأیید می‌شود. اثبات معتبر را نمی‌توان در سخت‌افزار شبیه‌سازی شده (یا QEMU) محاسبه کرد زیرا برای ساختن آن، نیاز است به کلیدهایی که بر روی سخت‌افزار تعبیه شده‌اند، دسترسی داشته باشیم. فقط firmwareهای قابل اعتماد به این کلیدها و / یا کلیدهای برگرفته از آنها یا با استفاده از آنها دسترسی دارند. از آنجا که پلتفرم طوری طراحی شده که فقط مالک آن به داده‌های ثبت شده در کارخانه است دسترسی داشته باشد، طرف تأیید کننده باید با سرویس تنظیم شده توسط فروشنده ارتباط برقرار کند. اگر این طرح به‌طور نادرست پیاده‌سازی شود، فروشنده تراشه می‌تواند برنامه‌هایی که در هر تراشه اجرا می‌شوند را بفهمد و با ارسال پیام عدم تأیید هویت به هرکدام که خواست اجازه دسترسی ندهد.

برای شبیه‌سازی سخت‌افزاری که بتواند تأیید هویت را از راه دور را انجام دهد، مهاجم باید کلیدها را از سخت‌افزار خارج کند، که به خاطر ابزار و مهارت‌های مورد نیاز برای مهندسی معکوس (focused ion beam, scanning electron microscope, microprobing, decapsulation) بسیار پرهزینه یا اگر این سخت‌افزار طوری طراحی شده باشد که مهندسی معکوس کلیدها را از بین ببرد به‌طور کلی غیرممکن است. در بعضی موارد، کلیدها برای هر قطعه سخت‌افزاری متمایزند، درنتیجه کلیدی که از یک تراشه استخراج می‌شود، برای بقیه بی فایده است.

اگرچه محرومیت از مالکیت یک ویژگی ذاتی محیط اجرای قابل اطمینان نیست (این امکان وجود دارد که طراحی سیستم به طوری انجام شود که فقط کاربرانی که اول مالکیت دستگاه را بدست آورده‌اند بتوانند سیستم آن را کنترل کنند)، اما در عمل همه این سیستم‌های مصرفی عمداً طوری طراحی شده‌اند که به تولیدکنندگان تراشه اجازه می‌دهند که دسترسی به تصدیق و الگوریتم‌های آن را کنترل کنند. در نتیجه سازنده‌ها می‌توانند اجازه دسترسی به محیط اجرای قابل اطمینان را فقط به توسعه دهندگان نرم‌افزاری که با سازنده توافق تجاری دارند، اعطا کنند، و موارد استفاده مانند Tivoization و DRM را فعال کنند.

## کاربردها
موارد استفاده زیادی برای محیط اجرای قابل اطمینان وجود دارد. معمولاً محیط اجرای قابل اطمینان برای محرومیت از مالکیت مورد استفاده می‌شود. هرچند همه موارد استفاده از این ویژگی بهره‌برداری نمی‌کنند.

### حفاظت از محتوای دارای حق بیمه/ مدیریت حقوق دیجیتالی
توجه: بسیاری از عبارات به کار رفته در موضوع محیط اجرای قابل اطمینان این موضوع را تحت عنوان «محافظت از محتوای دارای حق بیمه» بررسی می‌کند که اسمی است که بسیاری از دارندگان حق کپی استفاده از آن را ترجیح می‌دهند. محافظت از محتوای حق بیمه یکی از موارد خاص استفاده از مدیریت حقوق دیجیتالی است و در بین بعضی از جوامع مانند جامعه بنیاد نرم‌افزار آزاد مایه بحث است. حافظت از محتوای حق بیمه که به‌طور گسترده‌ای توسط دارندگان حق کپی، برای محدود کردن استفاده کاربران از منابع از جمله فیلم‌های کیفیت بالای 4K استفاده می‌شود.

محیط اجرای قابل اطمینان می‌تواند مالک دستگاه را از خواندن موارد پنهانی حافظه محروم کند و همچنین بین این محیط و صفحه نمایش و/یا بقیه زیرسیستم‌های دستگاه یک مسیر سخت‌افزاری جدا وجود دارد، که این ویژگی‌ها آن را به محیطی مناسب برای محافظت از اطلاعات دیجیتالی رمزگذاری شده (مثل فیلم‌های HD یا صدا) در دستگاه‌های متصل به هم مانند تلفن‌های هوشمند، تبلت‌ها و تلویزیون‌های HD تبدیل کرده‌است.

محیط اجرای قابل اطمینان برای محافظت از اطلاعات وقتی که روی دستگاه قرار گرفته‌است، مورد استفاده قرار می‌گیرد: اگر اطلاعات در حین انتقال با رمزگذاری مناسب محافظت شده باشند، این محیط با اطمینان از اینکه اطلاعات در معرض محیط‌های تأیید نشده، توسط توسعه دهنده نرم‌افزار یا فروشنده پلتفرم قرار نمی‌گیرد، از اطلاعات رمزگشایی شده بر روی دستگاه محافظت می‌کند. .

### خدمات مالی موبایل
برای امن کردن اپلیکیشن‌ها و کاربردهای تجاری موبایل مثل کیف پول‌های موبایلی، پرداخت‌های peer-to-peer، پرداخت بدون تماس و استفاده از دستگاه تلفن همراه به عنوان نقطه فروش که معمولاً دارای شرایط و نکات امنیتی کاملاً تعریف شده هستند، می‌توان از محیط‌های اجرای قابل اطمینان که غالباً با ارتباطات میدانی نزدیک و SEها و سیستم‌های بک اند قابل اعتماد ترکیب می‌شوند استفاده کرد.

در برخی سناریوها تعامل با کاربر نهایی لازم است و این ممکن است اطلاعات حساس کاربر مانند PIN، رمز عبور یا شناسه بیومتریک در سیستم عامل تلفن همراه را که به عنوان ابزاری برای تأیید هویت کاربر به کار می‌روند را افشا کند. محیط اجرای قابل اطمینان به صورت انتخابی یک رابط کاربری قابل اعتماد در اختیار کاربر قرار می‌دهد که می‌تواند به عنوان ابزار احراز هویت کاربر بر روی دستگاه تلفن همراه استفاده شود.

### احراز هویت
محیط اجرای قابل اطمینان از روشهای شناسایی بیومتریک (تشخیص چهره، حسگر اثر انگشت و مجوز صوتی) پشتیبانی می‌کند، که استفاده از آن آسان‌تر و سرقت رمزها از آن سخت‌تر است. پروسه احراز هویت به‌طور کلی به سه مرحله اصلی تقسیم می‌شود:
* ذخیره یک شناسه «الگو» مرجع روی دستگاه برای مقایسه با «تصویر» استخراج شده در مرحله بعدی
* استخراج «تصویر» (به عنوان مثال اسکن اثر انگشت یا گرفتن نمونه صوتی)
* استفاده از موتور تطبیق دهنده برای مقایسه «تصویر» و «الگو».

محیط اجرای قابل اطمینان برای محافظت از داده‌ها و ایجاد بافر در برابر برنامه‌های غیر ایمن واقع در سیستم عامل تلفن همراه طراحی شده‌است و درنتیجه، منطقه ای خوب برای نگه داری موتور تطبیق دهنده و پردازش‌های لازم برای احراز هویت داخل یک دستگاه همراه است. این امنیت اضافی ممکن است علاوه بر پایین نگه داشتن هزینه برای توسعه دهندگان گوشی، نیازهای امنیتی ارائه دهندگان خدمات را نیز ارضا کند.

### تشکیلات اقتصادی، دولت و ابر
محیط اجرای قابل اطمینان می‌تواند برای استفاده ایمن از اطلاعات محرمانه در دستگاه‌های تلفن همراه و زیرساخت‌های سرور مورد استفاده تشکیلات اقتصادی دولت‌ها و ارائه دهندگان خدمات ابری قرار گیرد. محیط اجرای قابل اطمینان با دربرگرفتن اپلیکیشن‌های حساس و مورد اعتماد که باید ایزوله شوند و از بدافزارهای مخربی که ممکن است در سیستم عامل تلفن همراه وجود داشته باشند، یک سطح محافظت برای مقابله با حملات نرم‌افزاری ایجاد شده در سیستم عامل و کنترل سطوح دسترسی ایجاد می‌کند. با استفاده از قابلیت‌ها و سطوح امنیتی ای که محیط اجرای قابل اطمینان تولید می‌کند، دولت‌ها و شرکت‌ها می‌توانند اطمینان حاصل کنند که کارمندانی که از دستگاه‌های خودشان استفاده می‌کنند، این کار را با روشی امن و قابل اطمینان انجام می‌دهند. به همین ترتیب، محیط‌های اجرای قابل اطمینان مبتنی بر سرور به دفاع در برابر حملات داخلی و خارجی به زیرساخت‌های بک اند کمک می‌کنند.

### برنامه‌نویسی مبتنی بر ماژول ایمن
به خاطر بالا رفتن دارایی‌های نرم‌افزار و قابلیت استفاده مجدد، برنامه‌نویسی ماژولار با تجزیه سیستم به ماژول‌های مستقل و کوچکتر مناسب‌ترین و کم هزینه‌ترین روش برای طراحی و معماری نرم‌افزار است. از آنجا که هر ماژول حاوی همه موارد لازم برای اجرای تابع مورد نظر خود است، محیط اجرای قابل اطمینان اجازه می‌دهد تا یک سیستم کامل با قابلیت اطمینان و امنیت بالا را ساماندهی کنیم و از آسیب رساندن هریک از ماژول‌ها به دیگری، جلوگیری کنیم.

برای اینکه ماژول‌ها با هم ارتباط برقرار کنند و داده‌هایشان را به اشتراک بگذارند، محیط اجرای قابل اطمینان به وسیله روش‌هایی مثل آبجکت سریالیزشن به همراه استفاده از پروکسی‌ها ابزار و بستر لازم برای ارسال و دریافت امن داده‌ها بین ماژول‌ها را فراهم می‌کند.

مهندسی نرم‌افزار مبتنی بر کامپوننت ببینید

## پشتیبانی سخت‌افزاری
از فناوری‌های سخت‌افزاری زیر می‌توان برای پیاده‌سازی محیط اجرای قابل اطمینان استفاده کرد:
* AMD:
** پردازنده امنیتی پلتفورم نرم‌افزاری (PSP)
** محیط اجرای امن AMD
* ARM:
** TrustZone
* IBM:
** IBM Secure Service Container, قبلاً با عنوان zACI شناخته می‌شد، برای اولین بار در دستگاه‌های نسل IBM z13 (از جمله کلیه دستگاه‌های LinuxONE) در سطح درایور معرفی شد.
** IBM Secure Exception, در ۱۴ آوریل ۲۰۲۰ در دستگاه‌های نسل IBM z15 و LinuxONE III معرفی شد.
* اینتل:
** فناوری اجرای قابل اطمینان
** محافظ اجرای نرم‌افزار SGX
** "Silent Lake" (موجود در پردازنده‌های Atom)
* RISC-V:
** محیط امنیتی اجرای قابل اطمینان MultiZone Environment
** فریم ورک قابل تنظیم TEE

## یادداشت

## جستارهای وابسته
* کارت جاوا
* پایه نسل بعدی محاسبات ایمن

## منابع

رده:استانداردها
رده:امنیت
رده:فناوری امنیت
رده:موبایل سکوریتی
رده:نرم‌افزارهای موبایل