APP下载

基于硬件特征信息嵌入认证的软件保护

2012-07-25李志伟

计算机工程与设计 2012年7期
关键词:计算机硬件加密计算机

李志伟

(空军第一航空学院 航空军械工程系,河南 信阳464000)

0 引 言

计算机软件产品作为软件设计者技术与智慧的结晶,知识产权的保护一直受到人们的高度重视。从技术层面来讲,软件保护的方法很多,既有软件方法,也有硬件方法[1],然而不管是采用哪种方法,都是通过一定的技术手段实现对软件用户合法身份的认证,防止软件被盗用,确保软件开发者和合法用户的正当权益,推动软件产业的健康发展。

为了进一步探讨软件保护更加合理、有效的方法,在对当前常用软件保护方法研究分析的基础上,从简便、实用的角度出发,提出了一种基于硬件特征信息嵌入认证的软件保护方法,并通过具体的程序实例验证了软件认证的实现过程。

1 常用的软件保护方法

通常情况下,软件保护的方法主要有三大类,一是不依赖任何硬件的软加密保护方法,二是采用硬件设备实施的硬加密保护方法,三是采用软件与硬件相结合的加密保护方法。

1.1 软加密保护方法

软加密保护方法的基本原理是,通过在软件中插入加密模块来保证软件不被非法使用。

常用的软加密保护方法有:密码表法、软件自校验法、钥匙盘法、序列号法[2]等。前两种方法对软件的保护强度相对较弱,主要用于早期的软件加密保护;后两种方法由于不能限制软件在多台计算机上安装,近年来其应用范围也受到了一定的限制。

该方法的优点是采用纯软件方法,不依靠任何特殊硬件设备的支持,因此加密成本较低,灵活性较强,易于移植,易于使用,易于升级[3]。缺点是加密处理需要额外占用计算机系统资源,加大了系统开销,易降低软件运行速度,此外,加密软件本身存在的安全漏洞 (如密钥驻留内存),也可能对某些敏感数据的安全性造成威胁。

1.2 硬加密保护方法

硬加密保护方法的基本原理是,利用计算机硬件或某些信息存储模块来实施对软件系统的加密保护。

常用的硬加密保护方法主要有3种:一是将加密信息固化到加密模块上,如软件狗、USB钥匙盘等,软件在每次启动时,先检测硬件上的相应信息,如果检测通过,则启动软件系统,否则终止软件运行。二是对于某些需要通信连接的软件,可以在通信链路上使用专用的加密盒进行加密[4]。三是采用计算机接口卡,将软件的核心代码或主要模块通过加密处理写入到存储芯片中,并将其固化到该卡上,在计算机硬盘上只存放软件的引导部分。

该方法的主要优点是加解密处理对计算机系统资源的占有率较低,几乎不影响软件运行速度;硬件加密设备可以安全地封装起来,能够有效地防止各种跟踪、攻击工具对软件的破译,提高软件的安全性。缺点是增加了软件开发的额外成本,且对用户的使用造成了某些不便。

1.3 软硬件结合加密保护方法

软硬件结合加密保护方法很多,目前,比较常用的是动态注册码法[5]。

该方法的基本原理是,利用用户计算机硬件系统本身的一些特征信息,如CPU ID、声卡ID、BIOS信息、网卡的MAC地址、硬盘序列号等 (这些信息也被称为计算机指纹),通过身份认证实现对软件的加密保护。

其设计思路是,在软件安装完成后,由软件本身动态采集用户计算机系统的特征信息,然后通过某种加密算法进行处理,产生一组用户代码信息,用户可以通过约定的通讯方式与开发者建立联系,由软件开发者对用户的身份进行确认,并根据用户提供的计算机特征信息代码产生一组与之对应的软件注册码并提供给用户,用户采用该注册码对软件进行注册,获得使用许可。

通过这种方法获得的用户注册码,由于是根据计算机的硬件特征信息 (具有绝对唯一性)动态生成的,因此可以确保软件只在一台计算机上使用[6],对保护软件的合法权益具有重要意义。然而,由于身份认证是通过软件注册完成的,这便给软件的安全带来了很大的漏洞。一旦软件注册机被破译,或者软件被更改而跳过注册,则软件便得不到保护。为了克服上述缺点,下面提出了一种将计算机硬件特征信息嵌入到程序内部,通过身份认证实现对软件高强度保护的具体方法。

2 硬件特征信息嵌入认证软件保护

2.1 设计原理

基于计算机硬件特征信息嵌入认证的软件保护方法,其设计原理仍然是利用用户计算机系统硬件的特征信息[7],但与动态注册码方法的最大区别是,在程序设计时即把与这些特征信息有关的一些检测、处理等直接写入到程序内部,以此省去用户在使用软件时的注册环节,消除软件注册接口漏洞,降低软件被破译的可能性,从而最大限度地保护软件的知识产权。

由此可见,该方法设计的关键是,用户计算机硬件特征信息的采集和嵌入。

2.2 用户计算机硬件特征信息采集

用户计算机硬件特征信息采集通常由用户自己完成,用户利用开发者提供的信息采集软件,在需要安装的计算机上运行后便可检测、产生出特征信息密码文件。采集流程如图1所示。

图1 用户计算机硬件特征信息采集

为了使软件在应用过程中既能方便用户,又能保护软件开发者的利益,硬件特征信息采集软件设计时需要注意如下几个方面的问题:

(1)信息采集应尽量考虑一些固定不变的信息,避免采用虽然唯一,但是有可能变化的一些信息,如网络IP地址 (与网络连接位置或用户设置有关)、硬盘的逻辑序列号(每次格式化后产生的号都不一样)等。

(2)尽量避免对软件运行时不需要支持的硬件设备特征信息进行采集,例如,软件运行时不需要网络连接,则可以不把网卡的MAC地址作为必测信息,以免由于软件身份认证给本来合法的用户造成不便。

(3)为了安全起见,检测到的计算机特征信息通常需要进行加密处理 (加密算法可采用安全性较好的通用算法或开发者自行设计的算法),使得用户看到的只是一组普通的字符序列或密码文件,解密程序由开发者自行研制、自行保管。

(4)加密、解密算法必须安全、合理,并确保对密文解密后能够正确还原。

2.3 硬件特征信息的嵌入

为了减少开发者的工作量,软件可以设计成通用形式以适应所有许可用户,具体方法是在软件中插入一个特征信息表,存放经过许可认证的用户计算机特征信息。

当开发人员收到用户提供的计算机特征信息密码文件后,首先进行解密,还原出用户计算机硬件的原始特征信息,并将其插入到软件中已有的特征信息表中,以便软件在运行时进行信息比对,实现身份认证。信息嵌入流程如图2所示。

图2 硬件特征信息的嵌入

说明:①在设计硬件特征信息表时,同一台计算机的各个特征参数可以相互绑定,以提高软件身份认证的强度。②可以通过一些散列算法对每组特征参数分散存储,以提高破译者对软件跟踪、攻击的难度。

3 实验与分析

3.1 特征信息采集程序设计

对于计算机硬件特征信息的采集,在进行程序设计时需要考虑对计算机资源和操作系统底层服务的操作,最直接的方法是利用汇编语言进行程序设计。然而在Windows 95以后的32位操作系统中,都提供了丰富的Win32应用程序编程接口 (application programming interface,API)函数,可以执行Windows提供的所有服务。根据不同的功能类别,这些函数分别封装在不同的动态链接库中,因此,对于硬件特征信息的采集,也可以通过高级语言调用相应动态链接库中API函数的方法来实现,该方法简捷方便,适用于目前流行的大多数高级语言。以声卡的信息采集为例,在用Visual Basic进行程序设计时,首先要通过Declare语句声明调用指定的动态链接库,然后便可直接在程序中调用其中的API函数[8-9]。下面程序说明了声卡相关信息的采集过程,采集结果存放在数组SoundInfo中。

Private Declare Function waveOutGetNumDevs Lib"Winmm.dll"()As Long

Private Declare Function waveOutGetDevCaps Lib"Winmm.dll"Alias"waveOutGetDevCapsA"(ByVal uDeviceID As Long,lpCaps As Waveoutcaps,ByVal uSize As Long)As Long

Private Type Waveoutcaps

Wmid As Integer

Wpid As Integer

Vdriverversion As Long

Szpname As String*32

Wchannels As Integer

End Type

Private Sub CollectInfo()

Dim Consequencd As Long

Dim Returncaps As Waveoutcaps

Dim Pname As String

Dim Channel As String*2

Dim SoundInfo (3)

Consequence=waveOutGetDevCaps (0,Returncaps,Len (Returncaps))

If Consequencd=0Then

Pname=LeftMYM (Returncaps.Szpname,InStr(Returncaps.Szpname,ChrMYM (0))-1)

Channel=StrMYM (Returncaps.Wchannels)

SoundInfo(1)="产品名称:"&Pname

SoundInfo (2)="产品Id:"&Returncaps.Wpid

SoundInfo (3)="驱 动 程 序Id:" & Returncaps.Wmid

End If

End Sub

3.2 软件保护程序设计

基于计算机硬件特征信息嵌入认证的软件保护方法,是在进行程序设计时即把认证程序嵌入到系统中,在系统运行过程中自动完成身份认证。

当软件运行时,首先采集当前计算机的硬件特征信息,然后将其与软件中内嵌的特征信息表中的信息进行比对,检查是否匹配,如果匹配成功,则通过计算机身份认证,继续运行程序,否则即可判断该计算机为未被授权用户,终止程序运行。软件认证保护设计流程如图3所示。

图3 软件认证保护设计流程

说明:程序设计时,可在多个关键模块设置身份认证,以进一步提高软件保护强度。

3.3 实验结论

从上述应用设计可以看出,基于硬件设备特征信息嵌入认证的软件保护技术,不但利用了Windows操作系统的底层服务功能,而且利用了软件的加密、解密算法,从而使软件保护更加有效。经过近年来的多个软件系统应用验证,该方法具有如下几个方面的特点:

(1)由于计算机硬件特征信息嵌入到了程序内部,身份认证是在程序运行过程中自动完成的,没有经过其它通信接口,因此被跟踪、破译的可能性较小,软件保护强度较高。

(2)由于将用户计算机硬件特征信息与应用软件进行了绑定,提交给用户的最终软件只有在经过认证的计算机上才能运行,因此即使软件被完整地移植到了未经许可的其它计算机上,也将因无法完成身份认证而不能执行,最大限度地保护了开发者的知识产权。

(3)软件加密、解密算法的应用使得用户计算机硬件特征信息只对开发者是透明的,软件保护更为有效。

3.4 安全性分析

软件保护的安全性涉及到许多方面,包括反调试、反跟踪、反静态分析等[10]。

就上述软件保护方法而言,其安全性主要取决于3个方面:一是特征信息提取设计,二是特征信息认证设计,三是加密、解密算法设计。其中最有可能出现安全漏洞的环节是用户提取的特征信息密码文件被破译。然而在程序设计时,由于这些特征信息已经被嵌入到了程序内部,因此,即使这些特征信息被破译,也无太大的实际意义,对于提交给用户的最终软件来说,其安全性仍无任何影响。

另外,在特征信息嵌入、认证过程中采用了一些加密、解密算法,就安全性而言,目前业界公认且常用的算法主要有DES、AES、MD5[11-12]等,设计时可以采用其中任意一种或其它安全性较好的算法,当然,开发者也可以根据情况自己设计一种算法[13]。由于该算法只掌握在开发者自己手里,因此只要设计合理,则同样具有很高的安全性。

4 结束语

基于硬件设备特征信息嵌入认证的软件保护,设计方法简单,成本低,通用性强,保护强度高,既不需要加密锁等额外硬件开销,也不需要钥匙盘或口令等复杂操作,极大地方便了用户。

该软件保护方法既适用于单机版软件,也适用于网络版软件,尤其是行业或部门统一配发的软件系统。当然,对于网络版软件,既可以利用计算机硬件特征信息配合网络特征信息[14-15]实施软件保护,也可以根据应用的具体特点,单独利用网络特征信息实施软件保护,因此软件工程实践中,该软件保护方法还具有更强的扩展应用能力。

[1]HU Wei,MU Dejun,LIU Hang,et al.Design and implementation of hardware-encrypted mobile hard disk drive [J].Computer Engineering and Applications,2010,46 (22):62-64 (in Chinese).[胡伟,慕德俊,刘航,等.移动硬盘硬件加密的设计与实现 [J].计算机工程与应用,2010,46 (22):62-64.]

[2]LIU Xuehui,WANG Guoliang,FENG Liping.Software encryption based on disk serial number [J].Radio Engineering,2007,37 (6):6-7 (in Chinese).[刘学辉,王国良,冯丽萍.基于磁盘序列号实现软件加密 [J].无线电工程,2007,37(6):6-7.]

[3]LIU Wei,HU Ping.File encryption system design based on file system filter driver [J].Microelectronic and Computer,2009,26 (4):114-117 (in Chinese). [刘伟,胡平.基于文件系统过滤驱动的文件加密系统设计 [J].微电子学与计算机,2009,26 (4):114-117.]

[4]HU Xiangdong,WEI Qinfang.Applied cryptography [M].Beijing:Publishing House of Electronics Industry,2011 (in Chinese).[胡向东,魏琴芳.应用密码学 [M].北京:电子工业出版社,2011.]

[5]SUN Yongqing,GU Yujie,ZHAO Ge.Software encryption and protection based on dynamic register code [J].Computer Engineering,2007,33 (12):183-184 (in Chinese). [孙永清,顾雨捷,赵戈.基于动态注册码的软件加密保护 [J].计算机工程,2007,33 (12):183-184.]

[6]XU Xu,PAN Zhigang.Solution to creating software activation serial number based on “current hardware ID for current machine”[J].Journal of Zhejiang University of Science and Technology,2010,22 (4):273-277 (in Chinese). [许旭,潘志刚.一种基于 “一机一码”的软件激活序列号生成方案 [J].浙江科技学院学报,2010,22 (4):273-277.]

[7]SONG Guangjie,ZHANG Minghui,LI Jingjiao.Research of embedded network communications based on hardware encryption [J].Application of Electronic Technique,2010,36 (1):148-150(in Chinese).[宋光杰,张明慧,李晶皎.基于硬件加密的嵌入式网络通信的研究 [J].电子技术应用,2010,36(1):148-150.]

[8]LI Zhiwei.Study on class based software reuse technology in VB environment [J].Computer Engineering and Design,2010,31 (5):1152-1155 (in Chinese). [李志伟.VB环境下基于类的软件复用技术研究 [J].计算机工程与设计,2010,31 (5):1152-1155.]

[9]LI Zhiwei.The transplant of database system applications based on ODBC [J].Computer Engineering and Design,2009,30(12):2985-2988 (in Chinese).[李志伟.基于 ODBC的数据库系统应用程序的移植 [J].计算机工程与设计,2009,30(12):2985-2988.]

[10]LEI Jin’e,TIAN Wei,LI Peiwu.Architecture research and design based on FPGA for software protection [J].Computer Engineering and Design,2009,30 (7):1580-1582 (in Chinese).[雷金娥,田伟,李沛武.基于FPGA的软件保护体系结构研究与设计 [J].计算机工程与设计,2009,30(7):1580-1582.]

[11]LE Deguang,CHANG Jinyi,LIU Xiangnan,et al.Implementation of MD5fast decryption algorithm based on graphic processing unit[J].Computer Engineering,2010,36 (11):154-158(in Chinese).[乐德广,常晋义,刘祥南,等.基于GPU的MD5高速解密算法的实现 [J].计算机工程,2010,36 (11):154-158.]

[12]QIAN Min,CHEN Xiangning.Enhanced recognition of USB token [J].Computer Engineering,2007,33 (5):138-139(in Chinese).[钱敏,陈相宁.USB身份锁的强化识别 [J].计算机工程,2007,33 (5):138-139.]

[13]YU Huifang,WANG Caifen,WANG Zhicang,et al.Certificateless multi-proxy signcryption scheme [J].Computer Engineering and Design,2010,31 (5):973-975 (in Chinese).[俞惠芳,王彩芬,王之仓,等.无证书的多代理签密方案[J].计算机工程与设计,2010,31 (5):973-975.]

[14]LIU Guoliang,ZHANG Zhibin,XU Dixin,et al.Analysis and realization of software serial number online validation based on SSL [J].Computer Applications and Software,2010,27(1):280-282 (in Chinese).[刘国良,张智斌,徐迪新,等.基于SSL的软件序列号网上验证分析与实现 [J].计算机应用与软件,2010,27 (1):280-282.]

[15]GAO Guozhu,WU Haiyan.Design and applying of web application security detecting system [J].Computer Engineering and Design,2010,31 (17):3760-3762 (in Chinese). [高国柱,吴海燕.Web应用安全监测系统设计与应用 [J].计算机工程与设计,2010,31 (17):3760-3762.]

猜你喜欢

计算机硬件加密计算机
一种新型离散忆阻混沌系统及其图像加密应用
计算机操作系统
基于Unity的计算机硬件组装仿真教学系统设计
基于计算机自然语言处理的机器翻译技术应用与简介
计算机多媒体技术应用初探
一种基于熵的混沌加密小波变换水印算法
计算机硬件设备驱动程序分析
中职计算机硬件课程教学策略探讨
信息系统审计中计算机审计的应用
加密与解密