TEE قابل اعتماد

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

Trusty با پردازنده‌های ARM و Intel سازگار است. در سیستم‌های ARM، Trusty از TrustZone شرکت ARM برای مجازی‌سازی پردازنده اصلی و ایجاد یک TEE امن استفاده می‌کند. پشتیبانی مشابهی نیز در پلتفرم‌های Intel x86 با استفاده از فناوری مجازی‌سازی Intel در دسترس است.

نمودار کلی قابل اعتماد

شکل ۱. نمودار کلی قابل اعتماد.

Trusty شامل موارد زیر است:

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

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

مزایای اعتماد

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

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

برنامه‌ها و سرویس‌ها

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

نمای کلی برنامه Trusty

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

برنامه‌های قابل اعتماد شخص ثالث

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

کاربردها و مثال‌ها

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

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

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

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