Ресурсы программы могут быть защищены с помощью шифрования. Карты шифруются при конвертации, и каждый полученный файл .7w
содержит информацию, используемую для получения доступа к картам. В отличие от карт, остальные виды ресурсов могут быть зашифрованы только в составе контейнера .7wz
. Информация, используемая для получения доступа к контейнеру, содержится в файле description.xml
, который находится в корне контейнера.
Для шифрования ресурсов необходим ключ поставщика (providerKey
), также называемый ключом картографа (mapperKey
). Он представляет собой файл, выдаётся поставщику компанией Navikey и даёт ему право шифровать ресурсы в течение определённого периода времени. Ключ поставщика также необходим для генерации ключа пользователя. Каждый ключ поставщика имеет уникальный числовой идентификатор (providerId
).
Непосредственно шифрование (и дешифрование) выполняется ключом шифрования (encryptKey
). Каждый ключ имеет числовой идентификатор (keyId
), уникальный в пределах одного поставщика. Ключ поставщика содержит внутри себя один ключ шифрования. Идентификатор такого ключа шифрования равен 1. Дополнительные ключи шифрования хранятся в отдельных файлах. Они могут быть созданы с помощью утилиты KeyMaster или выданы компанией Navikey (один поставщик может использовать до 65534 собственных ключа шифрования).
Чтобы открыть зашифрованные ресурсы, программа должна обладать подходящим ключом шифрования. Ниже описаны возможные схемы организации работы с зашифрованными ресурсами. Все схемы можно использовать совместно.
В этом случае пользователь сразу получает доступ к зашифрованным ресурсам без каких-либо действий с его стороны. Этот вариант возможен в брендовой версии программы.
Ключ пользователя представляет собой файл (с расширением .key
), который в защищённом виде хранит ключ шифрования. Ключ пользователя может иметь ограниченный срок действия, серийный номер, может быть привязан к устройству пользователя. Пользователь должен вручную положить файл ключа в папку 7ways
. Использование ключей пользователя невозможно в версии для iOS. Привязка ключа к устройству пользователя возможна на Windows, а также на Android-устройствах, которые не поддерживают покупки через приложение. Для создания ключа пользователя, привязанного к устройству, необходим файл запроса. Файл запроса может быть создан пользователем при открытии зашифрованных ресурсов и передан поставщику каким-либо способом.
В случае если устройство поддерживает покупки в приложении - то после совершения необходимых действий на сервер провайдера будет передан запрос включающий в себя содержимое файла запроса.
Этот вариант доступен на устройствах, которые поддерживают покупки через приложение (Android, iOS, Windows 10 и т.п.), при использовании 7wz
-контейнера для хранения зашифрованных ресурсов. Для получения доступа к защищённым ресурсам пользователю необходимо оформить соответствующую покупку в магазине.
Покупки делятся на разовые и покупки «подписок». В случае если пользователь купил «подписку» то с пользователя ежемесячно или ежегодно (в зависимости от условий) взимается установленная поставщиком плата. У подписки может быть установлен бесплатный пробный период (не менее 7 дней). После оформления подписки защищённые ресурсы становятся доступны на всех устройствах пользователя.
В случае приобретения разовой активации - условия ее работы контролируются поставщиком/провайдером контента.
Программа для получения ключа пользователя будет обращаться на сервер поставщика/провайдера.
Для того чтобы использовать привязку к устройству, при шифровании ресурсов надо указать следующие данные:
requestFileName
);mapperName
или providerName
);noKeyMsg
),badKeyMsg
),expiredKeyMsg
).
Когда пользователь пытается загрузить защищённый ресурс, при подготовке которого было указано имя файла запроса (requestFileName
), программа выводит окно с предложением активировать ресурс. В окне указано наименование поставщика и список зашифрованных файлов. После получения согласия пользователя в папке 7ways
создаётся файл запроса и выводится окно с инструкциями по получению ключа (noKeyMsg
, badKeyMsg
или expiredKeyMsg
). Файл запроса представляет собой текстовый файл с именем requestFileName_providerId_keyId.txt
(вместо параметров в имя файла подставляются их значения). Внутри файла содержатся:
Если программа не смогла получить идентификатор устройства, выводится сообщение об ошибке и файла запроса не создаётся.
Созданный файл запроса пользователь каким-либо образом передаёт поставщику. На основе файла запроса поставщик создаёт ключ пользователя и передаёт пользователю. Программа навигации при запуске загружает из папки 7ways
ключи пользователя, получая с их помощью доступ к зашифрованным ресурсам.
Шифрование карт производится в процессе конвертирования.
compress
должен быть равен 1 (по умолчанию).mapperKey
.encryptKey
. Если карты требуется зашифровать ключом шифрования, который встроен в ключ поставщика, этот параметр нужно оставить пустым.encryptRate
определяет, сколько процентов от объёма файла карты подвергается шифрованию: 0 – шифрование не производится, 100 – шифруется вся карта. Если значение меньше 100, зашифрованные блоки равномерно распределяются по файлу. Чем большая часть карты шифруется, тем хуже сжимается архиваторами полученный файл. По умолчанию 50.
Если планируется распространять карты самостоятельно, а не в составе 7wz
-контейнера, и активировать с помощью ключа пользователя, то нужно также задать следующие параметры:
mapperName
содержит наименование поставщика, которое увидит пользователь в окне с предложением создать файл запроса при выборе защищённого атласа.requestFileName
содержит имя файла запроса, который будет создан, если пользователь
Наименование поставщика и инструкции можно указать на нескольких языках. Для этого после имени параметра ставится двоеточие и код языка по ISO 639-1, например providerName:ru
. Параметр для языка по умолчанию (без двоеточия и кода языка) обязательно должен присутствовать, он используется, когда нет локализованной версии для языка пользователя.
Для шифрования ресурсов необходима утилита KeyMaster.
Провайдер может создавать защищенный контент только в случае если этот контент представлен в виде контейнера 7wz
.
Для корректной работы системы защиты, провайдер должен обеспечить обработку запросов на получение ключа. Данные запросы программа отсылает в момент попыток получения доступа к ресурсам, а также в итоге совершенных действий пользователя:
Программа делает запрос по ссылке указанной в description.xml защищенного контейнера.