MATLAB/Simulink (MathWorks, Inc.) 是一种数值计算软件,因其丰富的功能和出色的数据可视化能力,备受众多行业的工程师青睐。
尽管Matlab所完成的算法和模拟器对于非工程师来说极难使用,但MATLAB/Simulink仍然是AI算法开发和模拟器(包括物理模型)设计的最佳选择。
MATLAB编译器可以创建可执行文件作为独立应用程序运行,因此其可以更广泛地向公众发布。近期其新增的Simulink编译器,可以对Simulink模型执行相同的操作,并可将它们转换为独立的GUI应用程序。
能够使用授权的优点如果MATLAB编译器创建的独立应用程序不使用许可证,则比较方便复制传播,更有利于广泛地分发给大量用户,然而这也意味着没有技术手段来限制用户的使用次数或使用期限。
这就驱使需要一个第三方授权解决方案,采用高级算法控制预期的使用范围和使用时间、管控合法授权的数量以及保护软件当中所包含的知识产权。
威步专有技术CodeMeter,通过加密、保护和授权应用程序,向最终用户提供正确的许可配置和使用方式用于满足以上需求。CodeMeter许可证可以存储在硬件加密狗、绑定到已知设备的软许可容器或云许可容器中。
图1:比较有和没有CodeMeter许可的例子
CodeMeter应用于MATLAB示例程序在MATLAB示例程序的代码中封装MATLAB函数逻辑,用以创建“magic square”例子作为独立应用程序。采用CodeMeter技术保护此示例应用程序,并将许可证和密钥存储在CmDongle硬件加密锁中,仅在插入加密锁时,受保护的应用程序方能运行。CodeMeter也可以通过软授权容器或云授权容器中应用于其他各种应用场景。
尝试按原样运行独立应用程序。独立应用程序已经在MATLAB端创建,安装MATLAB运行时,且“For_redistribution”文件夹已经复制到分发端(目标PC)。
在“For_redistribution”文件夹中启动MyAppInstaller_web.exe安装程序。
创建C:\Program Files\magicsquare文件夹。
首先,在不更改文件夹的情况下启动”magic square”应用程序。
“magic square”应用程序没有GUI,只有一个命令提示符,您可以在其中输入magic square(魔方)的大小(矩阵尺寸)作为参数。
>application>magicsquare 5
在下面的屏幕截图中,您可以看到5x5和3x3两个不同尺寸的魔方。应用程序启动并显示5x5和3x3不同尺寸的魔方,这表明这里没有授权限制。
图2:使用MATLAB编译器创建的独立应用程序(Magic Square)的执行屏幕
使用CodeMeter申请许可证使用CodeMeter AxProtector保护独立应用程序(magicsquare.exe),并指定“产品码”将许可证绑定到其中。使用AxProtector,您只需指定文件即可保护和许可应用程序,无需修改任何代码。
图3:选择项目类型
此时,magicsquare.exe是一个Windows应用程序,因此您选择“Windows应用程序或DLL”作为AxProtector项目类型。
作为源文件(原始/未受保护的文件),您选择magicsquare.exe,而对于目标文件(受保护/许可的文件),文件夹的结构如图4所示,文件的名称为magicsquareP.exe。
图4:指定原始文件的名称和许可文件的名称
在Licensing Systems选项卡中,设置公司码和产品码(参见图5)。
公司码:6000010(评估公司码)
产品码:14
公司码是威步分配给独立软件供应商的编号,以确保全球使用的所有许可证都是唯一的。ISV选择并分配给各个许可证的产品代码,每个许可证都有一组特定的产品或功能。
图5:设置公司码和产品码以将应用程序绑定许可证
在安全选项卡中,取消勾选“动态代码修改”(参见图6)。
图6:安全选项屏幕
该设置向授权应用程序添加动态安全检查,该功能与MATLAB编译器不兼容,需要关闭。
如果您尝试启动许可应用程序(magicsquareP.exe),您将收到一条错误消息,警告您找不到许可证,如图7所示。
图7:许可证错误显示
接下来,为这个独立应用程序创建一个具有访问权限的许可证,并将其保存在USB加密锁上(参见图8)。
图8:在CodeMeter许可证编辑器中将许可证信息写入硬件加密锁
产品码应与使用AxProtector加密独立应用程序(magicsquare.exe)时设置的产品码“14”相同。该应用程序已成功启动,您可以创建矩阵大小为5和7的魔方。
图9:应用许可后的Magic Square应用程序执行屏幕
尽管本示例使用硬件加密锁作为许可容器,这里同样还支持CodeMeter软授权或云授权。
CodeMeter应用于Simulink应用程序示例
Simulink编译器中提供了弹簧、质量和阻尼器模拟应用程序作为示例。
此时,CodeMeter许可证的应用方式与MATLAB编译器相同。
总结使用MATLAB编译器或Simulink编译器创建的独立应用程序可以很容易地分发,但很难控制其预期的使用范围。使用CodeMeter,您可以通过简单的步骤应用许可,不仅可以防止泄漏或未经授权的拷贝,还可以使用最佳许可模型构建软件业务,以适应业务模型。例如可以在目标电脑中限制使用的产品数量、授权时间、不同的功能或不同的版本。互联网时代,越来越多的软件中包含了需要控制的先进算法和知识产权,即图像识别、机器学习、传感、AI、物理模拟等。CodeMeter可帮助您保护应用程序并实现软件货币化。
图10: Simulink编译器示例弹簧、质量和阻尼器模拟应用程序
与 CodeMeter API的集成除了加密应用程序的代码外,CodeMeter API还可以集成到MATLAB代码中。
CodeMeter API是用于以下操作的许可和加密接口:
- 检查许可证
- 读取许可证属性
- 登录到其他系统
- 加密通信
- 对称和非对称加密
- 哈希函数和质询响应检查
- 在MATLAB应用程序中加密自己的数据
- 加密配置或其他数据文件
如需集成CodeMeter API,则必须在MATLAB中链接CodeMeter.dll,如使用以下命令行:
lcc-implib -u %WINDIR%\System32\WibuCm32.dll.