Установка приложений и сертификаты

Внимательный читатель, видимо, уже задал себе вопрос: что мешает разработчику объявить в исполняемом файле доступ ко всем защищенным возможностям и получить полную свободу действий? Ответ кроется в процедуре инсталляции SIS-пакетов.

Платформа безопасности Symbian 9.x не позволяет пользователю получить прямой доступ к каталогу \sys\bin\, хранящему исполняемые файлы. Поэтому единственный способ инсталлировать приложение на устройство — воспользоваться системным установщиком (являющимся компонентом ТСВ). Для этого программа, сопутствующие файлы и ресурсы упаковываются в файл с расширением . sis или . sisx. SIS-пакет хранит информацию о каталогах, в которые следует скопировать хранящиеся в нем файлы, а также ряд настроек для установщика.

Перед установкой в SIS-файл внедряется цифровой сертификат (digital certificate), содержащий следующую информацию:

  • кем, когда и кому он выдан;
  • срок его действия;
  • список IMEI-номеров устройств, на которые разрешена установка данного SIS-файла;
  • список защищенных возможностей, доступ к которым он удостоверяет.

Процедура прикрепления цифрового сертификата называется подписыванием (signing), а сам SIS-файл становится подписанным (signed). Подписать SIS-пакет можно сразу несколькими сертификатами. SIS-файл без сертификата является неподписанным (unsigned). В Symbian 9.x установка неподписанных SIS-файлов запрещена.

Системный установщик играет роль своеобразного шлюза, проверяя сертификаты инсталлируемых SIS-файлов. В том случае, когда сертификат отсутствует либо срок его действия истек, приложение установлено не будет. После инсталляции программа может использоваться неограниченно долго — к ее работе срок действия сертификата отношения не имеет. При наличии в системе определенных настроек установщик также может выполнить онлайн-проверку сертификата и отказать в инсталляции приложения, чей сертификат был отозван.

Установщик также проверяет, что декларируемый в приложении доступ ко всем защищенным возможностям удостоверен сертификатом. Для этого он сканирует все содержащиеся в SIS-пакете исполняемые файлы и формирует общий список декларируемых в них защищенных возможностей. Такой же список формируется на основании всех прикрепленных к пакету сертификатов, после чего оба списка сравниваются. Если во множестве декларируемых исполняемыми файлами защищенных возможностей есть хоть одна, не содержащаяся во множестве возможностей, удостоверенных сертификатами, то установка приложения прерывается. Исключением является группа пользовательских возможностей — их использование может не заверяться сертификатом.

Здесь можно отметить некоторое противоречие: с одной стороны, установка неподписанных приложений в Symbian 9.x запрещена, а с другой, — программа, не использующая защищенных возможностей или ограничивающаяся доступом лишь к категории пользовательских возможностей, не нуждается в сертификате. Такое противоречие разрешается подписанием SIS-пакета сертификатом-пустышкой, не удостоверяющим каких-либо возможностей. Такой сертификат может сгенерировать сам разработчик с помощью утилит SDK. Сертификат-пустышка в англоязычной документации обозначается как «self-generated certificate», а подписанный с его помощью файл — «self-signed». Так как получить сертификат self-generated может любой, приложения, устанавливаемые при помощи пакетов self-signed, относятся к категории ненадежных.

Список защищенных возможностей, не требующих заверения сертификатом при установке, в действительности задается в файле \system\data\swipolicy. ini и может изменяться производителем устройств. Предполагается, что в него входят все возможности из категории пользовательских, и я не встречал устройства, где это было бы не так. Но вот сам состав группы пользовательских возможностей не так давно изменился — в него вошла возможность Location, ранее относившаяся к системным. На устройствах с платформой S60 и S60 FP1 возможность Location в файле swipolicy. ini не упомянута, и объявивший ее self-signed пакет не будет установлен.

Помимо типа self-generated, есть еще один специальный тип сертификата — сертификат разработчика (DevCert, Developer Certificate). Получить его относительно легко, но подписанный сертификатом разработчика SIS-пакет может быть установлен лишь на те устройства, номер IMEI которых закодирован в сертификате. Поэтому он используется только в процессе разработки и тестирования.

Вопросами сертификации приложений для Symbian OS занимается организация под названием Symbian Signed. На их сайте www. symbiansigned. com есть сервис Open Signed Online, где вы сможете подписать свой SIS-файл сертификатом разработчика для одного устройства (указав его IMEI). При этом вы сможете сформировать список заверяемых им защищенных возможностей
из числа пользовательских и системных. Заполнив все формы и отправив SIS-файл на сервер, вы через некоторое время получите подписанный SIS-пакет на указанный почтовый адрес E-mail. Сам файл сертификата разработчика вы получить не сможете.

Использование сервиса Open Signed Online накладывает ряд ограничений на содержащиеся в SIS-пакете приложения. Главным из них является использование значения UID3 (SID) из незащищенного диапазона (0хЕ0000000… 0xEFFFFFFF).

Владельцы идентификатора издателя (Publisher ID) имеют возможность при помощи сервиса Open Signed Offline заказать сертификат разработчика с любыми защищенными возможностями, кроме группы возможностей производителя. Такой сертификат может позволять установку на несколько устройств (указывается список IMEI — до 1000 номеров), а также получить сам файл сертификата и подписывать им SIS-файлы самостоятельно.

Обычный сертификат, не имеющий ограничений по IMEI и открывающий доступ ко всем необходимым защищенным возможностям, на руки не выдается. Подписать им ваше приложение можно будет, только воспользовавшись одной из программ сертификации Symbian Signed. Для этого также потребуется идентификатор издателя. Кроме того, чем более важные защищенные возможности декларируются приложением, тем более требовательную и дорогостоящую программу сертификации придется пройти.

Приложения, устанавливаемые при помощи SIS-пакетов, подписанных сертификатом разработчика или обычным сертификатом, относятся к категории надежных. Работая с такими приложениями — взлом смартфона невозможен.