APP下载

一种基于弹性保护机制的软件保护模型

2017-11-15汪彩梅刘文杰

合肥学院学报(综合版) 2017年5期
关键词:服务端公钥客户端

汪彩梅,刘文杰

(1.合肥学院 计算机科学与技术系,合肥 230601;2.科大国创软件股份有限公司,合肥 230088)

一种基于弹性保护机制的软件保护模型

汪彩梅1,刘文杰2

(1.合肥学院 计算机科学与技术系,合肥 230601;2.科大国创软件股份有限公司,合肥 230088)

从软件服务商及用户的利益双赢角度提出了一种基于弹性保护机制的软件保护模型。一方面,该模型使得软件服务商通过安全机模块为合法用户提供生成的注册码方法达到保护软件的目的;另一方面,合法用户可以通过数字签名技术验证软件服务商的身份从而提高了自身利益的保障。利用用户身份认证、主机硬件验证、软件权限设置机制实现了对软件的弹性保护。模型分为四个模块:客户端模块、软件服务端模块、安全机模块、数据库模块。实验结果验证了该模型能同时解决了服务商与用户之间的软件保护问题与权限管理问题。

弹性保护;安全机模块;身份认证;权限设置

随着计算机的飞速发展,计算机软件被侵权现象越来越严重,其主要方式有未经授权用户的非法复制以及非法传播[1-2],为软件厂商及用户的利益带来很大的危害。针对这一现象很多专家学者提出了一系列软件保护方法,如key file保护、软件壳保护、加密狗及注册码保护等。[3-5]

然而现有的软件保护技术基本上侧重于研究软件自身的保护机制,而很少考虑用户的权限管理问题,基于此论文提出了一种基于混合技术的保护模型,即解决软件的保护问题,同时解决了权限管理问题。模型包含有几个基本要素:(1)软件加密,(2)权限管理,包括用户的权限管理和软件的授权管理。通过为软件设置安全系数及软件用户的授权访问双重策略实现了对软件的弹性保护,(3)安全注册系统,安全注册系统为软件保护模型的核心,用于授权的实现。

1 基于弹性保护机制的软件保护模型的设计

1.1角色设计

论文在软件保护模型中设计有三个角色:客户端(Client)、服务端(Server)和安全机模块(Safety),实现对软件安全的保护和客户信息的保护。其中客户端代表合法客户的身份,服务端代表软件服务商的身份。它们实现的功能分别如下。

1.1.1 角色功能

服务端实现的功能:

(1)建立客户信息数据库,专门用于记录合法用户信息。

(2)建立通过标签的形式将每个软件设置为受保护或无保护状态,这一功能也为实现弹性保护机制奠定基础。

(3)对于访问受保护软件的用户,将其用户信息及MAC地址信息提交给安全机模块,产生安全码。

安全机模块实现的功能:

根据服务端提供的用户信息及MAC地址信息采用RSA签名算法生成安全码并返回给服务端。

客户端实现的功能:

(1)从服务端下载软件,运行验证程序,判断该软件是否受保护。

(2)对于受保护的软件,客户端则需要向服务端提交用户信息及MAC地址信息,申请访问安全码。

(3)从服务端获取安全码,利用安全码通过验证程序运行受保护的软件。

1.1.2 角色交互流程

客户端(Client)、服务端(Server)和安全机模块(Safety)之间的交互如图1所示。

客户端在服务端下载受保护软件时,需要提交MAC地址,软件服务端将MAC地址存放数据库中,并使用安全机模块的软件对MAC地址进行RSA加密,将加密后的MAC地址采用点对点通信发给安全机模块,安全机模块用自己的软件对加密的MAC地址解密并采用RSA数字签名算法对MAC地址签名生成注册码,并将注册码和公钥提交给合作方软件服务端。

图1 角色交互图

1.2模型框架设计

为了实现弹性的保护软件机制。模型的操作步骤设计如下:

(1) 客户端从服务端下载软件,有两种标识的软件可供下载,下载标识为0的软件可直接打开;下载标识为1的软件,则需要向软件服务端提交MAC地址;

(2) 服务端收到客户端发来的MAC地址,判断该客户端是否是合法用户;如果是合法用户,将其MAC存放于数据库中,并用RSA加密算法对MAC地址加密,然后通过点对点通信方式将密文发送给安全机模块;

(3) 安全机模块收到服务端发来的密文后,对密文进行解密,还原MAC信息,然后用数字签名算法实现对该MAC签名并生成相应的安全码,再通过访问Web页面,将安全码提交到软件服务端,存放于数据库中;

(4) 用户到相应的Web页面,提交MAC,便可查询到相应的安全码和公钥信息;

(5) 安全码在客户端验证是否与MAC匹配,若匹配成功,客户将拥有软件的使用权。

图 2 框架设计流程

模型的框架设计流程如图2所示。

2 基于弹性保护机制的软件保护模型的实现

2.1客户端的实现

客户从服务端下载标识值为1(受保护)的软件,先下载客户端软件,获取客户端的MAC地址,主要通过C语言调用windows系统下system () 函数,获取本地的MAC地址,然后对其进行文件读写操作,存放于文件中。

图3 客户端功能

客户获取服务端发来的注册码I和公钥(Pk2,N2),打开下载的受保护软件,自动执行客户端软件程序,重新获取客户计算机的MAC输入注册码和公钥后,将自动生成注册码和公钥文件,并对注册码进行RSA验证,即M’=I^Pk2modN2如果验证结果与重新获取的MAC地址相匹配,将顺利打开软件。客户端的功能如图3所示,图中M’表示验证结果信息,M表示MAC地址信息。

在代码中,调用windows系统下system () 函数实现对MAC地址的获取,用CreateMAC()函数生成存储MAC地址的文件。当客户获取到软件服务端发来注册码和公钥后,重新获取MAC地址,并生成注册码和公钥文件。通过readregister()函数读取注册码信息并进行验证,如果验证成功,返回1,如果验证失败或无文件返回0。

2.2服务端的实现

服务端在实现对软件的管理方面,通过设置标签的方式将软件分为两种类型:受保护类型软件与非保护类型软件。对于受保护的软件将标签的标识值设为1,反之设置为0。当客户需要受保护软件时,需要先登录到软件服务端的官网。若该用户之前没有在该网站进行注册,则需要先注册。服务端对于注册的客户信息采用MD5加密的方法实现信息保护。

当客户端需要下载标识值为1的软件,首先获取客户端MAC地址并发送给软件服务端,服务端将获取的MAC地址存放在数据库中。考虑到服务端如果将MAC地址直接发给安全机模块,可能会受到攻击者的攻击,所以安全机模块为服务端设计了加密软件。该加密软件主要采用RSA加密算法[7-8],根据加密算法,用公钥(Pk1,N1)对MAC地址进行加密,在加密过程中,首先将字符型的MAC地址转为整型数据存放在数组中,再对数组采用RSA算法加密生成密文C,然后将生成的密文C通过点对点通信发给安全机模块。

当安全机模块向服务端提交注册码和公钥时,将获取到的注册码和公钥存放在数据库中。当客户的计算机中遗失了注册码和公钥时,将通过登录服务端,通过输入用户名和MAC地址查询到注册码和公钥信息。服务端的功能如图4所示。

图4 服务端功能图

2.3安全机模块的实现

安全机模块收到服务端发来的密文C后,将使用解密软件对其进行解密,解密的过程是加密的逆过程,安全机模块用私钥(Sk1,N1)对密文C解密获取MAC地址,然后用私钥(Sk2,N2)对MAC地址对其进行签名生成注册码。

图5 安全机模块功能

生成注册码之前,需要生成密钥对,即公钥及私钥。在代码中密钥对的生成有两种方式,一种是默认的公钥(Pk2,N2),私钥(Sk2,N2),另一种通过随机数发生器的初始化函数srand()函数,随机生成大数p,q,然后对p,q进行运算,计算出N2=p*q和t=(p-1)*(q-1),通过输入与t互质的数Pk2,计算出Sk2,从而得出公钥(Pk2,N2)和私钥(Sk2,N2)。对于t与Pk2互质的判断,通过碾转相除法判读t与Pk2,将。两种方式都将对公钥执行文件写操作,保存在文件中。在得出公钥和私钥后,我们需要对获取的MAC地址进行数字签名,由于我们获取的MAC地址是字符型的,需要通过对字符型的MAC地址进行转换,通过ASCII码表将所有的字符转为数字,并将其保存在pass[]数组中,对数字用私钥对其进行RSA数字签名生成注册码,根据RSA数字签名的算法的思想,I=M^Sk2(modN2),《》对数字用私钥对其进行RSA数字签名生成注册码,即I= password[i]Sk2(modN2),再对生成的注册码和公钥发给服务端。服务端主要功能图如图5所示。

2.4数据库的实现

论文数据库主要设计有两张表:Userinformation表和Sign表。前者的主要功能是实现客户认证。后者主要功能是为客户提供安全机模块生成的注册码和公钥。具体设计如下。

普通客户首先需要登录,在判断为合法用户后才能提交自己的MAC地址。这里我们需要设置一张Userinformation表。里面存放三个字段,分别为用户名、密码和MAC地址。当用户验证通过后,向该表填入MAC地址。此时,服务端的管理员可访问该表得到注册客户的MAC地址,并将MAC地址发送给安全机模块。安全机模块对MAC地址签名得到注册码和公钥,并将MAC注册码、公钥上传到注册表中。而客户则可通过输入自己的MAC地址查询注册表得到注册码和公钥。除此,安全机模块可对注册表进行修改、删除和查找的功能。客户端与服务端的数据交互如图6所示,客户端与安全机模块的数据交互如图7所示。

图6 客户端与服务端数据交互图

图7 客户端与安全机模块的数据交互图

3 实验结果分析

论文的实验测试环境为Win7版本以上的系统,测试中我们三台计算机分别代表了客户端、服务端、安全机模块。由于篇幅问题,这里显示部分实验结果。

(1)客户端下载软件,非合法用户在软件服务端的官网上提交MAC失败。如图8所示。

(2)若用户填写了错误的注册码,或者直接利用别人的注册码存放到自己的计算机中,会提示用户验证失败。如图9、10、11所示。

图8 没有验证无法打开软件图9 与自己的MAC匹配的注册码图10 与自己的MAC不匹配的注册码

(3)客户端下载软件,合法用户提交MAC成功。如图12所示。

图11客户打开软件失败

图12合法用户提交MAC成功

(4)软件服务端获取MAC地址,存放数据库,并对其进行RSA加密,发送给安全注册机。如图13、14所示。

安全性分析:

(1)服务端与安全机模块之间的通信使用公钥密码机制,使得攻击者在不知道私钥的情况下,无法对密文进行解密,也无法伪造签名。从而满足了信息传输的保密性、不可伪造性。

(2)当用户通过身份验证的流程后,使用用户信息及其所使用的主机的硬件机器码产生安全码。当用户试图在其它机器上使用该安全码运行软件,则验证程序显示硬件机器码有误。从而保证了软件在授权用户机器上安装后具有不可移植性。

图13 MAC地址加密

图14 软件服务端发送加密信息给安全注册机

4 结束语

论文通过用户身份认证、主机硬件验证、软件设置权限三种机制实现了对软件的弹性保护。模型实现了合法用户、软件服务商和安全机模块之间的安全通信,在不改变软件服务端任何结构情况下,采用标签方式增加了对软件的状态设置,从而为软件实现弹性保护机制提供可能。通信过程中通过密码技术及权限管理思想实现了软件服务商及用户双方的利益保护,同时解决了软件保护与权限管理两大问题。

[1] 张玉刚. 一种加密软件注册码的研究及实现[D].北京:北京邮电大学研究生院, 2009.

[2] 孙永清, 顾雨捷, 赵戈. 基于动态安全码的软件加密保护[J]. 计算机工程, 2007, 33(12):183-184.

[3] 庄春兴, 刘渊. 利用DES算法实现软件加密的方法[J]. 计算机与现代化, 2002(6):21-23.

[4] 周书锋, 孙玉真. 基于RSA数字签名的软件保护方案[J]. 计算机应用与软件, 2008, 25(3):35-37.

[5] 王红珍, 张根耀, 李竹林. 公钥密码体制RSA算法[J]. 信息技术, 2011(8):34-36.

[6] 莫翾晟, 林和, 蔡万景,等. 基于RSA算法与自修改机制的软件保护[C].中国可信计算与信息安全学术会议,2006.

[7] 何定华. 基于CPU序列号和加密技术的软件注册机[J]. 科技导报, 2012, 30(2):36-38.

[8] 季晓玉. 基于Rijndael对称加密的软件加密方法研究[J]. 计算机安全, 2011(2):53-55.

ASoftwareProtectionModelBasedonElasticProtectionMechanism

WANG Cai-mei1, LIU Wen-jie2

(1. Department of Computer Science and Technology, Hefei University, Hefei 230601;2. Sinovate Software Co., Ltd,University of Science and Technology of China ,Hefei 230088,China)

From the benefit of software service providers and users, a software protection model based on elastic protection mechanism is presented. On the one hand, the model enables the software service providers to protect the software, through a security module to provide the registration code for legitimate users. On the other hand, legitimate users can through digital signature technology to improve their interest.The model realizes the flexible protection of the software by three mechanisms: user identity authentication, verification of the host hardware, mechanism of permission setting for software. The elastic model is divided into four modules: the client software module, server module, security module, database module. The experimental results show that the model can solve the problem of software protection and authority management between service providers and users simultaneously.

flexible protection;security module;identity authentication;permission setting

2017-06-14

2017-09-10

安徽高校自然科学研究重点项目 (KJ2015A257),安徽省教育厅高校优青人才支持计划项目 (gxyq2017066),安徽省重点研究与开发计划面上科技攻关项目 (1704a0902034),安徽高校自然科学研究重点项目 (KJ2015A229) 资助。

汪彩梅(1978— ),女,安徽桐城人,合肥学院计算机科学与技术系讲师;研究方向:信息安全、可信计算、形式化验证。

TP309

A

2096-2371(2017)05-0084-05

[责任编辑:张永军]

猜你喜欢

服务端公钥客户端
如何看待传统媒体新闻客户端的“断舍离”?
一种基于混沌的公钥加密方案
神奇的公钥密码
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
P2X7 receptor antagonism in amyotrophic lateral sclerosis
SM2椭圆曲线公钥密码算法综述