امنیت سیستم و هسته

در سطح سیستم عامل، پلت فرم اندروید امنیت هسته لینوکس و همچنین تسهیلات ارتباط بین فرآیندی (IPC) ایمن را برای برقراری ارتباط امن بین برنامه های کاربردی در حال اجرا در فرآیندهای مختلف فراهم می کند. این ویژگی های امنیتی در سطح سیستم عامل تضمین می کند که حتی کدهای بومی توسط Application Sandbox محدود می شوند. چه آن کد نتیجه رفتار برنامه گنجانده شده باشد یا سوء استفاده از آسیب‌پذیری برنامه، سیستم به گونه‌ای طراحی شده است که از آسیب رساندن به برنامه‌های دیگر، سیستم اندروید یا خود دستگاه توسط برنامه سرکش جلوگیری کند. برای اقداماتی که می توانید برای تقویت هسته در دستگاه های خود انجام دهید، به پیکربندی هسته مراجعه کنید. برای تنظیمات مورد نیاز به سند تعریف سازگاری Android (CDD) مراجعه کنید.

امنیت لینوکس

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

هسته لینوکس به عنوان پایه ای برای یک محیط محاسباتی تلفن همراه، چندین ویژگی امنیتی کلیدی را برای اندروید فراهم می کند، از جمله:

  • یک مدل مجوزهای مبتنی بر کاربر
  • جداسازی فرآیند
  • مکانیزم توسعه پذیر برای IPC ایمن
  • توانایی حذف قسمت های غیر ضروری و بالقوه ناامن هسته

به عنوان یک سیستم عامل چند کاربره، یک هدف امنیتی اساسی هسته لینوکس، جداسازی منابع کاربر از یکدیگر است. فلسفه امنیت لینوکس محافظت از منابع کاربر در برابر یکدیگر است. بنابراین، لینوکس:

  • کاربر A را از خواندن فایل های کاربر B جلوگیری می کند
  • تضمین می کند که کاربر A حافظه کاربر B را خسته نمی کند
  • تضمین می کند که کاربر A منابع CPU کاربر B را تمام نمی کند
  • اطمینان حاصل می کند که کاربر A دستگاه های کاربر B (به عنوان مثال، تلفن، GPS و بلوتوث) را خسته نمی کند.

Sandbox برنامه

امنیت برنامه اندروید توسط sandbox برنامه اعمال می شود که برنامه ها را از یکدیگر جدا می کند و از برنامه ها و سیستم در برابر برنامه های مخرب محافظت می کند. برای جزئیات بیشتر، به Application Sandbox مراجعه کنید.

پارتیشن سیستم و حالت ایمن

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

مجوزهای سیستم فایل

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

لینوکس با امنیت بالا

اندروید برای اعمال سیاست‌های کنترل دسترسی و ایجاد کنترل دسترسی اجباری (mac) روی فرآیندها از لینوکس تقویت‌شده با امنیت (SELinux) استفاده می‌کند. برای جزئیات بیشتر به Linux Enhanced Security در Android مراجعه کنید.

بوت تایید شده

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

اندروید ۷.۰ و جدیدتر از بوت تایید شده کاملاً اجرا شده پشتیبانی می‌کند، به این معنی که دستگاه‌های در معرض خطر نمی‌توانند بوت شوند.

برای جزئیات بیشتر به بوت تایید شده مراجعه کنید.

رمزنگاری

اندروید مجموعه ای از API های رمزنگاری را برای استفاده توسط برنامه ها ارائه می دهد. اینها شامل پیاده سازی رمزنگاری های اولیه استاندارد و رایج مانند AES، RSA، DSA و SHA می شود. علاوه بر این، API برای پروتکل های سطح بالاتر مانند SSL و HTTPS ارائه شده است.

اندروید 4.0 کلاس KeyChain را معرفی کرد تا به برنامه‌ها اجازه دهد تا از فضای ذخیره‌سازی اعتبار سیستم برای کلیدهای خصوصی و زنجیره‌های گواهی استفاده کنند.

روت کردن دستگاه ها

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

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

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

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

یک رویکرد قوی تر برای محافظت از داده ها از کاربران ریشه از طریق استفاده از راه حل های سخت افزاری است. OEMها ممکن است راه‌حل‌های سخت‌افزاری را پیاده‌سازی کنند که دسترسی به انواع خاصی از محتوا مانند DRM برای پخش ویدیو، یا ذخیره‌سازی مورد اعتماد مرتبط با NFC را برای کیف پول Google محدود می‌کند.

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

ویژگی های امنیتی کاربر

رمزگذاری سیستم فایل

اندروید 3.0 و جدیدتر رمزگذاری کامل سیستم فایل را فراهم می کند، بنابراین تمام داده های کاربر را می توان در هسته رمزگذاری کرد.

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

Android 7.0 و بالاتر از رمزگذاری مبتنی بر فایل پشتیبانی می کند. رمزگذاری مبتنی بر فایل اجازه می دهد تا فایل های مختلف با کلیدهای مختلف رمزگذاری شوند که می توانند به طور مستقل باز شوند.

جزئیات بیشتر در مورد اجرای رمزگذاری سیستم فایل در بخش رمزگذاری موجود است.

حفاظت از رمز عبور

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

استفاده از رمز عبور و/یا قوانین پیچیدگی رمز عبور می‌تواند توسط سرپرست دستگاه مورد نیاز باشد.

مدیریت دستگاه

Android 2.2 و نسخه های جدیدتر API مدیریت دستگاه Android را ارائه می دهد که ویژگی های مدیریت دستگاه را در سطح سیستم ارائه می دهد. به عنوان مثال، برنامه داخلی Android Email از APIها برای بهبود پشتیبانی Exchange استفاده می کند. از طریق برنامه ایمیل، مدیران Exchange می‌توانند خط‌مشی‌های رمز عبور - از جمله رمزهای عبور حروفی یا پین‌های عددی - را در سراسر دستگاه‌ها اعمال کنند. مدیران همچنین می توانند از راه دور گوشی های گم شده یا دزدیده شده را پاک کنند (یعنی پیش فرض های کارخانه را بازیابی کنند).

این APIها علاوه بر استفاده در برنامه‌های موجود در سیستم Android، برای ارائه‌دهندگان شخص ثالث راه‌حل‌های مدیریت دستگاه در دسترس هستند. جزئیات API در Device Administration ارائه شده است.