امنیت برنامه

عناصر برنامه های کاربردی

اندروید یک پلتفرم منبع باز و محیط برنامه برای دستگاه های تلفن همراه فراهم می کند. سیستم عامل اصلی مبتنی بر هسته لینوکس است. برنامه های اندروید اغلب به زبان برنامه نویسی جاوا نوشته می شوند و در ماشین مجازی دالویک اجرا می شوند. با این حال، برنامه ها را می توان با کد بومی نیز نوشت. برنامه ها از یک فایل با پسوند فایل apk. نصب می شوند.

بلوک های اصلی سازنده برنامه اندروید عبارتند از:

  • AndroidManifest.xml : فایل AndroidManifest.xml فایل کنترلی است که به سیستم می‌گوید با تمام اجزای سطح بالا (مخصوصاً فعالیت‌ها، خدمات، گیرنده‌های پخش و ارائه‌دهندگان محتوا که در زیر توضیح داده شده است) در یک برنامه چه کاری انجام دهد. این همچنین مشخص می کند که کدام مجوزها مورد نیاز است.

  • فعالیت‌ها : یک Activity به طور کلی، کد یک کار متمرکز بر کاربر است. معمولاً شامل نمایش یک رابط کاربری برای کاربر است، اما مجبور نیست -- برخی از فعالیت ها هرگز رابط کاربری را نشان نمی دهند. به طور معمول، یکی از فعالیت های برنامه، نقطه ورود به برنامه است.

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

  • گیرنده پخش : یک گیرنده پخش ، شیئی است که زمانی که مکانیزم IPC معروف به Intent توسط سیستم عامل یا برنامه دیگری صادر می شود، نمونه سازی می شود. برای مثال، یک برنامه کاربردی ممکن است گیرنده ای را برای پیام باتری کم ثبت کند و رفتار خود را بر اساس آن اطلاعات تغییر دهد.

مدل مجوز اندروید: دسترسی به APIهای محافظت شده

همه برنامه های اندروید در یک Application Sandbox اجرا می شوند. به طور پیش فرض، یک برنامه اندروید تنها می تواند به محدوده محدودی از منابع سیستم دسترسی داشته باشد. این سیستم دسترسی برنامه Android به منابعی را مدیریت می کند که اگر به طور نادرست یا مخرب استفاده شوند، می توانند بر تجربه کاربر، شبکه یا داده های دستگاه تأثیر منفی بگذارند.

این محدودیت ها به اشکال مختلف اجرا می شوند. برخی از قابلیت‌ها به دلیل فقدان عمدی APIها به عملکرد حساس محدود شده‌اند (مثلاً هیچ API Android برای دستکاری مستقیم سیم کارت وجود ندارد). در برخی موارد، جداسازی نقش‌ها یک معیار امنیتی را فراهم می‌کند، مانند جداسازی فضای ذخیره‌سازی هر برنامه. در موارد دیگر، API های حساس برای استفاده توسط برنامه های کاربردی قابل اعتماد در نظر گرفته شده اند و از طریق مکانیزم امنیتی به نام مجوزها محافظت می شوند.

این APIهای محافظت شده عبارتند از:

  • عملکردهای دوربین
  • داده های موقعیت مکانی (GPS)
  • عملکردهای بلوتوث
  • توابع تلفن
  • توابع SMS/MMS
  • اتصالات شبکه/داده

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

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

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

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

مجوزهای پیش فرض سیستم در https://developer.android.com/reference/android/Manifest.permission.html توضیح داده شده است. برنامه ها ممکن است مجوزهای خود را برای استفاده از سایر برنامه ها اعلام کنند. چنین مجوزهایی در مکان فوق ذکر نشده است.

هنگام تعریف یک مجوز، یک ویژگی protectLevel به سیستم می گوید که چگونه کاربر باید از برنامه هایی که به مجوز نیاز دارند مطلع شود یا چه کسی مجاز به داشتن مجوز است. جزئیات ایجاد و استفاده از مجوزهای خاص برنامه در https://developer.android.com/guide/topics/security/security.html شرح داده شده است.

برخی از قابلیت‌های دستگاه، مانند توانایی ارسال پیام‌های ارسال پیامک، وجود دارد که برای برنامه‌های شخص ثالث در دسترس نیست، اما ممکن است توسط برنامه‌های از پیش نصب شده توسط OEM استفاده شود. این مجوزها از مجوز signatureOrSystem استفاده می کنند.

نحوه درک کاربران از برنامه های شخص ثالث

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

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

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

همچنین، بسیاری از مطالعات رابط کاربری نشان داده اند که درخواست بیش از حد از کاربر باعث می شود که کاربر شروع به گفتن "OK" به هر گفتگوی نشان داده شده کند. یکی از اهداف امنیتی اندروید، انتقال موثر اطلاعات امنیتی مهم به کاربر است که با استفاده از دیالوگ هایی که کاربر آموزش دیده نادیده گرفته می شود، نمی توان این کار را انجام داد. با ارائه اطلاعات مهم یک بار و تنها در مواقعی که مهم هستند، احتمال بیشتری وجود دارد که کاربر به آنچه که با آن موافقت می کند فکر کند.

برخی از پلتفرم‌ها تصمیم می‌گیرند که اصلاً اطلاعاتی درباره عملکرد برنامه نشان ندهند. این رویکرد باعث می‌شود که کاربران نتوانند به راحتی قابلیت‌های برنامه را درک کنند و در مورد آن بحث کنند. در حالی که این امکان برای همه کاربران وجود ندارد که همیشه تصمیمات کاملاً آگاهانه بگیرند، مدل مجوزهای Android باعث می‌شود اطلاعات مربوط به برنامه‌ها به راحتی برای طیف گسترده‌ای از کاربران قابل دسترسی باشد. برای مثال، درخواست‌های مجوزهای غیرمنتظره می‌تواند کاربران پیچیده‌تر را وادار کند تا سؤالات مهمی در مورد عملکرد برنامه بپرسند و نگرانی‌های خود را در مکان‌هایی مانند Google Play که برای همه کاربران قابل مشاهده است به اشتراک بگذارند.

مجوزها در نصب برنامه -- نقشه های گوگل مجوزهای یک برنامه نصب شده -- Gmail
مجوزها در نصب برنامه -- نقشه های گوگلمجوزهای یک برنامه نصب شده -- Gmail

شکل 1. نمایش مجوزها برای برنامه ها

ارتباطات بین فرآیندی

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

اندروید همچنین مکانیسم های IPC جدیدی را ارائه می دهد:

  • Binder : یک مکانیسم فراخوانی روش از راه دور مبتنی بر قابلیت سبک وزن که برای عملکرد بالا در هنگام انجام تماس های درون فرآیندی و متقابل طراحی شده است. Binder با استفاده از یک درایور لینوکس سفارشی پیاده سازی شده است. به https://developer.android.com/reference/android/os/Binder.html مراجعه کنید.

  • خدمات : سرویس‌ها (در بالا مورد بحث قرار گرفت) می‌توانند رابط‌هایی را فراهم کنند که مستقیماً با استفاده از کلاسور قابل دسترسی هستند.

  • Intent : یک هدف یک شی پیام ساده است که نشان دهنده یک "نیت" برای انجام کاری است. به عنوان مثال، اگر برنامه شما بخواهد یک صفحه وب را نمایش دهد، با ایجاد یک نمونه Intent و تحویل آن به سیستم، "نیت" خود را برای مشاهده URL بیان می کند. سیستم قطعه دیگری از کد (در این مورد، مرورگر) را که می داند چگونه آن Intent را مدیریت کند، پیدا کرده و آن را اجرا می کند. Intent ها همچنین می توانند برای پخش رویدادهای جالب (مانند اعلان) در سراسر سیستم استفاده شوند. به https://developer.android.com/reference/android/content/Intent.html مراجعه کنید.

  • ContentProvider : یک ContentProvider یک انبار داده است که دسترسی به داده ها را در دستگاه فراهم می کند. مثال کلاسیک ContentProvider است که برای دسترسی به لیست مخاطبین کاربر استفاده می شود. یک برنامه کاربردی می‌تواند به داده‌هایی دسترسی پیدا کند که سایر برنامه‌ها از طریق یک ContentProvider در معرض نمایش قرار داده‌اند، و یک برنامه کاربردی همچنین می‌تواند ContentProviders خود را برای افشای داده‌های خودش تعریف کند. به https://developer.android.com/reference/android/content/ContentProvider.html مراجعه کنید.

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

APIهای حساس به هزینه

API حساس به هزینه هر عملکردی است که ممکن است برای کاربر یا شبکه هزینه ایجاد کند. پلتفرم اندروید APIهای حساس به هزینه را در لیست APIهای محافظت شده تحت کنترل سیستم عامل قرار داده است. کاربر باید به برنامه های شخص ثالثی که درخواست استفاده از API های حساس به هزینه را دارند، مجوز صریح بدهد. این APIها عبارتند از:

  • تلفن
  • SMS/MMS
  • شبکه/داده
  • صورتحساب درون برنامه ای
  • دسترسی NFC

اندروید 4.2 کنترل بیشتری بر استفاده از پیامک اضافه می کند. اگر برنامه‌ای بخواهد به کد کوتاهی که از خدمات ممتاز استفاده می‌کند که ممکن است هزینه‌های اضافی را به همراه داشته باشد، پیامک ارسال کند، Android اعلانی ارائه می‌کند. کاربر می تواند انتخاب کند که آیا به برنامه اجازه ارسال پیام را بدهد یا آن را مسدود کند.

دسترسی به سیم کارت

دسترسی سطح پایین به سیم کارت برای برنامه های شخص ثالث در دسترس نیست. سیستم عامل کلیه ارتباطات با سیم کارت از جمله دسترسی به اطلاعات شخصی (مخاطبین) روی حافظه سیم کارت را انجام می دهد. برنامه‌ها همچنین نمی‌توانند به دستورات AT دسترسی داشته باشند، زیرا این دستورات منحصراً توسط لایه رابط رادیویی (RIL) مدیریت می‌شوند. RIL هیچ API سطح بالایی برای این دستورات ارائه نمی دهد.

اطلاعات شخصی

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

دسترسی به داده های حساس کاربر فقط از طریق API های محافظت شده در دسترس است

شکل 2. دسترسی به داده های حساس کاربر فقط از طریق API های محافظت شده در دسترس است

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

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

دستگاه های ورودی داده های حساس

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

اگر برنامه ای بخواهد مکان کاربر را بداند، برنامه برای دسترسی به موقعیت مکانی کاربر به مجوز نیاز دارد. پس از نصب، نصب‌کننده از کاربر می‌پرسد که آیا برنامه می‌تواند به مکان کاربر دسترسی داشته باشد یا خیر. در هر زمان، اگر کاربر نمی‌خواهد هیچ برنامه‌ای به موقعیت مکانی خود دسترسی پیدا کند، کاربر می‌تواند برنامه «تنظیمات» را اجرا کند، به «مکان و امنیت» رفته و تیک «استفاده از شبکه‌های بی‌سیم» و «فعال کردن ماهواره‌های GPS» را بردارید. . این کار خدمات مبتنی بر مکان را برای همه برنامه های موجود در دستگاه کاربر غیرفعال می کند.

فراداده دستگاه

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

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

مقامات صدور گواهی

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

برای اضافه شدن به عنوان یک CA عمومی جدید به مجموعه سهام Android، CA باید فرآیند گنجاندن Mozilla CA را تکمیل کند و سپس یک درخواست ویژگی علیه Android ( https://code.google.com/p/android/issues/entry ) ارسال کند. برای افزودن CA به مجموعه Android CA موجود در پروژه منبع باز Android (AOSP).

هنوز CAهایی وجود دارند که مختص دستگاه هستند و نباید در مجموعه اصلی CAهای AOSP گنجانده شوند، مانند CAهای خصوصی شرکت‌های مخابراتی که ممکن است برای دسترسی ایمن به اجزای زیرساخت شرکت مخابراتی، مانند دروازه‌های SMS/MMS مورد نیاز باشند. سازندگان دستگاه تشویق می‌شوند که CA خصوصی را فقط در مؤلفه‌ها/برنامه‌هایی که باید به این CA اعتماد کنند، بگنجانند. برای جزئیات بیشتر، پیکربندی امنیت شبکه را ببینید.

امضای برنامه

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

در Google Play، امضای برنامه، اعتمادی را که گوگل به توسعه‌دهنده دارد و اعتمادی که توسعه‌دهنده به برنامه خود دارد، پیوند می‌دهد. توسعه‌دهندگان می‌دانند که برنامه آن‌ها بدون تغییر در دستگاه Android ارائه شده است. و توسعه دهندگان را می توان برای رفتار برنامه خود پاسخگو دانست.

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

وقتی یک برنامه (فایل APK) روی دستگاه Android نصب می‌شود، Package Manager تأیید می‌کند که APK به درستی با گواهی موجود در آن APK امضا شده است. اگر گواهی (یا به‌طور دقیق‌تر، کلید عمومی در گواهی) با کلید مورد استفاده برای امضای هر APK دیگری در دستگاه مطابقت داشته باشد، APK جدید این گزینه را دارد که در مانیفست مشخص کند که یک UID را به طور مشابه با دیگری به اشتراک بگذارد. APKهای امضا شده

برنامه ها را می توان توسط شخص ثالث (OEM، اپراتور، بازار جایگزین) امضا کرد یا خود امضا کرد. اندروید امضای کد را با استفاده از گواهینامه‌های خودامضا ارائه می‌کند که توسعه‌دهندگان می‌توانند بدون کمک یا اجازه خارجی ایجاد کنند. درخواست ها نیازی به امضای یک مقام مرکزی ندارند. Android در حال حاضر تأیید CA را برای گواهی‌های برنامه انجام نمی‌دهد.

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

تأیید برنامه

Android 4.2 و نسخه های جدیدتر از تأیید برنامه پشتیبانی می کند. کاربران می‌توانند «تأیید برنامه‌ها» را فعال کنند و برنامه‌ها را قبل از نصب توسط تأییدکننده برنامه ارزیابی کنند. تأیید برنامه می‌تواند به کاربر در صورت تلاش برای نصب برنامه‌ای که ممکن است مضر باشد، هشدار دهد؛ اگر برنامه‌ای به‌خصوص بد باشد، می‌تواند نصب را مسدود کند. .

مدیریت حقوق دیجیتال

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

چارچوب Android DRM در دو لایه معماری پیاده سازی شده است (شکل زیر را ببینید):

  • یک API فریمورک DRM، که از طریق چارچوب برنامه اندروید در معرض برنامه‌ها قرار می‌گیرد و از طریق Dalvik VM برای برنامه‌های استاندارد اجرا می‌شود.

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

معماری مدیریت حقوق دیجیتال در پلتفرم اندروید

شکل 3. معماری مدیریت حقوق دیجیتال در پلتفرم اندروید