امنیت اندروید


    اندروید یک پلتفرم مدرن برای موبایل است و به عنوان یک سیستم عامل بازمتن(sourceopen) پا به عرصه گذاشت. نرم افزارهای کاربردهای اندروید از مزایای نرم افزار و سخت افزارهای پیشرفته استفاده می کند و نوآوری و ارزش را برای مصرف کنندگان آن فراهم می کند. برای حفاظت از این ارزش ها این پلتفرم باید یک محیط کاربردی را برای امنیت کاربر، داده، کاربردها، وسایل و شبکه ارائه دهد. امن ساختن یک پلتفرم باز به یک معماری امنیتی قوی و برنامه های امنیتی سخت گیر نیاز دارد. اندروید با یک امنیت چند سطحی طراحی شده است که انعطاف پذیری مورد نیاز برای یک پلتفرم باز را فراهم می کند. و در این حالت حفاظت از تمام کابران پلتفرم را فراهم می کند. اندروید بر اساس تفکرات توسعه دهندگان آن طراحی شد. کنترلهای امنیتی برای کاهش هزینه های سربار توسعه دهندگان طراحی شد. توسعه دهندگان می توانند به راحتی کار کنند و به کنترهای امنیتی انعطاف پذیر اعتماد داشته باشند. آنها کمتر با امنیتی که بوسیله ی پیشفرض های امن تامین می شوند آشنا هستند. اندروید بر اساس تفکرات کاربران آن طراحی شد. طریقه کار برنامه های کاربردی برای کاربران قابل رویت است و کاربران می توانند آن ها را کنترل کنند. این طراحی دارای استثناء هایی است که حمله کننده تلاش دارد برای حمله از آنها استفاده کند، مثل حمله مهندسی اجتماعی برای متقاعد کردن کاربران در نصب بدافزار(malware) و حمله به برنامه های کاربردی ثالث روی اندروید.     قسمت های تشکیل دهنده پلت فرم اندروید به شرح زیر هستند: - سخت افزار: اندروید روی یک گستره ی وسیعی از سخت افزارها اجرا می شود، مانند گوشی های هوشمند، تبلت ها و ستاپ باکس ها(set-up-boxes). اندروید processor-agnostic است اما از مزایای بعضی از سخت افزارها به خصوص قابلیتهای امنیتی مثل ARM v6 eXecute- استفاده نمی کند. - سیستم عامل: سیستم عامل اصلی روی هسته لینوکس ساخته شده است. همه منابع وسایل، مانند توابع دوربین، داده های GPS، توابع بلوتوث، توابع مکالمه، ارتباطات شبکه و غیره به وسیله سیستم عامل استفاده می شوند. - کاربردهای زمان اجرا: کاربردهای اندروید اغلب با زبان برنامه نویسی جاوا نوشته می شوند و روی ماشین مجازی Dalvik اجرا می شوند. با این وجود خیلی از کاربردها از قبیل سرویس ها و کاربردهای اصلی اندروید، بومی هستند و یا شامل کتابخانه های بومی هستند. هر دوی Dalvik و کاربردهای بومی در داخل یک محیط امنیتی یکسان درون Sandbox - اجرا می شوند. کاربردها یک قسمت اختصاصی از سیستم فایل را گرفته و می توانند داده های خصوصی خود شامل فایل های پایگاه داده را در آن بنویسند. کاربردهای اندروید، سیستم عامل اصلی اندروید را توسعه می دهند. این کاربردها دو دسته هستند: 1 . کاربردهای از پیش نصب شده: اندروید شامل یک مجموعه از کاربردهای از پیش نصب شده است، از قبیل تلفن، ایمیل، تقویم، کاوشگر وب، و دفترچه تلفن. این توابع هم مورد استفاده کاربران قرار می گیرند و هم قابلیت های ویژه ای را برای کاربردهای دیگر فراهم می کنند. این کاربردها ممکن است قسمتی از پلتفرم بازمتن باشند یا ممکن است به وسیله یک OEM برای یک برای یک دستگاه خاص توسعه داده شده باشد. 2 . کاربردهای نصب شده توسط کاربرد: این دسته را بیشتر تحت عنوان برنامه کاربردی می شناسند. اندروید یک محیط توسعه باز را برای پشتیبانی از یک کاربرد سومی(کاربرد ثالث) فراهم می کند. فروشگاه اندروید صدها هزار برنامه کاربردی را برای استفاده کنندگان ارائه داده است. گوگل مجموعه ای از سرویس های ابری(Cloud service) را فراهم می کند که برای هر دستگاه اندروید سازگار در دسترس است. سرویس های ابری اصلی به این شرح هستند: 1) فروشگاه اندروید(Android Market): این فروشگاه یک مجموعه از سرویس ها است که به کاربران اجازه می دهد از طریق وب یا دستگاه اندروید خود برنامه های کاربردی مورد نظر خود را پیدا کرده، خریده و نصب کنند . 2) بروز رسانی اندروید(Android Update): سرویس بروزرسانی اندروید قابلیت های جدید و بروزرسانی های امنیتی جدید را به صورت خودکار یا از طریق وب فراهم می کند. 3) سرویس های کاربرد (Application Service): چارچوبی که به کاربردهای اندروید اجازه می دهد که از قابلیتهای ابری(cloud capabilities) استفاده کند. از جمله این قابلیت ها می توان به پشتیبان گیری از داده های برنامه ها و تنظیمات، و پیام رسانی از ابر به دستگاه (C2DM) اشاره کرد.
قسمت های تشکیل دهنده پلت فرم اندروید به شرح زیر هستند: - سخت افزار: اندروید روی یک گستره ی وسیعی از سخت افزارها اجرا می شود، مانند گوشی های هوشمند، تبلت ها و ستاپ باکس ها(set-up-boxes). اندروید processor-agnostic است اما از مزایای بعضی از سخت افزارها به خصوص قابلیتهای امنیتی مثل ARM v6 eXecute- استفاده نمی کند. - سیستم عامل: سیستم عامل اصلی روی هسته لینوکس ساخته شده است. همه منابع وسایل، مانند توابع دوربین، داده های GPS، توابع بلوتوث، توابع مکالمه، ارتباطات شبکه و غیره به وسیله سیستم عامل استفاده می شوند. - کاربردهای زمان اجرا: کاربردهای اندروید اغلب با زبان برنامه نویسی جاوا نوشته می شوند و روی ماشین مجازی Dalvik اجرا می شوند. با این وجود خیلی از کاربردها از قبیل سرویس ها و کاربردهای اصلی اندروید، بومی هستند و یا شامل کتابخانه های بومی هستند. هر دوی Dalvik و کاربردهای بومی در داخل یک محیط امنیتی یکسان درون Sandbox - اجرا می شوند. کاربردها یک قسمت اختصاصی از سیستم فایل را گرفته و می توانند داده های خصوصی خود شامل فایل های پایگاه داده را در آن بنویسند. کاربردهای اندروید، سیستم عامل اصلی اندروید را توسعه می دهند. این کاربردها دو دسته هستند: 1 . کاربردهای از پیش نصب شده: اندروید شامل یک مجموعه از کاربردهای از پیش نصب شده است، از قبیل تلفن، ایمیل، تقویم، کاوشگر وب، و دفترچه تلفن. این توابع هم مورد استفاده کاربران قرار می گیرند و هم قابلیت های ویژه ای را برای کاربردهای دیگر فراهم می کنند. این کاربردها ممکن است قسمتی از پلتفرم بازمتن باشند یا ممکن است به وسیله یک OEM برای یک برای یک دستگاه خاص توسعه داده شده باشد. 2 . کاربردهای نصب شده توسط کاربرد: این دسته را بیشتر تحت عنوان برنامه کاربردی می شناسند. اندروید یک محیط توسعه باز را برای پشتیبانی از یک کاربرد سومی(کاربرد ثالث) فراهم می کند. فروشگاه اندروید صدها هزار برنامه کاربردی را برای استفاده کنندگان ارائه داده است. گوگل مجموعه ای از سرویس های ابری(Cloud service) را فراهم می کند که برای هر دستگاه اندروید سازگار در دسترس است. سرویس های ابری اصلی به این شرح هستند: 1) فروشگاه اندروید(Android Market): این فروشگاه یک مجموعه از سرویس ها است که به کاربران اجازه می دهد از طریق وب یا دستگاه اندروید خود برنامه های کاربردی مورد نظر خود را پیدا کرده، خریده و نصب کنند . 2) بروز رسانی اندروید(Android Update): سرویس بروزرسانی اندروید قابلیت های جدید و بروزرسانی های امنیتی جدید را به صورت خودکار یا از طریق وب فراهم می کند. 3) سرویس های کاربرد (Application Service): چارچوبی که به کاربردهای اندروید اجازه می دهد که از قابلیتهای ابری(cloud capabilities) استفاده کند. از جمله این قابلیت ها می توان به پشتیبان گیری از داده های برنامه ها و تنظیمات، و پیام رسانی از ابر به دستگاه (C2DM) اشاره کرد.