LabVIEW源程序安全性保护综合方案
一、硬件加密保护方案
- 选择和安装硬件设备
- 选择加密狗和TPM设备:选择Sentinel HASP加密狗和支持TPM(可信平台模块)的计算机主板。
- 安装驱动和开发工具:安装Sentinel HASP加密狗的驱动程序和开发工具包(SDK),并确保TPM功能在BIOS中启用。
2.加密狗与TPM集成
- 安装LabVIEW工具包:在LabVIEW中安装Sentinel HASP提供的LabVIEW工具包。
- 加密狗验证逻辑:在LabVIEW程序启动部分,编写代码检查加密狗是否插入。
- TPM密钥管理:使用TPM API或第三方库,在LabVIEW中编写代码,调用TPM进行密钥存储和验证操作。
二、软件加密保护方案
- 代码混淆
- 使用LabVIEW中的VI脚本或第三方工具,对LabVIEW代码进行混淆处理,使其难以被逆向工程。
- 密码保护
- 设置密码保护LabVIEW项目文件和关键VI,防止未经授权的访问和修改。
- 许可证管理
- 使用LabVIEW工具包或第三方工具,集成许可证管理系统,对程序的使用进行授权和控制。
- 程序签名
- 使用数字签名工具,对LabVIEW可执行文件进行签名,确保程序在分发和运行过程中未被篡改。
三、双重验证与使用限制
- 加密狗验证
- 在程序关键部分添加加密狗验证逻辑,确保程序运行时需要加密狗的存在。
- TPM验证
- 在程序运行过程中,通过TPM验证存储的加密密钥,确保只有在特定硬件上才能运行程序。
- 使用限制
- 使用加密狗管理工具,设置程序的使用限制,如使用期限、功能模块等。
- 联合验证
- 结合加密狗和TPM的双重验证,在LabVIEW程序中编写逻辑,要求同时通过加密狗和TPM的验证,才能正常运行程序。
四、测试和部署
测试
在开发环境中测试加密狗和TPM的功能,确保其工作正常,同时验证软件加密手段的有效性。
部署
将编译后的可执行文件、加密狗和TPM设备一起分发给最终用户,并提供详细的安装和使用说明。
通过综合硬件加密和软件加密手段,形成双重保护机制,最大限度地保障LabVIEW源程序的安全性,防止其被非法复制和商业使用。
问题详述
我想阻止用户查看和编辑我的VI程序框图。我有哪些选择,安全级别有何不同?
解决方案
LabVIEW VI密码保护
LabVIEW VI密码保护功能允许用户运行VI,但是未提供密码的情况下禁止查看或编辑VI的程序框图。在新的的LabVIEW版本中打开VI时,只要重新编译,此功能将适用。请参阅创建受密码保护的VI以了解如何对VI进行密码保护。
相反,当前的VI密码保护机制是依赖于由VI密码得到的散列数据和其他一些数据(用作散列函数的输入),这些数据内嵌在VI中的不同位置,且密码本身并不存储在VI内部。这个机制保证了LabVIEW在需要查看或编辑程序框图的时候,即使不提供密码也仍然可以进入程序框图。LabVIEW会在随后的执行过程中,把根据输入密码计算出来的散列数据同存储在VI中的散列数据相比,然后决定使用者能否进入VI的程序框图。由于这个机制,加密的设计并不是针对VI程序框图本身的,因此攻击者有可能将密码散列替换成他自己定义的散列数据:
- 确定散列输入数据,以及VI文件中散列的准确位置
- 修改LabVIEW进程中的散列比较程序,比如使用内存调试器
尽管我们相信这种情况很少会发生,但攻击者仍有可能创建程序来破解VI的密码保护功能,从而将原密码替换为攻击者自己创建的密码。。
如果您需要比VI密码保护提供的更高的安全性,我们建议您改为删除VI的程序框图。
删除VI的程序框图
删除VI的程序框图提供了比使用VI密码保护更大的保护,但恢复原始程序框图难度很大且该VI只能运行在相同版本的LabVIEW中。请参阅从VI中删除方程序框图以了解如何删除VI程序框图。
删除VI的程序框图后,从VI中恢复原始程序框图非常困难,与仅仅包含文本语言编译器生成的机器指令的可执行应用程序恢复文本程序源相当。此外,LabVIEW只允许在编译和保存VI的LabVIEW版本和平台上运行VI;更新的LabVIEW版本或其他平台将无法重新编译VI。因此,您需要为希望支持的LabVIEW版本和平台提供独立的VI。
虽然VI密码保护的安全性略逊于移除程序框图,但为了防止随着移除VI程序框图带来的VI发布负担,我们创立了VI密码保护功能,并将会在今后继续提供这项功能。
关于我们