Когда вы хотите скрыть детали реализации модели, которую вы используете совместно с третьей стороной, создайте защищенную модель. Вместо включения ваших исходных файлов модели, защищенная модель включает производные файлы для поддержки указываемых вами функциональностей. Чтобы создать защищенную модель, которая поддерживает функциональности, необходимые вашему пользователю, и которая включает минимальную информацию о вашей модели, следуйте этим лучшим практикам. Настройки, которые вы выбираете для модели до и во время защиты, определяют, что может сделать с ней пользователь защищенной модели. Рассмотрим компромиссы различных опций проекта. Чтобы поддержать дополнительные функциональности, защищенная модель должна включать больше содержимого, и, следовательно, больше элементов вашего проекта могут быть видны. Поскольку защищенная модель использует производные программные продукты из компилированной модели-ссылки, вы не можете изменить модель после того, как защитите ее.
Когда вы разрабатываете модель, которую вы будете защищать, координируйте с пользователем защищенной модели, чтобы выбрать настройки, которые позволяют их системе ссылаться на вашу защищенную модель. После того, как вы защищаете свою модель, вы не можете редактировать опции, такие как настройки параметров конфигурации, чтобы сделать вашу защищенную модель совместимой с родительской моделью. Прежде чем вы защитите свою модель, сконфигурируйте ее, чтобы использовать совместимые опции.
Вы не можете изменить имя вашей защищенной модели после ее защиты. Чтобы избежать конфликтов по совпадению имен, выберите имя модели, которое является уникальным для других моделей в системе. Выберите имя модели, которое не конфликтует с другими моделями в иерархии модели вашего пользователя. Используйте имя, чтобы сохранить исходную (незащищенную) модель, прежде чем защищать ее.
Прежде чем вы защитите свою модель, выберите настройки параметров конфигурации, согласовав это с пользователем вашей защищенной модели. Когда родительская модель ссылается на вашу защищенную модель, параметры конфигурации моделей должны быть совместимыми. Для примера, если вы задаете значение Solver параметра Variable-step
для вашей защищенной модели модель, которая ссылается на вашу защищенную модель, должна Solver установлена на Variable-step
. Если ваша модель содержит несколько конфигурации модели, защищенная модель использует конфигурацию модели, который активен, когда вы защищаете модель. Чтобы минимизировать несовместимость параметров, отправьте свои наборы конфигурации модели пользователю вашей защищенной модели, чтобы они могли использовать строение для своей родительской модели. Для получения дополнительной информации см. Раздел «Совместное использование строения с несколькими моделями».
За исключением входных и выходных портов, минимизируйте количество элементов проекта, которые обеспечивают интерфейс в вашу модель. Чтобы разрешить взаимодействие с внешними компонентами, защищенная модель не защищает эти элементы проекта. Для следующих элементов рассмотрите эти альтернативные опции, которые допускают защиту.
Настраиваемые параметры - минимизируйте количество настраиваемых параметров в коде, которые используют класс памяти, отличный от Auto
или Localizable
. Параметры, которые используют глобальный класс памяти в сгенерированном коде вашей модели, видны в коде для защищенной модели. Если пользователю вашей защищенной модели требуется доступ к настраиваемым параметрам, согласуйте список параметров, которые предоставляет защищенная модель. Для получения дополнительной информации смотрите Строение Генерации кода C для Элементов Интерфейса Модели.
Объекты данных - Объекты данных, включая объекты данных параметров и сигналов, объекты типа данных и объекты шины, которые вы храните извне, не защищены. Включите только объекты данных, к которым пользователь защищенной модели требует доступа. Используйте объекты данных для мониторинга сигналов и калибровки параметров во время разработки модели. После калибровки задайте значения параметров, а затем вводите их в строку. Для получения дополнительной информации см. раздел Объекты данных.
Хранилища данных - Не используйте глобальных данных хранилища на объектах сигнала. Глобальные данные могут сделать данные видимыми между ссылочными моделями. Вместо этого используйте входные и выходные порты для передачи данных между моделями-ссылками. Можно использовать блоки Data Store Memory в качестве хранилищ данных, локальных для вашей модели. Для получения дополнительной информации см. раздел Локальные и Глобальные данные хранилища.
Аргументы Модели - Минимизируйте количество аргументов, которые использует ваша модель. Когда ваша защищенная модель использует аргументы, пользователь вашей защищенной модели должен задать значения для аргументов в родительской модели. Эти элементы данных видны пользователю вашей защищенной модели. Для каждого аргумента модели, который использует ваша модель, сообщите спецификации аргумента пользователю вашей защищенной модели.
Функции Simulink - Рассмотрите возможности функций Simulink, которые использует ваша модель. Когда функция Simulink имеет глобальные возможности или ограничена на корневом уровне вашей модели, она обеспечивает видимый интерфейс с вашей защищенной моделью. Если вы не хотите, чтобы функция Simulink взаимодействовала с вашей защищенной моделью, рассмотрите определение возможностей в подсистеме вашей модели. Для получения дополнительной информации смотрите Scoped Simulink Function Blocks in Subsystems.
Logging Blocks - Не используйте блочное логгирование в своей защищенной модели. To File блоки и блоки To Workspace, которые используют Timeseries
форматировать функцию в защищенных моделях, и поэтому сделать записанные данные видимыми для защищенного пользователя модели. Логгирование сигналов и другие опции, которые используют селектор сигналов, не работают для сигналов внутри защищенной модели.
Если вы хотите использовать один из предыдущих элементов проекта во время разработки модели, но элемент не требуется пользователю модели, можно использовать варианты, чтобы исключить элемент проекта из защищенной модели. Примером является использование блока To File во время проверки для регистрации данных, к которым пользователь защищенной модели не требует доступа. Чтобы исключить блок при помощи вариантов:
Вставьте блок варианта, такой как блок Manual Variant Sink, на сигнал, который ведет к блоку To File.
Соедините первый выход блока вариантов с блоком To File.
Соедините второй выход блока вариантов с блоком Terminator для завершения сигнала.
Чтобы записать сигнал во время тестирования модели, активируйте первый выход варианта.
Чтобы защитить модель, не используя блок логгирования, активируйте выход второго варианта. Защищенная модель использует только активный вариант, поэтому сигнал завершается без регистрации.
Когда вы задаете функциональности для вашей защищенной модели, защищенная модель включает программные продукты, поддерживающие эти функциональности. Ограничение включенных программных продуктов позволяет вам контролировать, какое содержимое видно пользователю вашей модели или внешнему атакующему, который хочет просмотреть или изменить вашу модель без разрешения. Рассмотрим компромиссы различных опций проекта. Чтобы поддержать дополнительные функциональности, защищенная модель должна включать больше содержимого, и, следовательно, больше элементов вашего проекта могут быть видны. Скоординироваться с пользователем вашей модели, чтобы договориться о том, какие функциональности они требуют. Задайте поддержку только для этих функций.
Запутанный исходный код - Используйте эту опцию, когда пользователь вашей защищенной модели должен скомпилировать сгенерированный исходный код. Защищенная модель включает запутанную версию сгенерированного исходного кода. Он ведет себя так же, как и ваш исходный код, но его сложнее понять для пользователя модели и потенциальных злоумышленников.
Скомпилированный код - Используйте эту опцию, когда пользователь вашей защищенной модели может использовать скомпилированную библиотеку из вашей защищенной модели. Защищенная модель включает двоичные файлы и заголовочные файлы, скомпилированные из вашего сгенерированного исходного кода. Он не содержит исходный код. Эта опция препятствует доступу пользователя вашей модели и потенциальных злоумышленников к сгенерированному исходному коду модели.
Защита паролем - Используйте эту опцию, чтобы поддержать некоторую функциональность для пользователя вашей защищенной модели и защитить поддерживающие файлы от внешних злоумышленников. Для каждой опции, который вы задаете пароль, производные файлы, поддерживающие эту опцию, защищены с помощью AES-256 шифрования. Перед выполнением каждой функциональности защищенная модель запрашивает у пользователя пароль. Согласовать с пользователем вашей защищенной модели, чтобы выбрать пароль для каждой опции. Если на вашу защищенную модель ссылается родительская модель, которая также будет защищена, не защищайте паролем функциональности, которые будет поддерживать родительская защищенная модель.
Цифровая подпись - Подпишите свою защищенную модель с помощью сертификата, чтобы защитить получателя от использования модели, если она была изменена внешним злоумышленником. Когда вы подписываете свою модель, пользователь модели может проверить, что защищенная модель опубликована вами и не изменилась после того, как вы подписали ее. После того, как вы подписываете модель, если она изменена, пользователь не может использовать ее. Убедитесь, что компьютер пользователя, хранящий доверенные сертификаты, имеет сертификат от центра сертификации, который сертифицировал ваш сертификат.
Когда вы создаете защищенную модель, сгенерированный отчет защищенной модели включает отчет интерфейса. Отчет по интерфейсам включает информацию о входах и выхода, экспортированных функциях, параметрах интерфейса и хранилищах данных. Используйте отчет по интерфейсам в качестве ссылки для связи с пользователем вашей защищенной модели.
Когда вы создаете защищенную модель, у вас есть опция создать модель тестовой обвязки, которая ссылается на вашу защищенную модель. Используйте модель тестовой обвязки, чтобы задать информацию, которую пользователь требует для взаимодействия вашей защищенной модели с их системой. Обвязка содержит та же конфигурация модели, что и защищенная модель. В модель тестовой обвязки можно включать определения данных, которые использует защищенная модель.