Способ внесения изменений в дистрибутив без повторного вычисления подписей для файлов внутри дистрибутива

Иллюстрации

Показать все

Изобретение относится к области внесения изменений в дистрибутив программного обеспечения. Технический результат настоящего изобретения заключается в обеспечении изменения дистрибутива программного обеспечения для конечного пользователя с использованием способа изменения дистрибутива программного обеспечения без повторного вычисления цифровых подписей для файлов внутри дистрибутива. Способ изменения дистрибутива содержит этапы, на которых создают дистрибутив программного обеспечения, который является АРК-файлом, при помощи средства сборки, при этом дистрибутив содержит сжатые данные файлов и цифровые подписи ко всем файлам; определяют, необходимо ли вносить изменения в созданный дистрибутив с помощью средства внесения изменений; определяют размер вносимых изменений с помощью средства внесения изменений; если размер изменений не превышает заданный порог, с помощью средства внесения изменений вносят изменения в секцию комментариев в дистрибутиве без повторного вычисления цифровых подписей для файлов внутри дистрибутива; если размер изменений превышает заданный порог, с помощью средства внесения изменений вносят изменения в области смещения между файловой структурой дистрибутива и сжатыми данными в дистрибутиве без повторного вычисления цифровых подписей для файлов внутри дистрибутива. 4 з.п. ф-лы, 4 ил.

Реферат

Область техники

Изобретение относится к решениям для мобильных устройств, а более конкретно к способу внесения изменений под конкретного пользователя в дистрибутив программного обеспечения без повторного вычисления подписей для файлов внутри дистрибутива.

Уровень техники

В настоящее время мобильная операционная система Android получает все большую популярность. Программное обеспечение для нее развивается стремительными темпами. Обновления программного обеспечения происходят регулярно, производители исправляют ошибки и выпускают обновленные версии с новой функциональностью. Дистрибутивы программного обеспечения представляют собой файлы с расширением АРК. Это архивы, в которых содержатся файлы приложения, цифровые подписи к файлам и сертификат, которым подписаны файлы. Установка дистрибутивов может выполняться как стандартным установщиком операционной системы, так и другими приложениями. Например, антивирусное приложение также может устанавливать приложения из АРК-файлов. Безопасность установки обеспечивается корректностью цифровых подписей к файлам. Поставщики программного обеспечения могут быть безошибочно определены по сертификатам. Файлы в дистрибутиве, которые не имеют цифровой подписи, имеют некорректную подпись или имеют подпись сертификатом, отличным от сертификата службы Google Play, могут быть проигнорированы приложением-установщиком, или пользователю может быть выдано предупреждение.

При поставке для конечного пользователя зачастую необходимо каким-либо образом включать дополнительные параметры и настройки вместе с предоставляемым дистрибутивом. Это позволяет выполнять установку программного обеспечения, например, без участия пользователя. Кроме этого, на этапе установки можно вносить изменения в конфигурацию уже установленного программного обеспечения, изменять количество функциональных модулей, передавать отдельные параметры для конкретных модулей и т.д.

Сама идея внесения некоторых изменений и дополнительных настроек в поставляемое программное обеспечение без повторного вычисления подписей не нова. В патентной заявке US 20050188203 дополнительные настройки предлагается кодировать, а закодированную информацию добавлять к имени файла. Но данный способ не может быть использован для передачи большого набора данных для конкретного пользователя, так как имеет множество ограничений, например: длина файла, символы в имени файла.

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

Сущность изобретения

Технический результат настоящего изобретения заключается в обеспечении изменения дистрибутива программного обеспечения для конечного пользователя с использованием способа изменения дистрибутива программного обеспечения без повторного вычисления цифровых подписей для файлов внутри дистрибутива.

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

Согласно одному из частных вариантов реализации изменения содержат правила для компонент родительского контроля антивирусного приложения.

Согласно другому частному варианту реализации изменения содержат правила о статусе проверки дистрибутива антивирусным приложением.

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

Согласно еще одному частному варианту реализации пороговое значение имеет размер в 65535 байт.

Краткое описание чертежей

Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:

Фиг.1 показывает последовательность добавления в дистрибутив дополнительных параметров для конкретного пользователя.

Фиг.2 иллюстрирует способ добавления дополнительных данных в файл дистрибутива.

Фиг.3 отображает систему средств, реализующую настоящее изобретение.

Фиг.4 представляет пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.

Описание вариантов осуществления изобретения

Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.

Фиг.1 показывает последовательность добавления в дистрибутив дополнительных параметров для конкретного пользователя. Дистрибутивы для ОС Android поставляются в виде архивных исполняемых АРК-файлов. Каждое приложение Android скомпилировано и упаковано в один файл, который включает в себя весь код приложения (DEX-файлы), ресурсы и файл .manifest. Файлы формата АРК не шифруются, являются подмножеством формата архива ZIP. Каждый АРК-файл - это сжатый архив для исполнения виртуальной машиной (например, DalvikVM), которая может быть установлена не только на операционной системе Android.

Каждый АРК-файл содержит:

- MANIFEST.MF - файл-информация о файлах в архиве (контрольные суммы);

- CERT.RSA - сертификат, которым подписано приложение;

- CERT.SF - файл-информация о ресурсах и сертификате, например:

Signature-Version: 1.0 Created-By: 1.0 (Android SignApk)

SHA1 -Digest-Manifest: GgwBrUD9W9Ks6xdxVkulGcd0fVI=

Name: res/drawable-mdpi/iclauncherwallpaper.png SHA1-Digest: Nv4FpS5EVW/+OTcQuIjTkkdac8E=

Name: res/drawable/magicsmoke_thumb.png

SHA1 -Digest: hUo+MNJ/0E+HApS3hBmGfSZMzyU=

Name: res/raw/clouds.be

SHA1-Digest:jHNc9/DOuyBN29Sy5sQT+2Dt8ao=

Подготовка дистрибутива для операционной системы Android состоит из нескольких этапов. Сначала средство сборки генерирует АРК-файл. Средство сборки - это утилита (приложение) из комплекта средств разработки для операционной системы Android (Android SDK - Android Software Development Kit), которая компилирует файлы проекта и упаковывает результаты в АРК-файл. Далее средство подписывания обрабатывает АРК-файл, сохраняя в этом файле SHA1-суммы всех файлов внутри архива и сертификат, с помощью которого были сгенерированы суммы. Средство подписывания - это утилита (приложение) из комплекта средств разработки для Java (JDK - Java Development Kit). Затем выполняется выравнивание полученного архива (например, утилитой «zipalign»). Процедура выравнивания обычно располагает сжатые данные файлов внутри архива так, чтобы обеспечить максимальное быстродействие при извлечении файлов из архива. В результате вышеописанных действий генерируется подписанный АРК-файл (этап 110), готовый к поставке пользователю и установке. При необходимости внесения изменений для конкретного пользователя определяется набор этих изменений на этапе 120. Например, изменения могут включать правила для компонент родительского контроля антивирусного приложения (технология Parental Control - комплекс правил и мер по предотвращению негативного воздействия сети интернет и компьютера на опекаемого человека, обычно ребенка). Также изменения могут содержать правила о статусе проверки архива антивирусным приложением, содержать настройки категорий файлов, используемые компонентами антивирусного приложения, обеспечивающими контроль программ (Application Control). Технология Application Control - технология антивирусного приложения для обеспечения безопасности, которая использует базу доверенных приложений (Whitelisting), содержащую полную и актуальную информацию о большинстве существующих легитимных приложений. Application Control позволяет реализовать сценарий Default Deny - «запрет по умолчанию», при котором пользователи могут запускать только проверенные и авторизованные программы.

Файлы MANIFEST.MF и CERT.SF создаются во время процедуры подписывания АРК-файла, таким образом, после подписывания уже нельзя, например, добавить еще один файл внутрь АРК-файла, который будет содержать настройки под конкретного пользователя. После определяется размер требуемых изменений (настроек под конкретного пользователя) на этапе 130. Если размер не превышает заданный порог, изменения могут быть внесены (140) в секцию комментариев к архиву (АРК-файлы - это подмножество формата ZIP, формат ZIP имеет соответствующую секцию). Если же размер вносимых изменений превышает порог, они могут быть внесены внутрь АРК-файла в области данных между упакованными файлами (150).

Результирующий АРК-файл (160) будет содержать настройки для конкретного пользователя и может быть предоставлен этому пользователю.

Рассмотрим пример осуществления изобретения. Дистрибутив программного обеспечения содержит следующие файлы:

META-INF\CERT.RSA

META-INF\CERT.SF

META-INF\MANIFEST.SF

RES\image.png

AndroidManifest.xml

classes.dex

resources.arsc

Чтобы добавить дополнительные настройки, нужно включить в дистрибутив еще один файл, например, SETTINGS\params.dat. Этот файл может быть как текстовым, так и бинарным. После добавления файла необходимо будет повторно вычислить подписи для файлов внутри дистрибутива. Средство подписывания вычисляет подписи для всех, но не для отдельных файлов дистрибутива. При изменении параметров (настройки для другого пользователя отличаются от текущих) нужно вносить изменения в файл params.dat, что снова потребует повторного вычисления цифровых подписей для файлов внутри дистрибутива. При использовании настоящего изобретения данные вносятся в секцию комментариев АРК-файла или в области между сжатыми данными внутри дистрибутива, что не меняет файловую структуру дистрибутива и не требует повторного вычисления цифровых подписей для файлов, хранящихся внутри дистрибутива.

Фиг.2 иллюстрирует способ добавления дополнительных данных в файл дистрибутива. Каждый ZIP-архив 210 (а следовательно, и АРК-файл) содержит так называемый «центральный каталог» 220 (central directory), который находится в конце архива для обеспечения возможности добавления новых файлов в архив. Этот каталог содержит список записей 225 (имен файлов и каталогов), входящих в архив, а также заголовки о записях. Каждый заголовок внутри центрального каталога содержит:

- размер после сжатия;

- размер до сжатия;

- длину имени файла;

- размер дополнительных данных о файле;

- размер комментария к файлу;

- номер диска, с которого файл начинается;

- относительное смещение до локального заголовка файла (количество байт от начала диска, на котором файл начинается, до локального заголовка к файлу);

- имя файла;

- дополнительные данные о файле;

- комментарий к файлу.

Центральный каталог заканчивается записью об окончании 226 (EOCD record), которая содержит:

- номер текущего диска;

- номер диска, с которого начинается центральный каталог;

- количество записей в центральном каталоге на этом диске;

- общее количество записей в центральном каталоге;

- размер центрального каталога;

- смещение до центрального каталога относительно начала архива;

- размер комментария;

- комментарий.

Таким образом, после чтения и анализа центрального каталога можно получить доступ непосредственно к сжатым данным любой записи 240 (сжатым файлам), хранящейся в центральном каталоге, по смещению, описанному в заголовке.

Данные записи также начинаются с локального заголовка файла 241. Локальный заголовок файла частично включает в себя информацию, которая содержится в центральном каталоге, а именно:

- размер после сжатия;

- размер до сжатия;

- длину имени файла;

- размер дополнительных данных о файле;

- имя файла;

- дополнительные данные о файле.

Сжатые данные файла 242 начинаются непосредственно после заголовка.

Данные записей внутри архива могут храниться в порядке, отличном от их последовательности внутри центрального каталога. Также следует отметить, что определяет наличие файла в архиве именно информация о файле в центральном каталоге (если в архиве были упакованы три файла А, Б и В, то для удаления файла Б из архива достаточно удалить запись о нем из центрального каталога, при этом не удаляя данные файла Б из самого архива). Таким образом, изменяя смещение внутри центрального каталога и смещая данные файла и заголовок внутри секции данных архива, можно выделить области 250, которые будут находиться внутри архива и не будут ограничены по размеру. В эти области можно записывать любые данные, которые содержат информацию о настройках для конкретного пользователя. Антивирусное приложение, например, при установке дополнительных модулей, поставляемых в АРК-файлах, может анализировать соответствие записей в центральном каталоге с заголовками файлов в секции данных архива, а при нахождении областей, которые находятся между сжатыми данными одного файла и заголовком другого файла, использовать прочитанные данные из них как дополнительные параметры при установке.

Расчет смещения внутри центрального каталога, смещение данных внутри архива и создание результирующего АРК-файла могут быть произведены, например, на компьютерной системе общего назначения.

Фиг.3 отображает систему средств, реализующую настоящее изобретение. Средство сборки 310 подготавливает дистрибутив 315. Средство внесения изменений 320 определяет, необходимо ли вносить изменения в дистрибутив (например, специальные настройки приложений для конкретного пользователя). Если изменения требуются, средство внесения изменений получает набор параметров из базы данных 330. Следует отметить, что данные в базе могут быть изменены администратором при настройке приложений для конкретного пользователя.

Фиг.4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг.6. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.

1. Способ изменения дистрибутива, в котором:а) создают дистрибутив программного обеспечения, который является АРК-файлом, при помощи средства сборки, при этом дистрибутив содержит сжатые данные файлов и цифровые подписи ко всем файлам;б) определяют, необходимо ли вносить изменения в созданный дистрибутив с помощью средства внесения изменений;в) определяют размер вносимых изменений с помощью средства внесения изменений;г) если размер изменений не превышает заданный порог, с помощью средства внесения изменений вносят изменения в секцию комментариев в дистрибутиве без повторного вычисления цифровых подписей для файлов внутри дистрибутива;д) если размер изменений превышает заданный порог, с помощью средства внесения изменений вносят изменения в области смещения между файловой структурой дистрибутива и сжатыми данными в дистрибутиве без повторного вычисления цифровых подписей для файлов внутри дистрибутива.

2. Способ по п. 1, в котором изменения содержат правила для компонент родительского контроля антивирусного приложения.

3. Способ по п. 1, в котором изменения содержат правила о статусе проверки дистрибутива антивирусным приложением.

4. Способ по п. 1, в котором изменения содержат настройки категорий файлов, используемые компонентами антивирусного приложения, обеспечивающими контроль программ.

5. Способ по п. 1, в котором пороговое значение имеет размер в 65535 байт.