TEE قابل اعتماد

Trusty یک سیستم عامل (OS) ایمن است که یک محیط اجرای مورد اعتماد (TEE) را برای اندروید فراهم می کند. Trusty OS بر روی همان پردازنده سیستم عامل اندروید اجرا می شود، اما Trusty هم از طریق سخت افزار و هم نرم افزار از بقیه سیستم جدا شده است. Trusty و Android به موازات یکدیگر اجرا می شوند. Trusty به تمام قدرت پردازنده و حافظه اصلی دستگاه دسترسی دارد اما کاملاً ایزوله است. جداسازی Trusty از آن در برابر برنامه های مخرب نصب شده توسط کاربر و آسیب پذیری های احتمالی که ممکن است در Android کشف شود محافظت می کند.

Trusty با پردازنده های ARM و Intel سازگار است. در سیستم‌های ARM، Trusty از Trustzone™ ARM برای مجازی‌سازی پردازنده اصلی و ایجاد یک محیط اجرای مطمئن مطمئن استفاده می‌کند. پشتیبانی مشابهی نیز بر روی پلتفرم های Intel x86 با استفاده از فناوری مجازی سازی اینتل در دسترس است.

شکل 1 . نمودار نمای کلی مطمئن

اعتماد متشکل از:

  • یک هسته سیستم عامل کوچک که از هسته کوچک مشتق شده است
  • یک درایور هسته لینوکس برای انتقال داده بین محیط امن و اندروید
  • یک کتابخانه فضای کاربران اندروید برای برقراری ارتباط با برنامه‌های مورد اعتماد (یعنی وظایف/سرویس‌های امن) از طریق درایور هسته

توجه: Trusty و Trusty API ممکن است تغییر کنند. برای اطلاعات در مورد Trusty API، به مرجع API مراجعه کنید.

چرا اعتماد؟

سایر سیستم‌عامل‌های TEE به‌طور سنتی به‌عنوان حباب‌های باینری توسط فروشندگان شخص ثالث عرضه می‌شوند یا به صورت داخلی توسعه می‌یابند. توسعه سیستم‌های TEE داخلی یا صدور مجوز TEE از یک شخص ثالث می‌تواند برای فروشندگان سیستم روی تراشه (SoC) و OEM ها پرهزینه باشد. هزینه پولی همراه با سیستم های غیرقابل اعتماد شخص ثالث، یک اکوسیستم ناپایدار برای اندروید ایجاد می کند. Trusty به عنوان یک جایگزین منبع باز قابل اعتماد و رایگان برای محیط اجرای مورد اعتماد آنها در اختیار شرکای خود قرار می گیرد. Trusty سطحی از شفافیت را ارائه می دهد که با سیستم های منبع بسته امکان پذیر نیست.

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

برنامه ها و خدمات

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

شکل 2 . نمای کلی برنامه قابل اعتماد

برنامه های کاربردی Trusty شخص ثالث

در حال حاضر همه برنامه های Trusty توسط یک طرف توسعه یافته و با تصویر هسته Trusty بسته بندی می شوند. کل تصویر در هنگام بوت توسط بوت لودر امضا و تایید می شود. توسعه برنامه شخص ثالث در حال حاضر در Trusty پشتیبانی نمی شود. اگرچه Trusty توسعه برنامه های کاربردی جدید را امکان پذیر می کند، انجام این کار باید با دقت بسیار انجام شود. هر برنامه جدید مساحت پایگاه محاسباتی قابل اعتماد (TCB) سیستم را افزایش می دهد. برنامه های مورد اعتماد می توانند به اسرار دستگاه دسترسی داشته باشند و با استفاده از آنها محاسبات یا تبدیل داده ها را انجام دهند. توانایی توسعه برنامه های کاربردی جدید که در TEE اجرا می شوند، فرصت های زیادی را برای نوآوری باز می کند. با این حال، به دلیل تعریف TEE، این برنامه‌ها را نمی‌توان بدون داشتن نوعی اعتماد توزیع کرد. معمولاً این به شکل یک امضای دیجیتال توسط یک نهاد مورد اعتماد کاربر محصولی که برنامه روی آن اجرا می‌شود ارائه می‌شود.

موارد استفاده و مثال

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

در دستگاه‌هایی با پیاده‌سازی TEE، پردازنده اصلی اغلب به عنوان «غیر قابل اعتماد» شناخته می‌شود، به این معنی که نمی‌تواند به بخش‌های خاصی از RAM، رجیسترهای سخت‌افزار، و فیوزهای یک بار نوشتن که در آن داده‌های مخفی (مانند کلیدهای رمزنگاری خاص دستگاه) وجود دارد، دسترسی پیدا کند. توسط سازنده ذخیره می شود. نرم افزاری که روی پردازنده اصلی اجرا می شود، هر عملیاتی را که نیاز به استفاده از داده های مخفی داشته باشد به پردازنده TEE واگذار می کند.

شناخته شده ترین مثال از این مورد در اکوسیستم اندروید، چارچوب DRM برای محتوای محافظت شده است. نرم افزاری که روی پردازنده TEE اجرا می شود می تواند به کلیدهای مخصوص دستگاه مورد نیاز برای رمزگشایی محتوای محافظت شده دسترسی پیدا کند. پردازنده اصلی فقط محتوای رمزگذاری شده را می بیند و سطح بالایی از امنیت و محافظت در برابر حملات مبتنی بر نرم افزار را فراهم می کند.

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