21-03-2008, 16:45
Подписывание sis-пакетов, часть первая – вводная
В данной теме предлагаю обсудить вопросы, связанные с подписыванием установочных SIS-пакетов Symbian, и необходимый для этого софт. На различных сайтах и форумах, посвященных мобильной тематике, размещено огромное количество инструкций, а также обсуждений вопросов подписи, тем не менее, я надеюсь на то, что данная тема будет полезна для пользователей Symbian девайсов. Кроме перечисления необходимого софта, я постараюсь изложить теоретические основы процесса, а также осветить последние тенденции и изменения, связанные с получением сертификатов, необходимых для подписывания sis-файлов. Приступим
.
Как известно, начиная с Symbian 9.1 все SIS файлы необходимо подписывать. Подпись позволяет подтвердить факт, что содержимое файла на пути от поставщика до потребителя (пользователя устройства, производящего установку sis-пакета на свой телефон) остается неизменным (в него не были внесены модификации). Сертификат, записываемый в sis-файл при формировании подписи, позволяет определить поставщика установочного пакета, также его открытый ключ (public key) служит для проверки подписи в процессе установки.
Как составная часть системы защиты (platform security) в ОС Symbian 9 введено понятие возможностей (capabilities), которые определяют доступ приложения к тем или иным API операционной системы. Возможности сгруппированы согласно тому, как выполнение функций, которые они обеспечивают, может повлиять на устройство. Каждая возможность нуждается в уровне доверия, который обеспечивается сертификатом - таким образом, сертификат дает приложению возможность вызывать необходимые функции согласно набору capabilities. Список необходимых capabilities вносится разработчиком в MMP-файл и в последующем записывается в заголовок исполняемого файла приложения при сборке из исходников.
С точки зрения доверия существуют два типа сертификатов: self-signed (untrusted) и доверенные сертификаты Symbian. В первом случае сертификат создается самостоятельно разработчиком приложения/ автором sis-файла, во втором – компанией Symbian. От уровня доверия сертификату зависит набор обеспечиваемых приложению возможностей (capabilities).
Self-signed сертификат не является надежным, поэтому согласно политики безопасности ОС Symbian данный сертификат может гарантировать устанавливаемому приложению только базовый набор «пользовательских возможностей» (user grantable capabilities). При установке sis-пакета, подписанного self-signed сертификатом, пользователь получает предупреждение, о том, что пакет получен из ненадежного источника и самостоятельно принимает решение, устанавливать ли его на свое устройство (тем самым разрешая или отказывая программе использовать необходимые ей функции). Набор user grantable capabilities определяется в файле политики установщика приложений (Software Installer (SWI) policy) и может варьироваться в зависимости от производителя, модели, а также региона поставки устройства.
Сертификаты, выпущенные Symbian, имеют бОльшую степень доверия (к примеру, Content certificate обеспечивает все capabilities, а sis-пакет, им подписанный, не имеет ограничений при установке), чем self-signed сертификаты.
Существует такая разновидность Symbian сертификата как сертификат разработчика (Developer Certificate), предназначенный для тестирования приложений на мобильных устройствах (чтобы не полагаться только на тестирование в эмуляторе). Для того чтобы произвести установку приложения на устройство необходимо обеспечить требуемые ему capabilities, что и делает данный сертификат. Сертификаты разработчика отличаются от Content certificates (которым Symbian подписывает sis-файлы, предназначенные для конечных пользователей) тем, что действуют на телефоне с определенными IMEI/ESN) и имеют четко заданный набор обеспечиваемых capabilities. Установка sis-пакета возможна только на аппарат, IMEI которого прописан в сертификате, при этом пользователь получает предупреждение о том, что приложение предназначено для тестирования, а не повседневного использования (что впрочем, его использование никак не ограничивает).
Прежде чем подписывать sis-пакет, необходимо выяснить какой сертификат нам нужен – self-signed или developer certificate, что определяется набором возможностей (capabilities), требующихся приложению для работы. Последний предоставляет больше возможностей, и в принципе, ничто не мешает нам подписывать им все sis-файлы, однако sis-пакет можно будет установить только на то устройство, IMEI которого прописан в данном сертификате. Пакеты, подписанные self-signed сертификатом, напротив, можно установить на все аппараты, но список обеспечиваемых им capabilities меньше.
Self-signed сертификат можно создать самостоятельно при помощи специальных утилит, а сертификат разработчика выдает компания Symbian. До недавнего времени пользователи могли беспрепятственно оформить такой сертификат, зарегистрировав аккаунт на сайте Symbian signed и сформировав запрос с помощью программы DevCertRequest. Однако в начале марта в процедуру получения сертификатов были внесены изменения – по новым правилам их могут оформить только компании-разработчики (юр. лица), имеющие Publisher Id, который стоит 200$ (на 3 года) и физическим лицам не выдается. Всем остальным (не имеющим PubId) было предложено использовать сервис Open signed online, принцип работы которого заключается в следующем - неподписанный sis-пакет загружается на сайт Symbian signed, отмечаются необходимые приложению capabilities, после чего на указанный почтовый ящик приходит письмо со ссылкой, перейдя по которой, подписанный файл можно скачать.
Пользователи, не успевшие оформить сертификат разработчика до вступления в силу новых правил, начали возмущаться тем, что Symbian пытается на них «нажиться», предоставляя сертификаты за деньги. Однако эти выводы были сделаны без учета одного факта – сервис выдачи сертификатов был изначально предназначен только для разработчиков приложений, и фактически, обычные владельцы аппаратов пользовались им нелегально, создавая при этом неслабую нагрузку на серверы компании Symbian (разработчики начали жаловаться, что сервис временами бывает недоступен). Думаю, ни для кого не секрет, что большая часть сертификатов использовалась для подписывания так называемого вареза – взломанных и перепакованных программ. В результате подобных действий со стороны потребителей софта мы имеет то, что имеем – сертификат разработчика пользователю не получить, а подпись в режиме Open signed online доступна только для приложений, UID3 которых принадлежит автору программы. На этом моменте я остановлюсь подробнее.
Каждый исполняемый файл в Symbian имеет уникальный идентификатор (UID), отличающий его от других процессов в системе и представляющий 32-битное число в диапазоне 0x00000000 - 0xFFFFFFFF. При разработке приложения автор может запросить UID3 на сайте Symbian signed или придумать его самостоятельно, причем первый способ является настоятельно рекомендуемым Symbian так как гарантирует, что запрошенный UID действительно уникален и никем не используется. Все запрошенные UID хранятся в базе данных и сопоставлены с их владельцами (зарегистрированными пользователями сайта Symbian signed, которые при регистрации аккаунта указывают свой e-mail).
Теперь о том, как это относится к процедуре Open signed online. Итак, посетитель загрузил sis-пакет на сайт Symbian signed для подписи и указал e-mail, на который он хотел бы получить ссылку на закачку уже подписанного файла. При загрузке из sis-пакета извлекаются все исполняемые файлы, и просматривается их UID3. Далее происходит поиск в базе данных значений данных UID3 и попытка сопоставить их с владельцем. При совпадении адреса (e-mail) посетителя, отправившего sis-пакет на подпись, адресу владельца UID3 (который он указал при регистрации на Symbian signed) установочный пакет будет подписан, в противном случае посетителя постигнет неудача. При этом остается одна лазейка – если UID3 не будет найден в базе, сервис не сможет установить владельца и подпишет sis-пакет. Этим не преминули воспользоваться некоторые разработчики приложений, по каким-то причинам не желающие отправлять свои творения на сертификацию и подписывание в Symbian и предпочитающие переложить эту заботу на пользователей. Они сменили в исходниках UID3 своих приложений со значений, полученных на Symbian signed, на придуманные (и отсутствующие в базе Symbian), в результате чего любой пользователь может подписать sis-пакет с программой самостоятельно. Зато нововведение серьезно ударило по любителям вареза, шансы которых на успешное подписывание упали до нуля. Сменить UID3 уже скомпилированного приложения – задача очень нетривиальная, получить сертификат, не имея Publisher Id, невозможно. Некоторые пользователи, знающие, что сертификат можно извлечь из подписанного sis-пакета, начали строить предположения о том, как бы его использовать в своих целях, не учитывая того факта, что без секретного ключа (private key) сертификат бесполезен, и это направление тупиковое. Впрочем, в арсенале взломщиков остались такие способы как использование генераторов регистрационных ключей и патчинг прошивки.
Вот такое получилось «краткое» вступление к теме. В нем я постарался осветить теоретические вопросы, касающиеся подписывания, а также упомянуть последние изменения, связанные с получением сертификатов для подписи. Насколько у меня получилось - решать вам, я же перехожу ко второй части.
.Как известно, начиная с Symbian 9.1 все SIS файлы необходимо подписывать. Подпись позволяет подтвердить факт, что содержимое файла на пути от поставщика до потребителя (пользователя устройства, производящего установку sis-пакета на свой телефон) остается неизменным (в него не были внесены модификации). Сертификат, записываемый в sis-файл при формировании подписи, позволяет определить поставщика установочного пакета, также его открытый ключ (public key) служит для проверки подписи в процессе установки.
Как составная часть системы защиты (platform security) в ОС Symbian 9 введено понятие возможностей (capabilities), которые определяют доступ приложения к тем или иным API операционной системы. Возможности сгруппированы согласно тому, как выполнение функций, которые они обеспечивают, может повлиять на устройство. Каждая возможность нуждается в уровне доверия, который обеспечивается сертификатом - таким образом, сертификат дает приложению возможность вызывать необходимые функции согласно набору capabilities. Список необходимых capabilities вносится разработчиком в MMP-файл и в последующем записывается в заголовок исполняемого файла приложения при сборке из исходников.
С точки зрения доверия существуют два типа сертификатов: self-signed (untrusted) и доверенные сертификаты Symbian. В первом случае сертификат создается самостоятельно разработчиком приложения/ автором sis-файла, во втором – компанией Symbian. От уровня доверия сертификату зависит набор обеспечиваемых приложению возможностей (capabilities).
Self-signed сертификат не является надежным, поэтому согласно политики безопасности ОС Symbian данный сертификат может гарантировать устанавливаемому приложению только базовый набор «пользовательских возможностей» (user grantable capabilities). При установке sis-пакета, подписанного self-signed сертификатом, пользователь получает предупреждение, о том, что пакет получен из ненадежного источника и самостоятельно принимает решение, устанавливать ли его на свое устройство (тем самым разрешая или отказывая программе использовать необходимые ей функции). Набор user grantable capabilities определяется в файле политики установщика приложений (Software Installer (SWI) policy) и может варьироваться в зависимости от производителя, модели, а также региона поставки устройства.
Сертификаты, выпущенные Symbian, имеют бОльшую степень доверия (к примеру, Content certificate обеспечивает все capabilities, а sis-пакет, им подписанный, не имеет ограничений при установке), чем self-signed сертификаты.
Существует такая разновидность Symbian сертификата как сертификат разработчика (Developer Certificate), предназначенный для тестирования приложений на мобильных устройствах (чтобы не полагаться только на тестирование в эмуляторе). Для того чтобы произвести установку приложения на устройство необходимо обеспечить требуемые ему capabilities, что и делает данный сертификат. Сертификаты разработчика отличаются от Content certificates (которым Symbian подписывает sis-файлы, предназначенные для конечных пользователей) тем, что действуют на телефоне с определенными IMEI/ESN) и имеют четко заданный набор обеспечиваемых capabilities. Установка sis-пакета возможна только на аппарат, IMEI которого прописан в сертификате, при этом пользователь получает предупреждение о том, что приложение предназначено для тестирования, а не повседневного использования (что впрочем, его использование никак не ограничивает).
Прежде чем подписывать sis-пакет, необходимо выяснить какой сертификат нам нужен – self-signed или developer certificate, что определяется набором возможностей (capabilities), требующихся приложению для работы. Последний предоставляет больше возможностей, и в принципе, ничто не мешает нам подписывать им все sis-файлы, однако sis-пакет можно будет установить только на то устройство, IMEI которого прописан в данном сертификате. Пакеты, подписанные self-signed сертификатом, напротив, можно установить на все аппараты, но список обеспечиваемых им capabilities меньше.
Self-signed сертификат можно создать самостоятельно при помощи специальных утилит, а сертификат разработчика выдает компания Symbian. До недавнего времени пользователи могли беспрепятственно оформить такой сертификат, зарегистрировав аккаунт на сайте Symbian signed и сформировав запрос с помощью программы DevCertRequest. Однако в начале марта в процедуру получения сертификатов были внесены изменения – по новым правилам их могут оформить только компании-разработчики (юр. лица), имеющие Publisher Id, который стоит 200$ (на 3 года) и физическим лицам не выдается. Всем остальным (не имеющим PubId) было предложено использовать сервис Open signed online, принцип работы которого заключается в следующем - неподписанный sis-пакет загружается на сайт Symbian signed, отмечаются необходимые приложению capabilities, после чего на указанный почтовый ящик приходит письмо со ссылкой, перейдя по которой, подписанный файл можно скачать.
Пользователи, не успевшие оформить сертификат разработчика до вступления в силу новых правил, начали возмущаться тем, что Symbian пытается на них «нажиться», предоставляя сертификаты за деньги. Однако эти выводы были сделаны без учета одного факта – сервис выдачи сертификатов был изначально предназначен только для разработчиков приложений, и фактически, обычные владельцы аппаратов пользовались им нелегально, создавая при этом неслабую нагрузку на серверы компании Symbian (разработчики начали жаловаться, что сервис временами бывает недоступен). Думаю, ни для кого не секрет, что большая часть сертификатов использовалась для подписывания так называемого вареза – взломанных и перепакованных программ. В результате подобных действий со стороны потребителей софта мы имеет то, что имеем – сертификат разработчика пользователю не получить, а подпись в режиме Open signed online доступна только для приложений, UID3 которых принадлежит автору программы. На этом моменте я остановлюсь подробнее.
Каждый исполняемый файл в Symbian имеет уникальный идентификатор (UID), отличающий его от других процессов в системе и представляющий 32-битное число в диапазоне 0x00000000 - 0xFFFFFFFF. При разработке приложения автор может запросить UID3 на сайте Symbian signed или придумать его самостоятельно, причем первый способ является настоятельно рекомендуемым Symbian так как гарантирует, что запрошенный UID действительно уникален и никем не используется. Все запрошенные UID хранятся в базе данных и сопоставлены с их владельцами (зарегистрированными пользователями сайта Symbian signed, которые при регистрации аккаунта указывают свой e-mail).
Теперь о том, как это относится к процедуре Open signed online. Итак, посетитель загрузил sis-пакет на сайт Symbian signed для подписи и указал e-mail, на который он хотел бы получить ссылку на закачку уже подписанного файла. При загрузке из sis-пакета извлекаются все исполняемые файлы, и просматривается их UID3. Далее происходит поиск в базе данных значений данных UID3 и попытка сопоставить их с владельцем. При совпадении адреса (e-mail) посетителя, отправившего sis-пакет на подпись, адресу владельца UID3 (который он указал при регистрации на Symbian signed) установочный пакет будет подписан, в противном случае посетителя постигнет неудача. При этом остается одна лазейка – если UID3 не будет найден в базе, сервис не сможет установить владельца и подпишет sis-пакет. Этим не преминули воспользоваться некоторые разработчики приложений, по каким-то причинам не желающие отправлять свои творения на сертификацию и подписывание в Symbian и предпочитающие переложить эту заботу на пользователей. Они сменили в исходниках UID3 своих приложений со значений, полученных на Symbian signed, на придуманные (и отсутствующие в базе Symbian), в результате чего любой пользователь может подписать sis-пакет с программой самостоятельно. Зато нововведение серьезно ударило по любителям вареза, шансы которых на успешное подписывание упали до нуля. Сменить UID3 уже скомпилированного приложения – задача очень нетривиальная, получить сертификат, не имея Publisher Id, невозможно. Некоторые пользователи, знающие, что сертификат можно извлечь из подписанного sis-пакета, начали строить предположения о том, как бы его использовать в своих целях, не учитывая того факта, что без секретного ключа (private key) сертификат бесполезен, и это направление тупиковое. Впрочем, в арсенале взломщиков остались такие способы как использование генераторов регистрационных ключей и патчинг прошивки.
Вот такое получилось «краткое» вступление к теме. В нем я постарался осветить теоретические вопросы, касающиеся подписывания, а также упомянуть последние изменения, связанные с получением сертификатов для подписи. Насколько у меня получилось - решать вам, я же перехожу ко второй части.
