Следующая версия
|
Предыдущая версия
|
ru:7ways:resources:protection [2015/02/16 10:15] Артём создано |
ru:7ways:resources:protection [2016/04/18 17:57] (текущий) Константин [Обработка запросов программы на сервере провайдера] |
Ресурсы программы могут быть защищены с помощью шифрования. Карты шифруются при конвертации, и каждый полученный файл ''.7w'' содержит информацию, используемую для получения доступа к картам. В отличие от карт, остальные виды ресурсов могут быть зашифрованы только в составе контейнера ''.7wz''. Информация, используемая для получения доступа к контейнеру, содержится в файле ''description.xml'', который находится в корне контейнера. | Ресурсы программы могут быть защищены с помощью шифрования. Карты шифруются при конвертации, и каждый полученный файл ''.7w'' содержит информацию, используемую для получения доступа к картам. В отличие от карт, остальные виды ресурсов могут быть зашифрованы только в составе контейнера ''.7wz''. Информация, используемая для получения доступа к контейнеру, содержится в файле ''description.xml'', который находится в корне контейнера. |
| |
Для шифрования ресурсов необходим **ключ поставщика** (''providerKey''), также называемый **ключом картографа** (''mapperKey''). Он представляет собой файл (обычно с расширением ''.key''), выдаётся поставщику компанией Navikey и даёт ему право шифровать ресурсы в течение определённого периода времени. Ключ поставщика также необходим для генерации **ключа пользователя**. Каждый ключ поставщика имеет уникальный числовой идентификатор (''providerId''). | Для шифрования ресурсов необходим **[[ru:7ways:resources:protection:providerkey|ключ поставщика]]** (''providerKey''), также называемый **ключом картографа** (''mapperKey''). Он представляет собой файл, выдаётся поставщику компанией Navikey и даёт ему право шифровать ресурсы в течение определённого периода времени. Ключ поставщика также необходим для генерации **[[ru:7ways:resources:protection:userkey|ключа пользователя]]**. Каждый ключ поставщика имеет уникальный числовой идентификатор (''providerId''). |
| |
Непосредственно шифрование (и дешифрование) выполняется **ключом шифрования** (''encryptKey''). Каждый ключ имеет числовой идентификатор (''keyId''), уникальный в пределах одного поставщика. Ключ поставщика содержит внутри себя один ключ шифрования. Идентификатор такого ключа шифрования равен 1. Дополнительные ключи шифрования хранятся в отдельных файлах (обычно с расширением ''.key''). Они могут быть созданы с помощью конвертера карт или выданы компанией Navikey (один поставщик может использовать до 60 тыс. ключей шифрования). | Непосредственно шифрование (и дешифрование) выполняется **[[ru:7ways:resources:protection:encryptkey|ключом шифрования]]** (''encryptKey''). Каждый ключ имеет числовой идентификатор (''keyId''), уникальный в пределах одного поставщика. Ключ поставщика содержит внутри себя один ключ шифрования. Идентификатор такого ключа шифрования равен 1. Дополнительные ключи шифрования хранятся в отдельных файлах. Они могут быть созданы с помощью [[ru:7ways:resources:protection:keymaster|утилиты KeyMaster]] или выданы компанией Navikey (один поставщик может использовать до 65534 собственных ключа шифрования). |
| |
===== Схемы защиты ресурсов ===== | ===== Схемы защиты ресурсов ===== |
Чтобы открыть зашифрованные ресурсы, программа должна обладать подходящим ключом шифрования. Возможны следующие схемы организации работы с зашифрованными ресурсами: | Чтобы открыть зашифрованные ресурсы, программа должна обладать подходящим ключом шифрования. Ниже описаны возможные схемы организации работы с зашифрованными ресурсами. Все схемы можно использовать совместно. |
* Ключ шифрования встроен в программу и всегда активен. В этом случае пользователь сразу получает доступ к зашифрованным ресурсам без каких-либо действий с его стороны. Этот вариант возможен в [[ru:7ways:brand|брендовой]] версии. | |
* Посредством ключа пользователя. **Ключ пользователя** представляет собой файл (с расширением ''.key''), который в защищённом виде хранит ключ шифрования. Ключ пользователя имеет серийный номер, может быть привязан к устройству пользователя, иметь ограниченный срок действия. Для создания ключа пользователя используется конвертер карт. Программа навигации загружает ключи пользователя непосредственно из папки 7ways. | |
| |
| ==== Ключ шифрования встроен в программу и всегда активен ==== |
| В этом случае пользователь сразу получает доступ к зашифрованным ресурсам без каких-либо действий с его стороны. Этот вариант возможен в [[ru:7ways:brand|брендовой]] версии программы. |
| |
| ==== Использование ключа пользователя ==== |
| **[[ru:7ways:resources:protection:userkey|Ключ пользователя]]** представляет собой файл (с расширением ''.key''), который в защищённом виде хранит ключ шифрования. Ключ пользователя может иметь ограниченный срок действия, серийный номер, может быть привязан к устройству пользователя. Пользователь должен вручную положить файл ключа в папку ''7ways''. Использование ключей пользователя невозможно в версии для iOS. Привязка ключа к устройству пользователя возможна на Windows, а также на Android-устройствах, которые не поддерживают покупки через приложение. Для создания ключа пользователя, привязанного к устройству, необходим **[[ru:7ways:resources:protection:requestfile|файл запроса]]**. Файл запроса может быть создан пользователем при открытии зашифрованных ресурсов и передан поставщику каким-либо способом.\\ |
| В случае если устройство поддерживает покупки в приложении - то после совершения необходимых действий на сервер провайдера будет передан запрос включающий в себя содержимое файла запроса. |
| |
| ==== Использование покупок в приложении ==== |
| Этот вариант доступен на устройствах, которые поддерживают покупки через приложение (Android, iOS, Windows 10 и т.п.), при использовании ''7wz''-контейнера для хранения зашифрованных ресурсов. Для получения доступа к защищённым ресурсам пользователю необходимо оформить соответствующую покупку в магазине. |
| Покупки делятся на разовые и покупки "подписок". В случае если пользователь купил "подписку" то с пользователя ежемесячно или ежегодно (в зависимости от условий) взимается установленная поставщиком плата. У подписки может быть установлен бесплатный пробный период (не менее 7 дней). После оформления подписки защищённые ресурсы становятся доступны на всех устройствах пользователя.\\ |
| В случае приобретения разовой активации - условия ее работы контролируются поставщиком/провайдером контента. |
| Программа для получения ключа пользователя будет обращаться на сервер поставщика/провайдера. |
| |
| ===== Ключи пользователя с привязкой к устройству ===== |
| Для того чтобы использовать привязку к устройству, при шифровании ресурсов надо указать следующие данные: |
| * имя файла запроса (''requestFileName''); |
| * наименование поставщика (''mapperName'' или ''providerName''); |
| * инструкции по получению ключа пользователя в случае, когда: |
| * ключ пользователя отсутствует (''noKeyMsg''), |
| * ключ есть, но имеет другой идентификатор (''badKeyMsg''), |
| * срок действия ключа закончился (''expiredKeyMsg''). |
| |
| Когда пользователь пытается загрузить защищённый ресурс, при подготовке которого было указано имя файла запроса (''requestFileName''), программа выводит окно с предложением активировать ресурс. В окне указано наименование поставщика и список зашифрованных файлов. После получения согласия пользователя в папке ''7ways'' создаётся **[[ru:7ways:resources:protection:requestfile|файл запроса]]** и выводится окно с инструкциями по получению ключа (''noKeyMsg'', ''badKeyMsg'' или ''expiredKeyMsg''). Файл запроса представляет собой текстовый файл с именем ''requestFileName_providerId_keyId.txt'' (вместо параметров в имя файла подставляются их значения). Внутри файла содержатся: |
| * инструкции; |
| * идентификатор устройства пользователя; |
| * идентификатор поставщика; |
| * идентификатор ключа шифрования. |
| Если программа не смогла получить идентификатор устройства, выводится сообщение об ошибке и файла запроса не создаётся. |
| |
| Созданный файл запроса пользователь каким-либо образом передаёт поставщику. На основе файла запроса поставщик создаёт ключ пользователя и передаёт пользователю. Программа навигации при запуске загружает из папки ''7ways'' ключи пользователя, получая с их помощью доступ к зашифрованным ресурсам. |
| |
| ===== Шифрование карт ===== |
| Шифрование карт производится в процессе конвертирования. |
| * Зашифрованными могут быть только сжатые карты. В GUI-версии конвертера должен быть установлен флажок **Compress & protect**. В консольной версии параметр ''compress'' должен быть равен 1 (по умолчанию). |
| * Путь к файлу **[[ru:7ways:resources:protection:providerkey|ключа поставщика]]** задаётся в параметре ''mapperKey''. |
| * Путь к файлу **[[ru:7ways:resources:protection:encryptkey|ключа шифрования]]** задаётся в параметре ''encryptKey''. Если карты требуется зашифровать ключом шифрования, который встроен в ключ поставщика, этот параметр нужно оставить пустым. |
| * Параметр ''encryptRate'' определяет, сколько процентов от объёма файла карты подвергается шифрованию: 0 -- шифрование не производится, 100 -- шифруется вся карта. Если значение меньше 100, зашифрованные блоки равномерно распределяются по файлу. Чем большая часть карты шифруется, тем хуже сжимается архиваторами полученный файл. По умолчанию 50. |
| Если планируется распространять карты самостоятельно, а не в составе ''7wz''-контейнера, и активировать с помощью ключа пользователя, то нужно также задать следующие параметры: |
| * ''mapperName'' содержит наименование поставщика, которое увидит пользователь в окне с предложением создать файл запроса при выборе защищённого атласа. |
| * ''requestFileName'' содержит имя файла запроса, который будет создан, если пользователь |
| |
| Наименование поставщика и инструкции можно указать на нескольких языках. Для этого после имени параметра ставится двоеточие и код языка по [[wp>List_of_ISO_639-1_codes|ISO 639-1]], например ''providerName:ru''. Параметр для языка по умолчанию (без двоеточия и кода языка) обязательно должен присутствовать, он используется, когда нет локализованной версии для языка пользователя. |
| |
| ===== Шифрование ресурсов ===== |
| |
| Для шифрования ресурсов необходима утилита [[ru:7ways:resources:protection:keymaster|KeyMaster]].\\ |
| Провайдер может создавать защищенный контент только в случае если этот контент представлен в виде [[ru:content:first|контейнера]] ''7wz''. |
| |
| ===== Обработка запросов программы на сервере провайдера ===== |
| |
| Для корректной работы системы защиты, провайдер должен обеспечить обработку запросов на получение ключа. Данные запросы программа отсылает в момент попыток получения доступа к ресурсам, а также в итоге совершенных действий пользователя: |
| * Покупки ресурса в магазине |
| * Введения кода покупки |
| * Попытки восстановления покупок |
| |
| Программа делает [[ru:content:activateurl|запрос]] по ссылке указанной в [[ru:content:description.xml|description.xml]] защищенного контейнера. |