21.12.2015 @ 14:23 Android Application Security, часть 2. Разбираемся в ОС Android android Данная статья является переводом соответствующей статьи Aditya Agrawal. Оригинал доступен по ссылке. В этом посте я буду говорить об архитектуре Android. Ниже представлена диаграмма архитектуры Android. Вам пока могут быть знакомы некоторые компоненты на изображении выше. Давайте начнём. Начиная снизу, мы видим ядро Linux (ведь Android построен на ядре Linux). Linux широко используется уже много лет, и его ядро получило очень много исправлений безопасности. Ядро Linux предоставляет базовый функционал системы, как то: управление процессами, памятью, устройствами типа камеры, клавиатуры, дисплея etc. Также ядро берёт на себя все те вещи, в которых Linux действительно хорош, как то: сетевое взаимодействие и широкий набор драйверов устройств, которые снимают проблемы взаимодействия с другими устройствами. Что в действительности ядро Linux предлагает Android? Выступая в качестве основания для окружения мобильного устройства, ядро Linux предоставляет Android некоторые ключевые функции безопасности, включающие в себя: Модель управления доступом на основе пользователей (дискреционная) Изоляция процессов Расширяемый механизм для безопасного IPC (межпроцессного взаимодействия) Возможность удалять ненужные и потенциально небезопасные части ядра Как многопользовательская система, фундаментальная цель ядра Linux для обеспечении безопасности — изолировать ресурсы пользователей друг от друга. Философия безопасности Linux — защищать ресурсы пользователей друг от друга. Таким образом, Linux: Предотвращает чтение пользователем A файлов пользователя B; Гарантирует, что пользователь A не израсходует часть памяти, отведённую пользователю B; Гарантирует, что пользователь A не израсходует часть процессорного времени, отведённую пользователю B; Гарантирует, что пользователь A не займёт аппаратные ресурсы пользователя B (например, телефон, GPS, Bluetooth). Слой аппаратных абстракций (Hardware Abstraction Layer, HAL) просто даёт приложениям прямой доступ к аппаратным ресурсам. Переходя к третьей части, доходим до Библиотек, Среды исполнения Android и Dalvik. Указанные на рисунке библиотеки очень важны, без них приложение не будет работать. Например, библиотека Webkit используется для просмотра веб-страниц, библиотека SQLite — для ведения баз данных SQL и т.д. Виртуальная машина Dalvik, которая специально разработана Android Open Source Project для исполнения приложений, написанных для Android. Каждое приложение, запускаемое на устройстве Android, имеет собственную виртуальную машину Dalvik. Среда исполнения Android (AndRoid Runtime, ART) — альтернатива виртуальной машине Dalvik, которая была выпущена с Android 4.4 в качестве экспериментального релиза. В Android Lolipop (5.0) она полностью заменит виртуальную машину Dalvik. Большие изменения в ART вызваны компиляцией «перед исполнением» (Ahead-Of-Time (AOT) compilation) и сборкой мусора (garbage collection). В случае с AOT-компиляцией приложения для Android будут компилироваться тогда, когда пользователь устанавливает их на своё устройство, в то время как Dalvik использовал JIT-компиляцию, при которой байт-код компилировался тогда, когда пользователь запускал приложение. Фреймворк приложения. Слой фреймворка приложения предоставляет приложениям множество служб верхнего уровня в виде классов Java. Разработчикам приложений разрешается использовать эти службы в своих приложениях. Последняя часть архитектуры, т.е. Приложения Android будет описана в следующем посте, т.к. заслуживают отдельное упоминание. div 5744 Mobile security Читать дальше >>