中
国是个盗版软件横行泛滥的国度,也许这里面有我们社会主义初级阶段这个国情的因素,我们确实离不开盗版软件。但要发展壮大本国的软件产业,知识产权保护亟
需重视起来。除了寄希望于大环境方面的改善,我们自己也可以做些力所能及的事情,保护好自己的软件产品,以免自己的辛勤劳动成果被他人轻松窃取。
通常可以通过
license
机制来保护软件产品的安全,我们可以限定只有购买了
license
的用户在特定的机器上使用我们的软件。
我设想的
license
机制有以下的主要功能点:
Ø
应用程序可以创建以及验证绑定给用户、系统等实体的
license
。
Ø
防止用户随意拷贝软件和
license
。
Ø
licenses
可以是永久性的或者临时性的(在某个特定时期内有效)
Ø
licenses
的验证由
JAVA Security API
提供的数字签名机制来实现。
Ø
license
安装模块需要用特殊机制对其进行保护,以防被反编译轻易破解。
|
1
、
定义
license
的文件格式
License
文件采用普通
java properties
文件的定义格式。
文件中定义了产品、版本、
Mac
地址、
license
类型、
license
有效期等信息。如下所示:
Product.name=cpu
Product.version=3.2
License.type=Commercial
License.expiry=2010-05-12
Server.macaddress=00-1B-77-2C-9D-8F
signature=302d0215008b4ef2390e11d28f5ea7b86f71ba5168bfeaa6b402146c77706b985be68cc515
c6079b31ad50e3f17552
|
其中最下面一串数据为根据上面几项基本信息签名产生的注册号。
2
、
创建以及验证
license
以下是部分实现代码
(
篇幅问题,只好只粘方法说明
)
:
/**
生成公钥、私钥对。公钥公开,注意保管好私钥(如果泄露,则有可能被
hacker
随意创建
license
)
*/
public
static
void
generateKey()
throws
Exception;
/**
用私钥对
license
进行数据签名
*/
public
static
synchronized
void
sign(License license)
throws
Exception ;
/**
*
验证
license
是否合法。
*
首先验证
Mac
地址是否有改变,有的话则非法。(防止用户自由拷贝软件)。
*
然后根据公钥验证签名是否合法。
*/
boolean
validate(License license)
throws
Exception ;
|
然后通过以下三步可以完成整个
license
的创建以及验证:
//
第一步:生成公钥、私钥对。公钥公开,注意保管好私钥(如果泄露,则有可能被随意创建
license
)。
LicenseFactory.generateKey
();
//
第二步:根据产品、版本、
Mac
地址、有效期等信息,签名产生注册号,并将该注册号复制到
license
中。
License license = License.fromConfigFile
(
"cpu.license"
);
LicenseFactory.sign
(license);
FileHelper.writeFile
(
new
File(LicenseFactory.
LICENSE_DIR
+
"/cpu.license"
), license.toString());
//
第三步:利用公钥对
license
进行合法性验证。可以在软件代码的重要模块中加入下面的验证,比如登录模块
LicenseManager.getInstance
().
validate (license);
|
3
、
加强
license
机制实现模块的安全性
基于
Java
软件产品一般都是由编译文件
.class
组成的发布包,源代码很容易被诸如
JAD
之类的工具反编译出来,据此
hacker
们可以很轻松的重新实现部分代码来跳过
license
验证。
签于此,我们可以在编译或者类装载环节下些功夫,尽量增加被破解的难度。目前有多种工具可以帮助我们在编译
JAVA
文件的时候进行混淆,使得反编译出来的代码可读性很差,难以理解。至于类装载环节,可以对编译生成的
class
文件进行加密,然后通过自己定制的类装载器
classLoader
来装载。但这样的实现也并非无懈可击,类装载器本身也是
Java
文件,破解了类装载器也就破解了解密的过程,
hacker
还是能够反编译出源代码。所以说,这些做法只是尽可能的增加被破解难度,还是无法真正杜绝被破解。
另外
Mac
地址部分的实现也存在漏洞,据说现在有不少软件可以修改
Windows
、
Unix
下的机器的
Mac
地址(也许不是真正的修改,只是干扰我们调用
ipconfig /all
或者
ifconfig
等命令读取
Mac
地址的时候,读取的是这些软件设定的
Mac
地址)。对这方面还不是很了解。
以上是我的一些实现思路和方法,权当抛砖引玉,欢迎大家拍转。
个人邮箱
:
lovejava@163.com
。
分享到:
相关推荐
基于软件证书授权的一套自定义实现方案,解决对软件使用权限,使用有效期等的灵活配置
VNC(Virtual Network Computing,虚拟网络计算)最早是一套由英国剑桥大学AT&T实验室在2002年开发的轻量型的远程控制计算机软件,其采用了 GPL 授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:...
1.概述Permission Base(授权基础,以下简称PB)是一个基于.NET 2.0平台开发的开源项目,使用的协议为:Apache License Version 2.0。 PB是一套适用于一般中小型B/S企业应用系统的“权限控制基础结构”。PB的定位并...
arcgis9.3授权破解文件license,使用权限到2035年,可用
C#程序,实现license分发管理。通过读取客户端机器信息Mac地址,ip地址等等,发给服务器端,然后服务器端进行加加密,之后传信息给客户端,然后客户端进行解密,看解密后的信息是否与原始信息一致,从而判断是否具有...
1.把 GreenApple.exe 2.在 WIN7,WIN10 第一次运行本软件,请以管理员权限运行 3.程序第一次以管理员权限运行后,会自动加入开机自动运
概述Permission Base(授权基础,以下简称PB)是一个基于.NET 2.0平台开发的开源项目,使用的协议为:Apache License Version 2.0。 PB是一套适用于一般中小型B/S企业应用系统的“权限控制基础结构”。PB的定位并...
KIS8.0最新授权文件,最长有效期2010年4月 -------------------- 昨天挂上去 今天被黑了 本来想删除 但没有权限 大家别下了!
安卓系统root,re权限管理器打包下载
轻量级Android动态权限管理库,在Android 6.0及以上系统涉及到敏感权限,需要用户授权才能进行相关操作,如:存储、拍照等权限;否则APP直接崩溃。引用:implementation '...
3.在安全性方面,Radmin支持Windows NT/2000用户级安全特性,您可以将远程控制的权限授予特定的用户或者用户组,Radmin将以加密的模式工作,所有的数据(包括屏幕影像、鼠标和键盘的移动)都使用128位强加密算法加密;...
另外,本系统使用 [MIT](http://opensource.org/licenses/mit-license.php) 协议进行授权。 基础环境 * nginx/apache * php(版本:5.3+;扩展:mysql,curl,gd) * mysql 安装说明 * 导入`sql/init.sql`到数据库 * 修改...
BSD 3-Clause License 三、作者 spunkmars(spunkmars#gmail.com) 四、项目目录结构 src/ ├── appxs # 子应用目录 │ ├── account # 账户、权限子应用 │ │ ├── fixtures # 测试数据集 │ │ ├──...
VNC(Virtual Network Computing,虚拟网络计算)最早是一套由英国剑桥大学ATT实验室在2002年开发的轻量型的远程控制计算机软件,其采用了 GPL 授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:VNC...
JAVA/HTML/CSS/JS/THYMELEAF功能:主要用于分离周边系统用户登录以及注册模块,对用户公用权限进行授权(公用权限用于所有周边系统)优点:与各应用端解耦合,实现单点登录,便于用户维护缺点:需独立部署,某些情况下...
然之协同系统是一款面向中小企业的协同办公系统,它包括了客户管理、销售跟踪、日常办公等功能。...2.0版本重新梳理了默认的权限设置,修复bug,完善细节,并把授权协议切换到了Z PUBLIC LICENSE V1.1。
2、将授权文件(license-ppt.cer)上传到程序“data”目录里,并设置允许修改读写权限(0777)。 3、浏览器打开“http://您的网址/install/”进行安装。 4、安装完毕,打开“http://您的网址/admin.php”登陆...
己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算软件平台,组建了 google 主导的拥有众多产业界巨头的产业联盟,有利于 高效开发、降低成本。 � 由于是源...
可以通过暂停其许可证来撤消用户访问权限。 :warning: 这个示例应用程序不是100%可以投入生产的,但是应该可以让您90%地完成生产。 您可能需要添加其他日志记录,错误处理和崩溃报告,通过电子邮件提供新签出的...