概述

背景

物联网(The Internet of Things,简称IOT)已经深入大众群体的工作和生活中,我们几乎每天都在使用这些智能设备,例如超市自助收银系统、线上线下人脸识别支付、小区门禁、人事考勤、智能摄像头等等。有统计显示,自1992年到2020年智能设备的连接数,预计已经达到500亿之多。新的技术和设备引入也带来了新的安全和隐私风险。在 IoT 领域,关键算法和业务逻辑被攻击和盗版的风险相对更高,而算法被破解导致的直接结果可能就是隐私数据的泄露。如何保证设备软件的算法和逻辑,成为保护隐私数据的第一道防线。

产品简介

Virbox Smart 许可,也称 Virbox Smart License,以下统称 Smart License。面对 IoT 领域设备授权,保护算法和应用程序安全,能够有效的限制应用程序和硬件设备的对应关系,管控应用运行的期限,保护开发者的权益不受损害。

Smart License 是授权管控的安全开发套件(SDK),不依赖任何应用和系统进程,普通用户和管理员(root)都可正常使用。

Virbox 开发者中心 是授权管理平台,开发者无需安装客户端,通过浏览器登录即可使用,可实现对软件授权的签发和管理。

Virbox Protector 加壳工具(专业版)(Virbox Protector 简称 "VBP")是支持 ARM 指令加密的软件加固工具,无需编码,直接对编译后应用程序进行保护处理,简单易用,安全强度高,灵活可配置,支持与持续构建系统集成。

产品特点

  • 支持多种授权方式。支持一码多机和一码一机,满足多变的业务需要。
  • 支持多种 CPU 架构。支持市面主流的开发板,树莓派,三星6818,RK3399等。
  • 硬件绑定。授权和设备硬件绑定,有效防止文件拷贝盗用授权。
  • 虚拟时钟。内置虚拟时钟,不受系统时间影响。通过限制软件使用时长,实现分期付款的销售策略。
  • 高安全性。与 Virbox 加壳工具配合使用,让授权更安全。
  • 灵活、易扩展。授权结构灵活,内容丰富,支持开发者定制开发,完成复杂的业务场景。
  • 随时随地发布授权。开发者登录 Virbox 开发者网站,在线签发授权,缩短软件销售环节,提高转化率。
  • 销售跟踪。开发者通过 Virbox 开发者网站查看授权绑定设备概要信息,跟进客户使用情况。
  • 支持多种应用场景。支持联网或不联网设备的授权控制。

支持范围

操作系统

支持常规的 ARM Linux 操作系统,腾讯的 TencentOS tiny 和华为 LiteOS 尚未经过测试验证。

开发板卡

支持市面以 ARM 系列(ARMv7,ARMv8)为主的 SoC 芯片组开发板,海思芯片也在支持范围。

产品架构

整体拓扑图

拓扑图涵盖开发者软件加固、用户付费、授权管理、设备激活等多个场景。

  • 软件加固,开发者软件编码调用 API(或使用 Virbox 加壳工具)集成授权管理功能。
  • 用户付费,用户线上或线下购买开发者的产品。
  • 授权管理,开发者在确认收到客户付费后,通过 Virbox 开发者中心 给用户签发授权,并将生成的授权码发给用户。
  • 设备激活,设备联网环境下指定授权码执行在线绑定即可完成设备激活;设备离线环境下可通过授权离线升级包完成设备激活。

设备授权拓扑图

  • Virbox Cloud Server,即 Virbox 开发者中心 的授权服务(简称"授权服务")。
  • IoT Device 是开发者软件运行的物联网设备。

设备初始化。当应用程序首次运行时,Smart License 会收集设备硬件信息,计算出设备唯一编号 machine_id,并使用设备唯一编号生成仅限当前设备可用的授权存储文件,保存激活后的授权信息。

设备激活。首先,设备生成包含设备唯一编号信息的请求数据(C2D),与授权码一起发送给授权服务;然后,授权服务记录设备信息并与指定的授权码绑定,生成仅限当前设备可用的激活授权的应答数据(D2C);最后,设备收到应答数据完成授权激活。

产品功能

授权码

Smart License 目前支持两种授权管理方式:一机一码或一码多机。 "码" 指的是 Virbox Smart License 授权码,开发者在 Virbox 开发者中心 使用销售模板签发授权码,每次产生的授权码不同,但每一个授权码都对应唯一的产品(许可);"机" 指的是需要授权的设备。

  • 一机一码。一个授权码只能激活一台设备。
  • 一码多机。一个授权码允许激活多台设备,每激活一台设备,Virbox 开发者中心 会记录增加一个绑定数,直到绑定数达到授权码允许绑定的上限。

关联硬件

Smart License 与设备绑定,在应用运行的目标环境(开发板 ARM Linux 系统)运行,第一次调用会初始化环境,收集设备的硬件信息(CPU、MAC、存储分区等),计算唯一的设备ID(下文简称"设备 ID"),作为当前设备的身份标识。许可绑定时必须将设备信息上传至 Virbox 开发者中心,由开发者中心根据设备信息生成只有当前设备可用的许可升级文件,同时开发者中心会记录设备绑定信息,用于计算一条授权码允许激活的设备数量。

Smart License 与设备硬件绑定,即使将授权文件拷贝到配置相同的其他设备,许可无法使用。

用户隔离

Smart License 在 ARM Linux 系统中支持普通用户权限激活、使用授权,不需要 root 权限即可使用。Smart License 的加密授权文件不同的用户之间相互隔离,即是不同的授权文件。当前用户隔离的设计方案,造成不同的用户生成的设备ID也各不相同,即使是相同的设备,两个不同的用户绑定同一条许可,也会被识别成两台独立的设备,因此,要求开发者在目标环境下使用哪一个用户激活授权,就是用哪一个用户使用授权,即如果使用 root(或 sudo) 激活授权,即必须 root 用户使用授权。

虚拟时钟

虚拟时钟是 Smart License 在设备端实现限制授权使用时长的重要组件,虚拟时钟记录设备运行的时间,作为判断授权到期的依据。虚拟时钟只有在绑定许可后才会产生,未绑定许可时,无虚拟时钟。

时钟规则

虚拟时钟在绑定许可时获得服务器时间作为有效时间对设备本地的虚拟时钟进行校准,校准后在本地模拟真实的时间持续增长,不会受到设备系统时间的变更而发生改变(过去或未来),从而避免出现因为设备时间修改造成授权提前到期不可用等问题。

增长规则

虚拟时钟使用设备上电后的嘀嗒数(tick)作为增量来修改虚拟时钟,当设备连续运行一段时间后,虚拟时钟按照累计的嘀嗒数差值作为增长时间进行记录,如果当设备激活授权后断电放置一段时间,放置这段时间不会计入虚拟时钟,即平时所说的时钟停滞,在下次上电后虚拟时钟继续累加计数。

当前方案存在一定的风险,建议开发者使用永久许可,如果非要限制应用的使用时间,则尽量保证设备处于持续上电的状态(电池或者运行不关机),否则因断电产生的误差,需要将此风险考虑在内,酌情选择授权方案

时钟误差

本节提到的时钟误差特指在 "增长规则" 范围内,开发板连续上电的环境下,软件连续运行造成的虚拟时钟误差。虚拟时钟误差在2秒以内,当误差偏大时会自动进行误差校准,不会因为长时间产生累计误差。

离线绑定

Smart License 与设备绑定的基本要素,在提升安全性的同时也增加了操作的流程。离线绑定要求先收集设备信息(C2D文件),然后将设备信息(C2D文件)上传至 Virbox 开发者中心 兑换离线许可升级包(D2C 文件),最后将离线许可升级包(D2C文件)拷贝至设备,通过 API 或工具命令完成离线绑定。

协议约定 C2D 文件和 D2C 只能使用一次,升级成功后文件过期作废,无法继续使用,避免重复升级产生盗用授权漏洞。

自定义设备 ID

Smart License 采用纯软件的设计方案,虽然和硬件信息绑定,但也无法完全杜绝克隆(修改 ARM Linux 系统内核源码)的情况,如果开发者可以获取到唯一设备ID(简称"设备 ID"),例如可以获得海思芯片的唯一序列号,可以通过 API 或者工具命令进行设置实现与特定硬件绑定的目的。

当开发者在未初始化 Smart License 设备上使用给定的设备ID进行初始化,Smart License 的本地授权文件将使用开发者自定义的设备 ID 绑定。需要注意的是开发者必须保证设备 ID 的唯一性,如果出现重复,就会造成多个设备共用同一条许可,授权被滥用,给开发者带来经济损失。

应用场景

Smart License 可应用于众多的 IoT 领域,适用于所有智能设备行业,支持市面主流的 ARM 处理器开发板(海思、麒麟等),本文从 ARM 软件开发者的角度,从以下三个方面阐述支持的通用业务场景。

算法授权

算法通常是高精尖软件的核心部件,例如人脸识别算法、声音分析算法、模具达标检测算法等,好的算法可以成就一家企业发展壮大,只有少数专业人士才能编写,具有很强的知识产权保护价值,但算法也具有通常软件产品的共性:复制成本低、极易扩散、难以管理。算法逻辑被逆向,算法库被滥用,算法授权被轻易复制,给企业和个人开发者带来巨大的经济损失,算法作为高新技术企业的核心资产,理应受到高度的保护和控制。

开发算法的企业或个人开发者,提供的产品是一组算法开发套件(SDK),以及技术支持和售后服务。算法产品的收费模式通常是按照激活的设备数量收费,激活设备越多,对开发者的收益越大,限制算法在某一个设备运行,是算法授权的核心诉求,同时为减少额外的技术支持工作,算法要求授权激活不增加使用者的工作量,因此要求授权激活过程尽量少让客户参与,必须做到联网环境自动激活。

算法授权,就是算法库进行授权管理,限制算法只能在被授权的设备中运行,更换设备算法将无法使用。

Virbox Smart License 应用软件安全技术,限制授权与当前设备绑定,能够有效阻止授权复制至相同硬件开发板盗用授权问题。同时支持一码多机的授权方式,开发者只需给采购算法的企业发布一条授权,即可限制其实际绑定的设备数量,实现按激活设备收费的销售策略。

Virbox Smart License 授权码在线绑定功能,只需开发者在功能代码中调用在线绑定接口并指定授权码,联网环境下调用即可自动完成授权绑定功能。授权码可以通过配置文件读入,或以固定形式编写在功能代码中。

应用授权

开发者的产品是软件产品,运行硬件通常由别的厂商提供,双方属于合作共赢关系。例如车载系统应用软件,无人售货机,充电桩等。

软件类产品通常的销售模式是按照使用的设备数量收费,为了适应多变的市场环境,软件需要一段时间进行升级,售后服务和软件升级也是开发者的主要收入来源。因此限制软件运行的设备数量,限制软件的使用时间,是应用授权要解决的核心问题。

Virbox Smart License 支持虚拟时钟,授权激活以互联网时间作为基准时间,通过内部机制模拟时钟不可回退,持续增长的特性,虚拟时钟不会随着更改设备的当前系统时间而发生变更,授权只能在授权限制的时间范围内使用,过期将不可用。

在联网的环境下,授权码可以在线联网刷新,更新设备端授权状态,开发者只需通过 Virbox 开发者中心变更授权状态,设备端自动同步,轻松完成续费延期、一码多机增加绑定设备、修改授权内容等不同业务需要,极大程度减少重复更新激活的沟通、管理成本。

设备授权

开发者的产品是软硬件结合的产品,例如人脸识别闸机、智能摄像头、电梯广告机等,但受限于内部管理等原因,硬件生产和软件开发通常是相互隔离,部分企业授权硬件设备生产企业在设备生产阶段完成软件授权和激活工作,因此控制激活设备数量,和控制用户使用设备的时间长度,联网环境下自动激活,就成为企业内部管理和产品销售的必要功能。

产品特性

稳定性

7*24 小时的连续稳定运行。

兼容性

ARM 应用程序是否能够在目标平台正常运行,最关键的因素是当前开发板环境是否支持应用程序编译的指令集,而不同的 CPU 架构,指令集也有所差异,市面上主流的 ARM CPU 厂商都能够尽量做到向前兼容,种类繁多的 SoC 芯片制造商所集成的 CPU 遵循 ARM 架构(ARMv7,ARMv8)分类。
Virbox Smart License 开发套件分别使用 ARMv7 和 ARMv8 版本交叉编译器编译,确保应用程序可以在 CPU 架构为 ARMv7 和 ARMv8 的运行环境正常使用。

经过测试的主流环境包括 RK3288/RK3399,三星6818,树莓派4,Virbox 工业核心板等。

安全性

Smart License 是软授权,授权信息保存在加密后的本地文件,本地授权文件与当前设备硬件信息绑定,即使用户(恶意)拷贝授权文件到其他开发板环境下,也无法正常使用。通过上述策略保证本地授权文件的唯一性和安全性。