На уровне операционной системы платформа Android обеспечивает безопасность ядра Linux, а также средство безопасного межпроцессного взаимодействия (IPC), обеспечивающее безопасную связь между приложениями, работающими в разных процессах. Эти функции безопасности на уровне ОС гарантируют, что даже нативный код ограничен песочницей приложения. Независимо от того, является ли этот код результатом включенного поведения приложения или эксплуатации уязвимости приложения, система предназначена для предотвращения нанесения мошенническим приложением вреда другим приложениям, системе Android или самому устройству. См. Конфигурация ядра , чтобы узнать о мерах, которые можно предпринять для усиления ядра на ваших устройствах. Необходимые настройки см. в документе определения совместимости с Android (CDD) .
Безопасность Linux
Основой платформы Android является ядро Linux. Ядро Linux широко используется в течение многих лет и используется в миллионах сред, чувствительных к безопасности. Благодаря своей истории постоянных исследований, атак и исправлений со стороны тысяч разработчиков, Linux стал стабильным и безопасным ядром, которому доверяют многие корпорации и специалисты по безопасности.
В качестве основы для мобильной вычислительной среды ядро Linux предоставляет Android несколько ключевых функций безопасности, в том числе:
- Модель разрешений на основе пользователей
- Изоляция процесса
- Расширяемый механизм для безопасного IPC
- Возможность удаления ненужных и потенциально небезопасных частей ядра
Как многопользовательская операционная система, основная цель безопасности ядра Linux состоит в том, чтобы изолировать пользовательские ресурсы друг от друга. Философия безопасности Linux заключается в защите пользовательских ресурсов друг от друга. Таким образом, линукс:
- Запрещает пользователю A читать файлы пользователя B
- Гарантирует, что пользователь A не исчерпает память пользователя B
- Гарантирует, что пользователь A не исчерпает ресурсы процессора пользователя B
- Гарантирует, что пользователь А не истощает устройства пользователя Б (например, телефонию, GPS и Bluetooth).
Песочница приложения
Безопасность приложений Android обеспечивается песочницей приложений, которая изолирует приложения друг от друга и защищает приложения и систему от вредоносных приложений. Дополнительные сведения см. в разделе «Песочница приложения ».
Системный раздел и безопасный режим
Системный раздел содержит ядро Android, а также библиотеки операционной системы, среду выполнения приложений, структуру приложений и приложения. Этот раздел установлен только для чтения. Когда пользователь загружает устройство в безопасном режиме, сторонние приложения могут запускаться владельцем устройства вручную, но не запускаются по умолчанию.
Разрешения файловой системы
В среде в стиле UNIX разрешения файловой системы гарантируют, что один пользователь не сможет изменять или читать файлы другого пользователя. В случае с Android каждое приложение работает как отдельный пользователь. Если разработчик явным образом не передает файлы другим приложениям, файлы, созданные одним приложением, не могут быть прочитаны или изменены другим приложением.
Linux с повышенной безопасностью
Android использует Linux с улучшенной безопасностью (SELinux) для применения политик контроля доступа и установки обязательного контроля доступа (mac) для процессов. Дополнительные сведения см. в разделе Linux с улучшенной безопасностью в Android .
Проверенная загрузка
Android 6.0 и более поздние версии поддерживают проверку подлинности загрузки и сопоставления устройств. Подтвержденная загрузка гарантирует целостность программного обеспечения устройства, начиная с аппаратного корня доверия и заканчивая системным разделом. Во время загрузки каждый этап криптографически проверяет целостность и подлинность следующего этапа перед его выполнением.
Android 7.0 и более поздние версии поддерживают строго принудительную проверку загрузки, что означает, что скомпрометированные устройства не могут загружаться.
Дополнительные сведения см. в разделе « Проверенная загрузка ».
Криптография
Android предоставляет набор криптографических API для использования приложениями. К ним относятся реализации стандартных и часто используемых криптографических примитивов, таких как AES, RSA, DSA и SHA. Кроме того, API предоставляются для протоколов более высокого уровня, таких как SSL и HTTPS.
В Android 4.0 представлен класс KeyChain , позволяющий приложениям использовать системное хранилище учетных данных для закрытых ключей и цепочек сертификатов.
Укоренение устройств
По умолчанию в Android только ядро и небольшое подмножество основных приложений запускаются с правами суперпользователя. Android не запрещает пользователю или приложению с правами суперпользователя изменять операционную систему, ядро или любое другое приложение. В общем, root имеет полный доступ ко всем приложениям и всем данным приложений. Пользователи, которые изменяют разрешения на устройстве Android, чтобы предоставить root-доступ к приложениям, увеличивают уязвимость безопасности для вредоносных приложений и потенциальных недостатков приложений.
Возможность модифицировать собственное Android-устройство важна для разработчиков, работающих с платформой Android. На многих устройствах Android пользователи могут разблокировать загрузчик, чтобы разрешить установку альтернативной операционной системы. Эти альтернативные операционные системы могут позволить владельцу получить root-доступ для целей отладки приложений и системных компонентов или для доступа к функциям, не предоставляемым приложениям с помощью Android API.
На некоторых устройствах человек, имеющий физический контроль над устройством и USB-кабелем, может установить новую операционную систему, которая предоставляет пользователю привилегии root. Чтобы защитить любые существующие пользовательские данные от компрометации, механизм разблокировки загрузчика требует, чтобы загрузчик стер все существующие пользовательские данные как часть шага разблокировки. Root-доступ, полученный с использованием ошибки ядра или дыры в безопасности, может обойти эту защиту.
Шифрование данных с помощью ключа, хранящегося на устройстве, не защищает данные приложения от пользователей root. Приложения могут добавить уровень защиты данных, используя шифрование с ключом, хранящимся вне устройства, например, на сервере или паролем пользователя. Этот подход может обеспечить временную защиту, пока ключ отсутствует, но в какой-то момент ключ должен быть предоставлен приложению, после чего он становится доступным для пользователей root.
Более надежный подход к защите данных от пользователей root — использование аппаратных решений. OEM-производители могут внедрить аппаратные решения, которые ограничивают доступ к определенным типам контента, таким как DRM для воспроизведения видео или доверенное хранилище, связанное с NFC, для кошелька Google.
В случае утери или кражи устройства полное шифрование файловой системы на устройствах Android использует пароль устройства для защиты ключа шифрования, поэтому модификации загрузчика или операционной системы недостаточно для доступа к пользовательским данным без пароля пользовательского устройства.
Функции безопасности пользователя
Шифрование файловой системы
Android 3.0 и более поздние версии обеспечивают полное шифрование файловой системы, поэтому все пользовательские данные могут быть зашифрованы в ядре.
Android 5.0 и более поздние версии поддерживают полное шифрование диска . Полнодисковое шифрование использует один ключ, защищенный паролем устройства пользователя, для защиты всего раздела пользовательских данных устройства. При загрузке пользователи должны предоставить свои учетные данные, прежде чем будет доступна какая-либо часть диска.
Android 7.0 и более поздние версии поддерживают шифрование файлов . Шифрование на основе файлов позволяет шифровать разные файлы разными ключами, которые можно разблокировать независимо друг от друга.
Более подробная информация о реализации шифрования файловой системы доступна в разделе Шифрование .
Защита паролем
Android можно настроить для проверки введенного пользователем пароля перед предоставлением доступа к устройству. Помимо предотвращения несанкционированного использования устройства, этот пароль защищает криптографический ключ для полного шифрования файловой системы.
Администратор устройства может потребовать использования пароля и/или правил сложности пароля.
Администрирование устройства
Android 2.2 и более поздние версии предоставляют API администрирования устройств Android, который предоставляет функции администрирования устройств на системном уровне. Например, встроенное приложение электронной почты Android использует API для улучшения поддержки Exchange. С помощью приложения электронной почты администраторы Exchange могут применять политики паролей, включая буквенно-цифровые пароли или числовые PIN-коды, на всех устройствах. Администраторы также могут удаленно стереть (то есть восстановить заводские настройки по умолчанию) утерянные или украденные телефоны.
Помимо использования в приложениях, включенных в систему Android, эти API доступны сторонним поставщикам решений для управления устройствами. Подробная информация об API представлена в разделе « Администрирование устройства» .