一种软件在线授权系统的安全模型

时间:2022-09-02 08:39:35

一种软件在线授权系统的安全模型

摘要:传统的软件授权方式是通过内置的算法对输入的授权码进行计算校验,来完成软件的授权许可;此种方式容易通过反向工程跳过软件内部的授权部分破解。在基于SSL的安全授权系统模型中,提取软件本地的唯一标识符进行加密传输,在远程授权中心服务器完成软件的授权许可,可以提高软件许可的安全性,并可为后续的软件管理,维护及状态诊断所用。

关键词:TCP;SSL;MD5;DES;AES

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)22-6181-03

An Online Software Licensing System Security Model

XU Dong-xia1,2

(1.School of Computer & Information, Hefei University of Technology, Hefei 230009, China; 2.Anhui Communications Vocational & Technical College, Hefei 230051,China)

Abstract: Traditional software licensing is through the built-in algorithm to calculate the input check authorization number to complete the software license; such a way to easily skip through reverse engineering part of software licensing within the crack. SSL-based security authorization system model, the extraction software to encrypt the local unique identifier for transmission, the remote authorization center server to complete the software licensing, software licensing can improve security, and can follow-up of software for the management, maintenance and the state used in diagnosis.

Key words: TCP; SSL; MD5; DES; AES; BASE64

软件知识产权的保护至关重要,传统的软件授权方式,一般是依赖软件授权算法的加密强度来提高其破解门槛,这种方式需要通过对软件进行加壳技术进行保护,防止反向工程及暴力破解。随着网络的普及和发展,软件的在线授权系统逐渐兴起,此类系统主体结构一般如图1所示。

授权系统客户端和中心授权服务器之间的交互协议,以及整个授权系统的安全模型,是在线授权系统成败的关键所在。

1 系统概述

在线授权系统由中心服务器和客户端安全模块,以及辅助的序列号生成工具组成。如图2所示。

中心服务器主要负责序列号的导入、存储以及认证请求响应功能。其中,序列号的导入采用了web管理界面,配置Tomcat应用服务器提供JSP执行环境。用户在软件分发之前,首先采用序列号生成工具批量生成序列号,然后将序列号根据生产分发流程进行一对一导入。需要使用授权的软件,必须包含使用客户端安全模块,以保证协议传输的安全性;当中心授权服务器收到需授权软件发送的授权请求时,后台程序查询数据库得到该序列号的状态,并根据状态回应用户授权相关信息。

软件的分发及授权流程如下:

1) 使用注册码生成工具生成一定数量(例3000个)针对“软件A”的序列编码;

2) 登录中心授权服务器,导入序列号内容到数据库中;

3) 工厂印制序列号标签,制作光盘产品,贴标签,发行;或制作软件包,置于下载服务器供用户下载,并提供序列号获取方法;

4) 用户安装系统,按照提示,输入序列号,个人信息;

5) 安全模型承载序列号及必要的用户个人信息,提交到服务器进行认证;

6) 认证通过,绑定用户信息和序列号;失败,回应用户错误原因,提示重试。

3 中心授权系统设计

中心授权系统架构在基于Redhat 企业版4.4的Linux系统中,主要由两部分构成:版权认证后台服务程序,版权管理web服务程序。

版权认证后台服务程序在后台运行,其在服务器的7800端口上开启TCP服务,当一个授权客户端发起连接请求后,可以分析客户端发起的版权认证请求(软件序列号、PC-ID、区域信息、首次认证还是修改区域),并根据约定的算法进行解密操作,然后查询服务器的数据库中的软件序列号信息,进行判断是否已经注册,如果没有注册使用,则写入注册信息和时间信息,返回成功信息给PC客户端。

该程序采用后台运行模式,采用多线程模式框架,主线程服务框架流程,每个客户端连接,在后台开启新的工作线程进行工作,从而保证后台服务的效率高和快速响应。后台程序同时需要提供查询数据库中配置的区域信息表。

软件版权管理web程序,管理程序的页面使用需要用户名称、密码验证才能够使用,主要实现如下功能:

1) 导入序列号生成工具生成的序列号文件到软件版权管理服务器数据库中;

2) 查询序列号的总数,已经注册使用的序列号数目,搜索输入的序列号是否已经使用,能够查询剩余可用的序列号总数;

3) 配置区域信息和门户的对应表:多个区域可以对应同一个门户;能够添加、删除、修改、显示这个对应表的信息数据;

4) 显示版权认证后台程序工作的日志信息表内容;能够删除设定的时间内的日志信息;

4 安全模型和交互协议设计

授权系统的安全模型包括三部分:加解密算法,客户端SDK,基于SSL的传输协议。

加密和解密使用的算法有两部分,一个是对关键数据字符串使用md5变换,另一个是使用DES作为传输前的加密算法。

客户端SDK是作为算法实现的基础,在第5部分将详细描述其算法设计。

4.1 基于SSL的传输流程

基于SSL的传输协议,使用如下过程完成安全交互:

1) Client和Server互相交换器其SSL版本,算法配置等通信数据;

2) Server同时要发回自己的证书,如果Client正在请求需要认证的信息,Server惠请求获得其证书。

3) Client用Server发送的信息验证Server身份。成功则下行,否则终止连接。

4) Client产生一个会话密钥,将此密钥通过第二步中的公钥加密,传输给服务器。

7) Client和Server同时产生会话密钥,之后的传输都用DES来加密交互。

8) 进行授权协议交流。

4.2 基于SSL的授权交互协议

服务程序在网络socket 7800端口上侦听TCP连接,然后针对建立的TCP连接上进行数据交互,每次都是客户端发送数据到服务器,然后服务器回应结果,然后服务程序和客户端程序都可以主动断开连接。数据协议格式如下:

1) Client->Server,发送查询数据内容包含:软件序列号、注册用户名、UUID:

格式为:

SecClient##License:XXXX## UserName:XXXX## PC-ID:XXXXX ##SecClientEnd

2) Server->Client,注册成功返回:

SecClient##License:xxxxx##PC-ID:xxxxx##Result:ok##Message:ok##PortalIP:xxxxx##SecClientEnd

3) 注册失败返回:

SecClient##License:xxxxx##PC-ID:xxxxx##Result:forbidden##Message:XXXXXXXX##SecClientEnd

5 客户端安全模块设计

5.1 客户端算法设计

1) 硬件特征码的提取:通过读取BIOS信息,在得到的BIOS信息中提取主板中固化不变的UUID(全局唯一标识码)来唯一标识客户端主机。

2) 网络通信部分:采用SSL(Secure Sockets Layer),见第4部分描述。

3) 进程间的通信: 在注册程序中通过创建共享内存和一组数据结构来保存程序返回的信息。.so库的接口函数通过共享内存来和注册程序进行通信。来获得相应的信息。

5.2 客户端接口设计

客户端模块给应用程序预留如下接口:

1) void StartRegister(char * username , char * SN);

此函数接收待注册的用户名和软件SN号码。然后开启一个进程加载注册认证的程序来完成认证。

2) int GetRegisterStateInfo(char * info);

调用此函数,可以得到认证的状态和相关的信息:

返回 0 注册程序正常退出;info :指向服务器返回信息的指针。

返回 1 当前注册程序执行的状态;info:指向当前流程状态的指针。

返回 2 当前程序的错误信息;info :指向错误信息的指针。

调用此函数,应用程序可以通过判断返回类型,来做相应的处理,如显示故障信息和进度信息。

3) int StopRegister();

结束注册流程。返回0 失败;返回 1 成功。

5.3 客户端调用流程

客户端模块在软件中的作用及调用流程(以Linux系统为例),见图4。

6 结论

在线授权系统通过SSL保证双方通信的信息经过加密算法加密,并通过数字签名技术确认双方身份,不仅保证了信息传输的安全性,而且确认信息不会遭到恶意攻击和伪造,项目实践证明,该系统作为软件分发管理,授权维护,安全高效,可以作为普适的软件授权管理平台使用。

参考文献:

[1] 王志海,童新海,沈寒辉.OpenSSL与网络信息安全――基础、结构和指令[M].北京:清华大学出版社,2007.

[2] 郑东,李祥学,黄征.密码学――密码算法与协议[M].北京:电子工业出版社,2009.

[3] (美)史蒂文斯.UNIX网络编程:套接字联网API[M].卷1.3版.北京:人民邮电出版社,2010.

[4] (美)史蒂文斯,(美)拉戈. UNIX环境高级编程[M].2版.北京:人民邮电出版社,2006.

上一篇:图像识别的技术现状和发展趋势 下一篇:轮胎定型硫化机的三维模型设计