Virbox 软许可产品白皮书
引言
概述
在行业软件中,常见的授权保护方案是使用硬件加密锁的方案,在加密锁中存储软件授权和关键数据内容,非常安全。但是硬件加密锁也有一定的不便之处,首先,硬件加密锁属于外设产品,管理成本比较高,经常有出现丢失的情况;其次,硬件加密锁有一定的硬件成本,会增加软件本身的价格成本;最后,硬件加密锁在许可管理方面存在诸多不便,例如,加密锁已经在用户手中,这时候需要升级许可会很不方便。硬件加密锁还有一个最大的不方便之处在于,在移动互联的大环境中,许多终端设备都是比较小巧的,很多终端设备不希望有外设接入的。
所以,面对以上诸多问题,许多开发者越来越倾向于使用软许可的加密方案,软许可就是依赖于本地硬件信息生成的一条软件许可,与硬件加密锁一样可以对软件进行授权管理和关键数据保护,唯一的不同是硬件加密锁是一个外设产品,而软许可是在本地存储的一个软加密系统。
本文将全方位介绍由北京深思数盾科技股份有限公司推出的 Virbox 软许可产品。文章的开始,我们介绍一下 什么是 Virbox 软许可,软许可的产品定位以及目标受众;接着,我们介绍 Virbox 软许可的条款属性,以及各属性的意义;然后,我们介绍一些关键技术,了解软许可是如何产生和激活的,是如何保证软件授权安全的;最后,我们列举一些高级用法和应用案例。
联系我们
了解产品
官方商城:https://www.sensestore.com.cn/
技术支持
技术支持电话: 010-56730936
技术支持邮箱:tech_support@sense.com.cn
开发者
开发者中心:https://developer.lm.virbox.com
工具下载:https://lm.virbox.com/tools.html
产品介绍
产品描述
Virbox 软许可(以下没有特别说明的地方,“软许可”特指 Virbox 软许可)是北京深思数盾科技股份有限公司(以下简称“我公司”)推出的一款软件加密和版权保护产品。Virbox 软许可与精锐5 硬件锁许可、Virbox 云许可、Virbox Smart 许可共同组成了 Virbox LM 许可体系。Virbox 软许可摆脱了外设和网络的限制,直接绑定终端设备硬件信息,可以在任何环境下使用,另外,软许可也可以在 Linux、ARM Linux 等平台下的终端设备上使用。开发者通过合理对软许可进行设置,可以控制软件用户定期对软件激活,也可也让用户永久使用软件。
产品定位
Virbox 软许可可以在各种环境下使用,填补硬件加密锁和云许可在应用环境下的空缺,帮助开发者的软件适应各种应用场景。另外,软许可在管理成本和价格成本上,都比硬件加密锁有优势,可以帮助开发者降低成本。Virbox 软许可支持各种主流操作系统和平台,无论是桌面软件、服务器软件、大型设备软件,还是手持设备、智能终端,均可以使用软许可进行版权保护。
目标客户
- 软件的最终运行环境无法联网或无法长期联网的软件开发者
- 设备软件开发者
- 致力于降低软件开发和管理成本的开发者
- 有集团软件部署需求,“一个服务器部署,多个客户端使用”的场景的开发者
- 需要对软件进行低成本推广、高质量获客的软件开发者
- 任何情况下需要使用软许可做软件加密保护方案的开发者
术语
名词 | 描述 |
---|---|
开发者 | 软件开发者,软件厂商。本文主要的阅读对象 |
软件用户 | 软件开发者的用户,软件的最终使用者,软件许可的购买者 |
软锁 | 运行在软件用户本地终端上的一个软加密系统,使用纯软件技术实现版权保护的一种载体和技术的总称。一些非正式情况下,软锁也指软许可 |
软许可 | 由开发者签发生成,使用时存储于软锁中的软件许可,受软锁进行安全保护 |
Virbox 开发者中心 | 软件开发者需要注册成为我公司的开发者,开发者中心是软许可的管理中心 |
Virbox 用户工具 | 运行在软件用户本地终端上的一个加密工具,是和软锁通信的关键工具 |
单机软许可 | 仅在当前设备上可以使用的许可,当前机器上必须激活许可 |
集团软许可 | 部署在服务端,可供客户端使用的许可,客户端不需要激活许可 |
特性
产品特性
- 轻量,无外部设备相关,成本更低
- 账号或无账号,根据需求随意选择
- 支持设备终端的应用
- 支持单机和集团许可方式
- 永久授权、订阅授权、定期激活授权,不同的授权形式,灵活选择
安全特性
- 驱动级软锁系统,通信过程中无明文传输
- 内置虚拟时钟,不依赖本地时间
- 安全升级,三层证书验证,密钥定期更新
- 配套安全技术,内置反黑、反调试、反内存注入等保护手段
- 配套安全方案,可使用碎片代码、混淆、虚拟化等保护方案
定义
账号软许可
依赖于云账号的软许可,许可和账号相关,但是在本地激活后才能使用,可通过在线方式和离线方式进行激活,激活后的许可最长拥有一定的离线使用时间(开发者可设置,最长180天),超过此时间必须要重新激活一次。
当软件开发者希望在软件售出以后,依然可以对软件进行一些控制的情况下,账号软许可会非常适合使用。
授权码软许可
授权码由数字“0~9”、字母“A~Z”以及连接符“-”组成,每四个字符一组,一共四组,加上连接符,是长度为19的可读字符串,例如“1234-5678-ABCD-WXYZ”。
以授权码方式进行激活的软许可,不依赖用户账号,软件的最终用户只需要通过一个授权码,就可以将软许可激活到本地终端,授权码可以支持“一码一机”,也可以支持“一码多机”。授权码软许可支持单机许可和集团许可两种形式。
单机许可
仅可以在本地使用的软许可。软许可在当前终端激活后,仅能在当前终端使用。可以支持“一码一机”、“一码多机”。
集团许可
类似于硬件加密锁中的网络锁,许可部署在服务端,供应其他客户端访问。软许可在服务端激活,供应其他能连接到的客户端来使用,当然,软件开发者是可以通过设置软许可条款属性来控制最多可连接的用户数量的。仅支持“一码一机”。
注意
单机和集团软许可的概念,要区分一下“一码一机,一码多机”的情况。虽然一个授权码软许可可以支持多台机器绑定,但是每个许可均只能在当前激活的机器上使用,这样的许可称为单机许可。而集团许可,是指在当前机器上激活的许可,可以供其他客户端机器使用,客户端机器上不需要激活许可。
如何选择
开发者可以根据自己的业务场景来选择使用哪种类型的软许可。
如果有以下需求,建议选择账号软许可:
- 希望掌握更多的客户信息,提升软件的用户粘性
- 软件需要定期进行激活
- 有自己的用户中心可以管理用户信息
如果有以下需求,建议选择授权码软许可:
- 软件一次性买断,不关心用户信息和用户粘性
- 不希望通过用户账号来管理软件许可
- 在一些终端移动设备上应用,不希望有账号和密码等复杂操作的
- 售卖的是算法库等库文件,使用授权码的方式是非常合理的
内容
条款属性
条款属性 | 备注 |
---|---|
许可版本 | 当前许可的版本号 |
许可ID | 范围从1至4294967295,0号许是生产时写入,是用于管理用途且不可删除的特殊许可。 |
开始时间 | 软件不能早于此时间启动。支持范围:2000-1-1 00:00:00到2099-12-31 23:59:59 |
结束时间 | 软件不能超过此时间启动。支持范围:2000-1-1 00:00:00到2099-12-31 23:59:59 |
首次使用时间 | 可以设置“发布时为第一次使用”,也可以设置为“第一次激活时为第一次使用”,用于实现时间跨度授权。由于软许可的使用环境限制,一般设置“第一次激活时为第一次使用” |
时间跨度 | 许可第一次使用之后的时间跨度,例如时间跨度是 30 天,那么软件从第一次启动开始后的 30 天内有效 |
软件并发数 | 最多可以同时使用的终端数量,设置集团软许可时用到 |
软件运行并发类型 | 是否为集团软许可的标识 |
许可只读区 | 可以读取,但是不可写入 |
许可公开区 | 数据只读,用户可见 |
许可读写区 | 数据可以被读取,也可以被修改 |
软件功能模块 | 最多支持 64 个功能模块 |
可离线时长 | 账号软许可使用,设置该许可可离线使用的时长,强制要求软件定期进行激活。开发者可设置离线时间 |
累积绑定设备数 | 设置该许可累积绑定的设备数,每次绑定计数减少,计数归零不可使用 |
同时绑定设备数 | 设置该许可同时绑定的设备数,每次绑定计数减少,计数归零不可使用 |
累积绑定设备数
指该许可最多可以绑定的机器数量,只要绑定过一次,就会记录一次绑定机器数。
例如,某条软许可设置最大绑定机器数为3,则当A、B、C三台机器绑定过后,D机器将无法绑定,即便前三台机器都解绑许可,D机器也无法进行绑定。
同时绑定设备数
指该许可最多可以同时绑定的机器数量,并没有机器总数量的限制,只要有空余的绑定节点数,新的机器就可以继续绑定。
例如,某条软许可设置最大绑定节点数为3,则当A、B、C三台机器绑定过后,D机器将无法绑定。此时若A机器解绑许可,则D机器可以继续绑定成功,A机器再次绑定将会失败,直到其他三台机器中其中一个解除许可绑定,A机器方能再次绑定。
数据区
名称 | 标识 | 数据区大小 | 备注 |
---|---|---|---|
只读区 | ROM | 0-65535字节 | |
读写区 | RAW | 0-65535字节 | 应用程序登录许可后可以读写数据 |
公开区 | PUB | 0-65535字节 |
只读区
开发者可以用用户数据区作软件所需要的数据的存储,例如一些配置信息。只读区较读写区更为常用,原因是所存储的内容不会在未授权的情况下被任意更改。更改只读区内容只有一种方法:更新许可或重新签发许可。
读写区
读写区允许开发者把运行过程中的必要数据保存在加密锁内,下次启动的时候读取并使用。
公开区
公开区数据允许开发者只读,开发者可以在此存储软件产品信息等内容,公开区数据将在Virbox用户工具上公开显示。修改只能依赖更新许可或重新签发许可。
核心技术
软许可生命周期
简介
软许可的生命周期,即软许可从产生到消亡的过程。软许可由开发者创建,软件用户使用,最终也可以由开发禁用或删除。Virbox 软许可在 Virbox 开发者中心产生,也可以在 Virbox 开发者中心控制。
技术原理
软许可的签发激活过程与精锐5 硬件锁许可的升级过程类似,依然采用 “开发者密钥签发,用户密钥加密” 的方案,只是由于用户密钥由精锐5变成了终端机器,所以这个过程比精锐5要复杂一些,但总体过程是一样的。
我们采用了三层验证的技术方案,采用开发者的根私钥,签发临时密钥对,又通过临时密钥对签发应用密钥对,应用密钥对是用于许可数据加密和通信认证的,而应用密钥对和开发者公钥会存储在本地,每次访问许可时,会对应用密钥对进行一次三层验证,即保证了安全性,也保证了和精锐5 硬件锁的兼容性。
创建和激活
首先,通过 Virbox 开发者中心来签发一条软许可,根据实际需求来选择是账号软许可还是授权码软许可,创建好的软许可在开发者中心可以一直查看到,可用于后期管理。
然后,在最终用户终端上,可以通过在线或离线的方式,将软许可激活到本地,只有激活成功的许可才可以被软件访问。
提示
开发者可以根据需要,自己实现许可的激活过程,也可以通过 Virbox 用户工具提供的激活功能进行激活。无论是集成还是使用工具,都是非常方便的。
激活过程
第一步,开发者在 Virbox 开发者中心创建一条许可,可以是账号软许可,也可以是授权码软许可。
第二步,用户从目标机器上获取一段硬件信息,通常是一个文件,将此文件通过指定方式上传至 Virbox 云平台。如果是账号软许可则需要提前登陆账号,如果是授权码软许可则需要输入授权码。此过程我们称之为 C2D 过程。
第三步,在第二步中上传硬件信息文件后会获得一个升级包文件,许可内容就存在升级文件中,将升级文件拷贝到目标机器上,并通过工具升级文件,至此许可激活完成。此过程我们称之为 D2C 过程。
以上过程如果目标机器处于联网状态,第二步、第三步可自动完成,用户只需要登录账号或输入授权码即可;如果目标机器是非联网机器,则需要手动完成以上操作。具体操作步骤可参考 账号软许可 和 授权码软许可。
吊销许可
如何使一条软许可不可用?有以下几种设置可以实现。
场景 | 方案 |
---|---|
有目的的使软件不可使用 | 可以利用软许可的条款属性来限制软件的使用权限,例如限制软件的 最终使用期限(许可的 结束时间),软件到期后自动不使用,常用于软件订阅使用 |
要求软件必须定期激活 | 可以使用账号软许可的“可离线时长”,促使软件用户定期激活软件 |
惩罚违规使用软件的用户 | 可以通过 Virbox 开发者中心直接删除该条许可,软件没有许可不可使用(但是这种操作无法控制已经签发的永久使用权限的许可,且绑定这条许可的设备不再联网了) |
用户申请吊销 | 由于设备终端损坏,而许可没有及时解除绑定,将造成最终用户财产损失。用户可以向开发者申请吊销许可,用户上报原设备的硬件信息,向开发者申请删除绑定信息,开发者可以在 Virbox 开发者中心找到许可绑定的机器信息并将之删除,则许可可以在新的设备上绑定。 |
软锁虚拟时钟
简介
软锁由于运行在用户机器本地,由于用户可以随意修改本地时间,所以其时钟最难控制。软锁自身实现了一套复杂的虚拟时钟运行逻辑,可以很大程度上保证时钟的准确性。
技术原理
软锁加密系统在第一次启动运行后,时钟是不准的,必须要进行一次校准才能使用。
许可在激活的时候会自动对时钟进行校准。以后的每一次启动时,会获取最后一次记录的虚拟时钟和本地时间作为基准时间,并通过对比当前的本地时间对基准时间进行校准,然后根据 CPU 频率自己计数增长时间,一般情况下,计数是可靠的。而且,如果设备是联网的,软锁系统还会自动对比服务器时间,对当前记录的时钟和基准时间进行校准,确保时间的有效性。
时钟校准
主动校准:软许可在线绑定时,主动对软锁虚拟时钟进行校准,无论锁内时间是否准确;软锁许可离线绑定时,当生成C2D文件时,文件内会记录两个时间,一个是软锁的虚拟时间v_clock,一个是当前PC时间pc_clock,当服务端收到C2D文件时,判断两个时间中与服务器时间最接近的时间作为返回值vclock存在D2C中,然后在下载D2C时,以服务端返回的时间加上软锁内部运行的滴答数之和作为一个较为准确的时间进行校准。vclock+tick。
自动校准:如果软锁内无软锁许可,则不会对软锁时钟进行校准;如果软锁内存在软锁许可,则在开机后5小时内,且软锁时间与服务器时间相差超过5min时,对软锁时钟进行校准。
几种场景影响
场景 | 影响 |
---|---|
设备机关机一段时间再开启 | 这是一个非常常见的场景,比如下班关机,第二天上班再开机。 关机时,虚拟时钟停止,并记录关机时的本地时间,及虚拟时间; 第二天开机时,软锁系统会比较当前本地时间,及上次记录的本地时间,还有关机时的虚拟时钟; 当当前本地时间比记录的本地时间新, 自动更新虚拟时间,变成当前本地时间,然后开始自己计数增长。 在正常情况下不会影响虚拟时钟,但是不能保证故意修改本地时间的情况,这种情况虚拟时钟的准确性很难保证 |
设备一直运行 | 虚拟时钟初始化后,一直自己计数,不被本地时间影响 |
设备联网,软锁时钟的准确性 | 联网情况下的软锁虚拟时钟会定时进行校准,是可以保证准确性的。Virbox 用户工具启动后 0~5小时内的随机时间,会自动校准软锁虚拟时钟,与服务器时间进行同步 |
硬件指纹
简介
由于软许可是运行在终端设备上的,所以一条软许可是要对应一台设备的,必须要有方法标识出终端设备的唯一性。因此我们引入了软锁硬件指纹的概念。
技术说明
软锁加密系统通过获取本地的关键硬件信息,通过复杂的密码学运算,计算出一条 32 字节长度的唯一ID,我们称之为硬件指纹。同时,我们又生成了另一条16字节长度的唯一ID,我们称之为机器ID。在使用过程中,机器ID是可以被查看的,硬件指纹是用于密钥计算和验证的,不会对外暴露,而且硬件指纹是使用时计算得到,也不会在本地存储。
技术优点
- 可靠性高,难以复制
- 支持云主机部署,支持阿里云、亚马逊、华为云等云主机
- 支持虚拟化部署,KVM;VMWare;Docker 绑定物理机硬件指纹,需要结合sunjw的虚拟机支持平台
- 支持平台广泛,主流的开发板(海思、瑞芯微、英伟达、树莓派等)
- ARM Linux、Android 平台不依赖特殊权限可正常使用,稳定使用
硬件更换影响表
更换硬件 | 是否影响软许可 | 处理方案 |
---|---|---|
CPU | 是 | 向开发者申请吊销许可 |
主板 | 是 | 向开发者申请吊销许可 |
内存 | 否 | -- |
硬盘 | 是 | 需要重新激活许可 |
网卡、声卡、显卡 | 否 | |
显示器 | 否 | |
电源 | 否 | |
重装系统 | 是 | 需要重新激活软许可 |
软锁自身安全技术
简介
软锁首先要保证本地环境安全,本地硬件信息健康,并且为了兼容性,还要更少的依赖硬件信息。
技术说明
软锁系统采用本地加密方式存储,可以做到一台机器一个密钥,所有数据或文件均以密文形式存储,只有在使用过程中进行解密,而且只对使用到的数据解密,不会对整个加密文件整体解密。另外,软锁系统只有通过驱动才能访问,驱动的应用更加增加了破解难度。
配套安全方案
简介
软许可数据虽然是加密存储的,但是使用过程中肯定会出现明文,这对一些高级黑客来说是非常容易获取到的,因此必须要有一些其他技术增强安全性。我公司自主研发的 Virbox Protector 软件保护工具和 Virbox 用户工具可以有效防止内存监听,软件调试等破解手段。
Virbox Protector
Virbox Protector 即我们常说的加壳工具。拥有一键加壳功能,提供强大的代码虚拟化、高级混淆、碎片代码与智能压缩技术,避免软件被逆向和非法修改。Virbox Protector 可以自动将软件与 Virbox LM 的许可关联,软件脱离许可将无法运行;也可以仅对软件进行加密,不关联任何许可。支持 Windows、Linux、ARM Linux、Mac 等系统,支持交叉加密保护。
Virbox Protector 提供多种应用版本,可以对几乎所有开发语言进行加密保护,包括常见的 C/C++、Java、C#、VB、Delphi、VB.Net,以及Python、Lua、R、Unity3D 等开发语言。
Virbox 用户工具
Virbox 用户工具 是软件的最终运行时环境,是许可的安全桥梁,起到本地管理许可、激活许可和安全通信的作用。用户工具推出了全新的软件保护模式,采用全新的许可管理理念,统一许可访问接口,云、软、硬许可一体化管理,加强软件许可授权管理。安全方面,工具采用三层通道加密技术,防止数据被监听,同时,工具主动监视并反击黑客破解,使用到的数据加密、反监听、反调试技术等方式均代表了当今最先进的技术水平。Virbox 用户工具是持续更新的,在开发商软件不改动的情况下,不断提升安全保护方案。
应用
高级应用
应用案例