一种基于硬件特征和动态许可证的分布式高可用软件授权认证模型

2021-08-06 06:23马剑华
关键词:许可证分布式服务器

高 博,刘 羽,唐 莹,侯 璞,马剑华

(1.重庆市教育考试院 a.信息处;b.财务处,重庆 401147;2.四川外国语大学,重庆 400031;3.重庆辰盛悟智科技有限公司,重庆 401121;4.重庆市招生考试服务有限责任公司,重庆 400010)

软件破解与保护是跟随软件全生命周期的永恒课题。2004年,微软公司提出了最终用户许可协议(end-user license agreement,EULA)并要求用户遵守。迄今为止,国际上对商用软件的版权进行保护的通用惯例依然如此。但是,由于EULA只是从文本上约定了最终用户的权利和义务,并未从技术角度提供有效的版权保护机制和控制手段,无法控制用户的任意安装与使用,更无法保证用户私自对软件进行破解。为了达到保护软件版权的目的,产生了硬件保护和软件保护两类方案,其中基于硬件保护的措施能够在一定程度上保证软件版权的有效控制,但控制手段必须依赖特定的硬件载体(加密狗、安全光盘等),在需要运行软件的计算机硬件设备数量众多时对授权硬件载体数量的需求同步增加从而导致开销增加等。

笔者所在研究团队的前期工作[1]在一定程度上实现了基于硬件特征和动态许可证的软件授权认证,但在实际应用中发现存在一些问题和不足。陈金玉等[2]提出了一种基于机器特征生成注册码的软件加壳版权保护方法。余琼霞[3]讨论了SaaS模式下计算机软件保护的相关问题。李森[4]采用RSA算法,提出了一种基于License授权文件的、通用的软件版权保护机制。范洁等[5]提出了一种基于静态软件水印和软件指令集的软件特征值提取方法。王云晓等[6]设计了一种基于动态密文的软件保护方法。张学诚等[7]设计了一种基于计算机指纹的软件版权保护方法。胡国良等[8]研究了一种基于实时授权的企业级软件License控制方法。刘蓬涛等[9]给出了一种基于第三方认证的软件版权保护方案。Jinyue等[10]提出了一种证明二进制代码相似性的遗传算法。Lvchen等[11]提出了一种嵌入式系统软件版权保护的认证策略。综合相关研究者的最新进展和成果,我们在前期提出的SSAMHFDL(server-side software authorization model based on hardware feature and dynamic license)模型基础上,提出了改进的DHASAMHFDL(distributed and high-available software authorization model based on hardware feature and dynamic license)模型。

1 SSAMHFDL模型在实际应用中存在的问题及改进措施

经过多个项目的实际应用,发现SSAMHFDL模型存在以下问题和不足:

1)授权服务器LMS和授权数据库LD存在单点故障的风险。SSAMHFDL模型中的LMS和LD都默认为单台服务器上的单实例,在实际应用中容易因网络阻塞、操作系统错误或LMS/LD本身报错引发单点故障。

2)目前市面上应用广泛的一些软件如Jet-Brains的IDEA开发工具等,大都被攻击者通过伪造本地LMS对LA进行授权的方式进行了本地破解,SSAMHFDL模型中LA与LMS之间的通讯未采用证书加密,也存在该风险。

3)未考虑LA离线提交授权许可的情况,有些用户的BS运行在内网,无法直接访问LMS,亟须增加生成离线授权请求数据的功能。

4)不区分终端上运行的BS的版本,导致不同版本BS可使用同一授权,软件提供商的利益受到损害。

因此,为解决SSAMHFDL模型存在的问题和弥补不足,我们基于前期研究,提出了基于硬件特征和动态许可证的分布式高可用软件授权认证模型DHASAMHFDL,主要针对上述问题进行了以下改进,并将授权场景扩展到所有软件类型。

1)将单台授权服务器LMS更换为分布式授权管理服务器集群DLMSC,将单台授权数据库LD更换为分布式授权数据库集群DLDC,相应的操作流程也随之变更。

2)引入第三方CA对LA和DLMSC签发安全证书,LA与DLMSC之间的所有通信数据均使用证书加密和验证。

3)考虑到用户实际使用中可能存在BS不能直接访问网络的情况,允许LA生成离线授权请求数据,由用户在满足网络授权条件的情况下手动向DLMSC提交授权请求数据,并完成后续步骤。

4)区分终端运行的BS版本,将版本参数VER加入注册授权流程中并进行验证,版本不同的BS原则上不能共享授权信息。

2 DHASAMHFDL模型

2.1 定义与约定

符号约定:

U:User,用户

BS:Business Software,目标商用软件程序

LA:License Agent,BS中的授权认证模块

DLMSC:Distributed License Management Server Cluster,分布式授权管理服务器集群

DLDC:Distributed License Database Cluster,分布式授权数据库集群

L:许可证

SL:许可证状态,UNLICENSED表示已失效或未授权,LICENSED表示已授权

Ts:申请许可证的时间戳

Tc:当前时间戳

Tr:BS在运行过程中向LMS发起授权验证请求的时间间隔,依特定算法M生成,Tr∈[60,900]

T:限制申请许可证的最短时间间隔

Lifetime:许可证有效期

OTCA,B:One-Time Code,一次性A、B共享对称密钥

Ka,K′a:分别表示a的公钥和私钥E,D:分别表示加密和解密

SK(m):表示以K对m的签名

VK(s):表示以K验证s的签名

C:DLMSC验证许可证是否有效的算法

M:LA生成Tr′的特定算法

R:随机量

定义1:硬件特征码(hardware feature code,HFC)是指用于区分软件使用者身份的关联于机器硬件特征的全局唯一标识码。一般由多个硬件组件的型号、流水号等信息通过某种加密算法生成。

定义2:用户识别码(user identification code,UIC)是指用于区分软件使用者身份的关联于用户自身特征的全局唯一标识码。一般由用户自身相关信息通过某种方式进行编码。

定义3:请求向量

Req={HFC,UIC,OP,VER,CHKSUM}

其中,HFC为硬件特征码;UIC为用户识别码;OP为操作类型;VER为软件版本特征码。

其中,REG、VERIFY、GETLIC分别表示申请许可证、验证许可证和获取已授权的许可证文件;CHKSUM表示对前述3项数据的Hash校验值。

定义4:软件许可证是用于控制软件版权,由许可证管理器依据HFC、UIC、VER和OTC(One-Time Code,一次性验证码)为用户动态生成的、加密的复合数据结构。其状态其中,LICENSED、UNLICENSED分别表示已授权和未授权,其中未授权包括从未授权和授权后注销2种情况。

定义5:软件胎记(Software Birthmark)是指软件出厂前设置的一种特征信息,在软件本身发生变化时该特征保持不变,可用于标识该软件属性。在软件非执行状态下提取得到的特征信息集合称为软件的静态胎记,在软件运行状态下提取得到的特征信息集合称为软件的动态胎记。

定义6:软件水印(Software Watermark)是指在软件开发时嵌入到软件的数据区或代码区的隐藏信息,但不在程序的可执行流程中,与软件运行状态无关,可被提取出来用于判断软件的拥有者或开发者,协助鉴定软件版权。

约定1:该商用软件的许可证授权与认证部分在同一终端上运行。同一台终端硬件设备上可运行一套或多套不同版本的该商用软件。

约定2:为了有效地控制和保证许可证的原子性,在请求发放证书的时限T内重复发送相同的授权请求将被拒绝发放许可证;否则,将认为是合法的请求,可为其发放许可证。每当处理用户请求时,分为2种情况:

1)该用户仅有一份额定有效许可证,此时将清空许可证分布式授权数据库集群DLDC内保存的该用户上一次的有效许可证信息,并填入此次请求的相关数据,然后生成许可证文件发送给用户。

2)该用户可申请多份额定有效许可证,当未达到该用户的有效许可证数量上限时,将新建许可证信息并填入此次请求的相关数据,然后生成许可证文件发送给用户;否则将提示用户许可证数量已达上限,此时用户可根据情况重置其名下的某个许可证信息,步骤与1)相似。

约定3:分布式授权管理服务器集群DLMSC是公平、可信的,商用软件本身以及授权代理LA、授权管理服务器等程序在软件实现上是安全的。

约定4:模型中的通信数据完整性通过Hash校验值和安全对称密码算法保证;数据不可否认性通过公钥算法保证;系统时间戳由服务器方发放和控制;时间戳验证需与服务器方联机。

约定5:LA与CA、DLMSC与CA之间的数据通讯均使用证书加密和验证,证书的合法性由CA保证。

2.2 概念设计

DHASAMHFDL模型的思路和一般执行步骤如下:

步骤1用户购买软件后运行其中的LA,LA将首先检测软件自身胎记和水印信息,如正常则生成HFC、UIC并获取当前软件版本信息VER;如软件胎记和水印信息异常,表明软件可能存在破解或损坏,LA将向用户发送相关错误提示信息并终止后续流程。

步骤2LA检测当前系统环境是否满足网络授权相关条件,如不满足则执行步骤3,如满足则执行步骤4。

步骤3LA生成离线授权请求数据Req{HFC,UIC,VER,OP,CHKSUM},由用户在满足网络授权条件的情况下手动向DLMSC提交授权请求数据。

步骤4LA联系CA,获取DLMSC的有效地址,使用SSL证书与DLMSC验证通过后,向DLMSC在线提交授权请求数据Req{HFC,UIC,VER,OP,CHKSUM}。

步骤5DLMSC联系CA,获取DLDC的有效地址,并使用SSL证书联系DLDC进行查询,若数据无效或未满足其他条件,拒绝发放许可证,向LA返回授权失败等信息;否则DLMSC生成新的许可证信息并将其返回至LA。

步骤6LA依据DLMSC的返回信息对该商用软件进行授权认证,或在其界面上提示授权失败的相关内容。

DHASAMHFDL模型的概念结构流程如图1所示。

图1 DHASAMHFDL模型的概念结构流程框图

2.3 算法流程

根据上述思想,DHASAMHFDL模型的软件注册授权全过程包括以下4个阶段:

阶段1:初始化

用户U操作BS,启动LA模块,执行初始化操作,共分以下2个步骤:

步骤1LA检测BS的胎记和水印信息:

如发生异常,LA向U发送错误提示信息;如正常,执行步骤2。

步骤2LA检测当前系统环境是否满足网络授权条件:

如发生异常,LA生成离线授权请求数据,并向U发送提示信息:

由用户在满足网络授权条件的情况下手动向DLMSC提交授权请求数据;

如正常,执行步骤3。阶段2:申请许可证LA从DLMSC获取许可证,共分以下3个步骤:

步骤3LA联系CA,获取DLMSC的有效地址,并使用SSL证书与DLMSC验证:

步骤4LA通过网络向DLMSC提交授权请求:

其中,OTCLA,DLMSC为每次申请授权时LA向DLMSC取得的OTC。

步骤5DLMSC验证LA提交的信息的合法性:

若Tc-Ts<T,表明在时限内多次申请授权,则拒绝并返回,否则转步骤6。

步骤6根据LA的授权请求,DLMSC检查LA提交的HFC、UIC、VER等数据并根据情况决定是否生成许可证并发放。

若SL=UNLICENSED,则DLMSC动态生成L并使用BS的公钥KBS加密,并随机生成BS、DLMSC会话密钥KBS,DLMSC和新的OTC密钥OTC′BS,DLMSC,加密返回给LA:

2)LMS→U:对L做签名并加密传送至LA:

3)置SL=LICENSED,将HFC、UIC、Ver、Ts、Lifetime写入DLDC;

4)LA检测从DLMSC得到的L,若R2与R1不为相似向量,则拒绝接受该许可证信息,否则验证L的签名VKBS(SKBS′(L)),通过则接受L,否则拒绝;

若SL=LICENSED,则表明L已经过授权,此时鉴权HFC、UIC、VER等信息:

若(HFC=HFC′)&&(UIC=UIC′)&&(VER=VER′),即该BS在同一服务器硬件设备上重新安装,为LA发放L;否则,表明该BS的运行环境已与申请授权时不同,拒绝发放L并返回。

阶段3:注册授权软件

步骤7LA向BS提交申请到的L,BS使用私钥K′BS解密L:

并与DLMSC联机,提交Ver、Ts、Lifetime,DLMSC根据自己的Tc计算Tc-Ts<Lifetime是否成立,并将结果返回LA,若此过程超时,LA拒绝注册,否则转步骤8。

步骤8LA验证

是否成立,成立则激活BS相关功能、保存OTC′BS,DLMSC、向U提示BS激活授权成功并写入软件运行日志,否则作废L并向U提示BS激活失败、写入软件运行日志。

阶段4:验证授权信息

步骤9当BS首次运行时将采用随机算法生成Tr。

步骤10当BS授权成功后,经过Tr时间,由LA模块向DLMSC发起验证授权许可证信息的请求:

其中OP=VERIFY。

同时LA模块依据特定算法M生成新的Tr′。DLMSC对此请求进行验证操作:

则BS提交的许可证继续有效,否则许可证失效,需要重新申请授权认证。

若此操作超时,则许可证自动失效,已激活的功能将关闭,转步骤1。

步骤11经过Tr′后,BS重复执行步骤10。

对于软件迁移(原服务器硬件设备发生改变也认为是迁移的一种特例),即更改BS的运行环境或更改用户授权信息,均需重新执行以上步骤以获取新的L来激活BS方可正常使用。

2.4 模型分析

1)U提交的HFC、UIC、VER等信息,通过本模型能且仅能获得适用于一台终端硬件设备激活使用的用于特定版本BS的L,且能够使得L激活BS以正常使用。

由2.3知,当且仅当

时,DLMSC才生成并发放L。当对应于HFC、UIC和VER的L生成后,原许可证L′则自动失效(被L的信息覆盖),L′对应的终端硬件设备信息在经过Tr时间后向DLMSC验证授权许可证是否有效时将失败,从而保证了许可证的原子性发放;而当LA申请到许可证后,在T内重复申请将无法得到许可证,这使得重放攻击无法顺利实施。从而保证U能且仅能获得适用于一台终端硬件设备激活的L。

阶段1和2的各步操作均应当加密传输,且其中使用了OTC方式保证了即使同一用户在不同时刻发起的申请请求数据也毫无关联,因此系统能够确保安全通信。在LA得到L后,即使U篡改了其内容也无法通过BS的签名验证VKBS(SKBS′(L)),从而许可证的完整性得到保证。

2)当BS被迁移使用时(或原终端硬件设备发生改变,即HFC发生变化),阶段4的操作将返回失败的结果,此时需要U重新执行步骤1来获取新的L激活BS。

3)本模型中的分布式主要是指授权管理服务器集群DLMSC和授权数据库集群DLDC分别采用了分布式架构,既排除了原有模型容易出现单点故障的隐患和风险,又提升了授权模型服务端的负载能力。DLMSC和DLDC的分布式集群在实际应用中可通过多种方式实现,本文不再赘述。

3 DHASAMHFDL模型的完整实现

在DHASAMHFDL模型设计的基础上,我们遵循分层化、模块化的原则,分别采用PHP语言和C#语言构建了Web版本和Windows桌面版本的BS示例程序及其中的LA模块,其中PHP语言版本的BS程序还使用Zend Guard 7.0进行混淆加密生成二进制中间执行代码,保证BS程序的代码无法被逆向工程或反编译破解。DLMSC的实现也同样采用了2种方式——使用PHP语言构建的Web版本和使用C#语言构建的本地Windows服务版本,DLDC采用MySQL数据库,完整实现了适于Internet/Intranet的软件授权认证系统。该系统的软件体系结构流程如图2所示。

图2 基于DHASAMHFDL模型的软件授权认证 系统多层体系结构流程框图

在此系统中,签名算法采用RSA-SHA1,对称密码算法采用AES,其密钥采用OTC机制(仿照One-Time Password,一次性密码)生成,关键验证运算采用自主实现算法。该系统基于CPU型号和流水号、硬盘序列号以及网卡MAC地址进行复合逻辑运算并进行Hash生成HFC;UIC则采用用户相关数据如用户姓名、Email、电话等以及当前操作系统名称、版本,BS运行环境等相关信息复合逻辑运算并进行Hash生成;VER为终端上运行的BS版本。经验证,该试验系统具有良好的稳定性、可重构性、可移植性和可扩展性,在i5 4790/32G RAM环境下能够同时承载2万左右的并发申请授权请求,并且系统工作正常。

4 相关工作比较

目前,市面上流行的商用软件多使用基于硬件特征验证软保护等措施来加强软件安全。与流行的几种方案相比较,本系统支持许可证的原子发放、软件资源的迁移和回收、支持分布式部署等,能够以较弱的限制有效地抵制非法复制与扩散,达到了EULA协议的要求。本模型与其他方案的功能支持数据如表1所示。

表1 DHASAMHFDL模型与目前流行的软件保护方案的功能

为进一步考察DHASAMHFDL模型的量化性能,以图2搭建的环境为基础,将上述软件保护方案实例化,着重从响应时延、用户操作步骤多少、可保护信息的信息量、实时处理能力、资源占用度(服务器资源和网络带宽等)、第三方组件依赖程度及成本等方面进行了比较,结果如表2所示。

表2 DHASAMHFDL模型与目前流行的软件保护方案的性能量化

综上,与目前流行的软件保护方案相比,DHASAMHFDL模型不但继承了SSAMHFDL模型在许可模式上的优点,还支持分布式部署和服务器高可用性,进一步提升了授权服务器的稳定性与可访问性,适用于各种软件授权和保护场景,能够保护用户较多的隐私信息,既可在线生成软件授权也允许离线提交,同时代码实现容易、部署方便、对服务器和网络资源占用不高,基本不依赖第三方组件、易于水平扩展服务端负载能力,能够较好地对C/S或B/S架构软件以及单机软件程序进行版权保护。

5 结论

提出的DHASAMHFDL模型是对前期SSAMHFDL模型的一次重大改进,支持分布式部署和服务器高可用性,达到了EULA的要求,可用于对服务器端商用软件进行授权认证。同时,在多项指标上具有显著优势,为软件版权保护提供了一种有效的实现机制。可用于实际生产环境,为广大研究人员从事该领域研究提供了一种新的思路。

猜你喜欢
许可证分布式服务器
新一代分布式母线保护装置
山西公布首批屋顶分布式光伏整县推进试点
秦山核电厂运行许可证延续研究与应用
分布式空战仿真系统设计
基于深度学习的分布式安全日志分析方法
2018年全球服务器市场将保持温和增长
排污许可证如何破茧成蝶
近期获得公映许可证的影片
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵