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 مانند پرداخت‌های موبایلی، بانکداری ایمن، احراز هویت چند عاملی، محافظت از تنظیم مجدد دستگاه، ذخیره‌سازی دائمی محافظت شده در برابر پخش مجدد، پردازش پین ایمن و اثرانگشت و حتی شناسایی بدافزار وجود دارد.