Интерес к безопасности мобильных устройств растет с каждым днем. И если безопасность платформ Android и iOS уже достаточно хорошо рассмотрена как на страницах нашего журнала, так и на просторах Сети, то в случае с Windows Phone существует большой информационный пробел, который мы сегодня постараемся восполнить.

Модель безопасности

Модель безопасности Windows Phone основана на нескольких принципах:

  • Chambers
  • Capabilities
  • Sandboxing
  • Isolated storage
  • Applications signing

Первый принцип — это изолированные «камеры» (chambers). Каждый программный код, работающий в Windows Phone, работает в одной из нескольких камер. Камеры представляют собой ограничители безопасности, которые определяют, что код может делать и чего не может делать. В Windows Phone 7 существует четыре камеры. Первая —trusted computing base chamber. Ядро ОС и драйверы, работающие в режиме ядра, запускаются в этой камере. Код, работающий в этой камере, обладает всеми разрешениями, в том числе может изменять политику безопасности.

Следующая камера —elevated rights chamber. В этой камере работают драйверы в пользовательском режиме, а также сервисы ОС. Elevated rights chamber обладает тем же набором разрешений, что и trusted computing base chamber, кроме возможности изменять политику безопасности. В standard rights chamber работают все предустановленные приложения, как от Microsoft, так и от вендоров. И наконец, последняя камера —это least privilege chamber. В ней работают все сторонние приложения. Главное отличие этой камеры от трех предыдущих в том, что она имеет динамический набор разрешений —он формируется на основе «возможностей» (capabilities) каждого приложения.

В Windows Phone 8 этот принцип был упрощен, но вместе с тем модель безопасности стала строже. Теперь есть всего две камеры: trust computing base chamber и least privilege chamber. Для trust computing base chamber ничего не изменилось: тот же набор ПО и тот же набор разрешений. Все программы, работавшие в elevated rights chamber и standard rights chamber, теперь работают в LPC. Это потребовало серьезно расширить список «возможностей» (capabilities) для того, чтобы гарантировать, что для каждого несистемного кода, который запускается на устройстве, корректно настроена камера.

Что же это за «возможности»? Это некий маркер, который говорит операционной системе о том, что приложение использует ту или иную функциональность. Например, приложение «Навигатор» объявляет, что использует сервис определения местоположения и доступ в интернет. При установке такого приложения операционная система сгенерирует chamber, основываясь на объявленных возможностях. И если вдруг в процессе работы приложение попробует получить доступ к медиабиблиотеке, вывалится исключение.

В Windows Phone 8 было добавлено множество новых возможностей. Некоторые из них соответствуют новым софтварным и хардварным фичам платформы, но большинство было добавлено для того, чтобы иметь возможность перенести все несистемное ПО в least privilege chamber и сконфигурировать его. Эти возможности официально не задокументированы. Также существует еще ряд незадокументированных возможностей, которые используются в приложениях Microsoft и вендоров. Наиболее интересная из них для Windows Phone 7 —это возможность напрямую обращаться к системным библиотекам (interop services). Однако обычным разработчикам запрещено использовать такие возможности, приложение просто не попадет в магазин приложений,

Следующий принцип модели безопасности Windows Phone —это принцип песочницы (Sandboxing). Здесь действует несколько правил. Приложения не могут взаимодействовать между собой. Ничего похожего на intent — сообщения, как в Android, нет. Структура файловой системы скрыта от приложений, все операции ввода — вывода ограничены изолированным хранилищем (Isolated storage). У каждого приложения есть собственное изолированное хранилище, при этом доступ к нему ограничен только этим приложением.

Изолированное хранилище (Isolated storage) позволяет хранить данные тремя способами: набор ключ —значение (например, для сохранения настроек приложения), обычные файлы и база данных (SQL Server СЕ). Это хранилище у каждого приложения свое, и никто, кроме самого приложения, туда доступ не имеет.

Теперь перейдем ближе к приложениям. Microsoft также предпринимает шаги для того, чтобы распространение приложений сделать более безопасным. Все приложения имеют цифровую подпись (Applications signing). Все сборки подписываются, в том числе системные, приложения с неподписанными сборками даже не могут быть установлены на устройство. И с августа 2012 года Microsoft изменила формат файла приложений таким образом, что теперь его содержимое не может быть распаковано. Если раньше ХАР — файл был всего лишь ZIP — архивом и легко распаковывался после изменения расширения, то сейчас формат ХАР — файла неизвестен.