CN101783801A - 一种基于网络的软件保护方法、客户端及服务器 - Google Patents
一种基于网络的软件保护方法、客户端及服务器 Download PDFInfo
- Publication number
- CN101783801A CN101783801A CN201010104857A CN201010104857A CN101783801A CN 101783801 A CN101783801 A CN 101783801A CN 201010104857 A CN201010104857 A CN 201010104857A CN 201010104857 A CN201010104857 A CN 201010104857A CN 101783801 A CN101783801 A CN 101783801A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- program
- software
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012795 verification Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005336 cracking Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 108091029480 NONCODE Proteins 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于网络的软件保护方法、客户端及服务器,提高对客户端软件是否被篡改进行检测的准确性与有效性。方法包括:服务器端接收客户端发送的程序运行请求,并根据该程序运行请求向客户端发送随机数据;客户端采用设定的Hash算法根据客户端标识、随机数据以及客户端存储的待运行软件版本信息对应的程序代码段确定出第一Hash值;服务器端采用设定的Hash算法根据客户端标识、随机数据以及服务器端存储的待运行软件版本信息对应的程序代码段确定出第二Hash值,将第一Hash值与第二Hash值进行比较,根据比较结果确定是否允许客户端执行程序。本发明技术方案提高了对客户端软件是否被篡改进行检测的准确性与有效性。
Description
技术领域
本发明涉及计算机网络领域,尤其涉及一种基于网络的软件保护方法、客户端及服务器。
背景技术
目前,网络上的软件被其他人或者某些机构非法篡改的现象越来越普遍,所谓的篡改是指将软件原有的执行序列进行修改、将程序的某些保护功能裁剪掉或者将带有商业应用的功能去除(如通过反汇编技术将程序的授权功能去除,使得破解者不需要购买软件序列号即正常使用软件功能);或者,使用其他手段屏蔽掉对用户无用的一些功能,但这些功能恰恰是商业公司为了盈利而推出的软件功能(如将免费闭源商业软件的广告功能去除)。
为防止可执行程序被逆向后窜改,现有技术采取了多种多样软件保护方法;所谓的软件保护主要为防止他人在非授权的情况下破解程序,从而修改程序运行流程以及分析软件内部实现过程的一种方法。目前软件保护的方法主要分为两大类,一类是纯软件保护方法,另一类是软件与硬件相结合的保护方法,其中,纯软件保护方法是利用软件的特定算法以及实现机制对受保护对象(受保护对象可包括软件、软件的关键执行码)进行保护,纯软件保护方法通常包括以下几种通过加入花指令以及跳转流程来增加反汇编难度、对软件加壳、对软件特定执行代码进行加密处理以及使用虚拟机技术对软件进行保护等;软件与硬件结合的保护方法主要为将关键保护信息写入加密装置(如硬件设备),软件运行时与加密装置进行交互,最终完成软件合法性的校验。上述软件保护方法中纯软件保护方法相对于软件与硬件相结合的保护方法而言,破解难度小,但实施简单、软件成本较低;而采用软件与硬件相结合的保护方法,由于每个软件在分发时都需要配套硬件设备,从而增加了软件成本,同时增加了用户使用门槛。
现有技术中,对客户端的软件是否被篡改进行检测所采用的方式主要是基于客户端在不同的时间段对相同的软件程序代码进行判断,若两个时间段得到的值不一致则判断客户端软件被篡改,若相同则判断软件没有被篡改。采用该种方式虽然可以在一定程度上对客户端软件是否被篡改进行检测;但是,采用该种方式的缺陷在于,若采用非代码段(如对比程序数据段的方法),程序执行指令被修改后,确定出的Hash值是不变的,故无法检测出软件被篡改,另外,如果程序预先已经被篡改,仅依靠程序运行前后来检测软件是否被篡改,而不是通过服务器上存储的软件程序代码段确定的Hash值对比,也无法检测出软件是否篡改,因此,对于该种情况,仍然存在对客户端软件是否被篡改进行检测的准确性不高以及有效性较低的问题。
发明内容
本发明实施例提供一种基于网络的软件保护方法、客户端及服务器,以提高对客户端软件是否被篡改进行检测的准确性与有效性。
一种基于网络的软件保护方法,包括:
服务器端接收客户端发送的程序运行请求,所述程序运行请求携带有客户端标识以及待运行软件版本信息;
服务器端根据所述客户端标识与待运行版本信息,向所述客户端发送随机数据;
客户端采用设定的Hash算法,根据客户端标识、所述随机数据以及客户端存储的所述待运行版本信息对应的程序代码段确定出第一Hash值,并将该第一Hash值发送至所述服务器端;
服务器端采用所述设定的Hash算法,根据所述客户端标识、随机数据以及服务器端存储的所述待运行版本信息对应的程序代码段确定出第二Hash值;
服务器端将所述第一Hash值与第二Hash值进行比较,并根据比较结果确定是否允许所述客户端执行程序。
一种客户端,包括第一收发模块、第一确定模块以及执行模块,其中:
第一收发模块,用于向所述服务器端发送携带有客户端标识以及待运行软件版本信息的程序运行请求、第一Hash值;用于接收服务器端发送的随机数据,以及,用于接收服务器端下发的允许执行程序的通知消息或禁止执行程序的通知消息;
第一确定模块,用于采用设定的Hash算法根据客户端标识、所述随机数据以及客户端存储的待运行软件版本信息对应的程序代码段确定出第一Hash值,并将所述第一Hash值发送至所述第一收发模块;
执行模块,用于根据所述收发模块接收到的允许执行程序的通知消息执行所述待运行软件对应的程序代码段;或者,根据所述收发模块接收到的禁止执行程序的通知消息不执行程序。
一种服务器,包括第二收发模块、第二确定模块以及验证模块,其中:
第二收发模块,用于接收客户端发送的程序运行请求和第一Hash值;以及,用于将随机数与允许执行程序的通知消息发送至所述客户端;
第二确定模块,用于采用所述设定的Hash算法根据所述客户端标识、随机数据以及服务器端存储的待运行软件版本信息对应的程序代码段确定出第二Hash值;
验证模块,用于根据所述第二收发模块接收到的程序运行请求中的客户端标识与待运行版本信息,确定是否向所述客户端发送随机数据;以及,比较所述第一Hash值与第二Hash值,根据比较结果确定是否允许客户端执行程序。
采用本发明技术方案,由于将客户端软件对应的程序代码段存储在服务器端,在验证客户端的应用程序代码端是否被篡改时,客户端根据客户端标识、服务器下发的随机数以及客户端存储的待运行软件版本信息对应的应用程序生成第一Hash值,服务器端根据客户端标识、下发给客户端的随机数以及服务器端存储的待运行软件版本信息对应的程序代码段生成第二Hash值;服务器端根据所述第一Hash值与第二Hash值是否相等来确定客户端的程序代码段是否被篡改;由于一般情况下,服务器端的程序代码段不容易被篡改,因此,通过服务器端存储的程序代码段来判断客户端程序代码段是否被篡改的检测方式更准确,提高了对客户端软件是否被篡改进行检测的有效性。
附图说明
图1为本发明实施例中对软件进行保护的流程图;
图2为本发明实施例中对软件进行保护的信令交互流程图;
图3为本发明实施例中对软件进行保护的系统结构示意图。
具体实施方式
为解决现有技术存在的上述问题,本发明实施例提供一种基于网络的软件保护方法,该方法主要包括:在客户端与服务器端分别存储各软件对应的程序代码段;当需要对客户端软件是否被篡改进行检测时,客户端向服务器端发送下带有客户端标识以及待运行软件版本信息的程序运行请求;服务器端根据客户端发送的客户端标识与待运行版本信息,向所述客户端发送随机数据;客户端采用设定的Hash算法根据客户端标识、服务器端下发的随机数据以及客户端本地存储的待运行版本信息对应的程序代码段确定出第一Hash值,并将该第一Hash值发送至服务器端;服务器端采用所述设定的Hash算法,根据所述客户端标识、随机数据以及服务器端本地存储的待运行版本信息对应的程序代码段确定出第二Hash值,将第一Hash值与第二Hash值进行比较,根据比较结果确定是否允许客户端执行程序(如,第一Hash值与第二Hash值相等时,确定允许客户端执行程序,并向客户端发送允许执行程序的通知消息;第一Hash值与第二Hash值不相等时,确定禁止客户端执行程序,并向客户端发送禁止执行程序的通知消息)。
本发明技术方案,由于一般情况下,服务器端的程序代码段不容易被篡改,因此,通过服务器端存储的程序代码段来判断客户端程序代码段是否被篡改的检测方式更准确,提高了对客户端软件是否被篡改进行检测的有效性。
为方便大家理解本发明实施例,首先对常用的技术术语进行简单的说明。
(1)程序代码段。在采用段式内存管理的操作系统架构中,程序代码段是指用来存放程序执行代码的一块内存区域,该内存区域的大小在程序运行前已经确定,并且程序代码段所在的内存区域为只读内存区;若可执行应用程序被外部反汇编程序或病毒修改,则该应用程序所对应的程序代码段会发生变化,因此,程序代码段可以表征其所对应的可执行程序的唯一性。
(2)Hash算法。Hash一般翻译成“散列”,也可以直接翻译成″哈希″,Hash算法是指把任意长度的输入通过散列算法(比如常用的MD5、SHA-1等)变换成固定长度的输出,该输出值就是散列值(即Hash值)。Hash算法是一种压缩映射的方法,即散列值的空间通常远小于输入的空间,相同的输入通过相同的Hash算法得到相同的Hash值,不同的输入通过相同的Hash算法得到的Hash值不同。
(3)GUID(Globally Unique Identifier,全球唯一标识符)。GUID是一个字母数字标识符,用于指示产品的唯一性,在许多常用软件应用程序(如Web浏览器、媒体播放器等)中,都使用GUID;GUID通过特定算法产生的一个二进制长度为128位的数字,在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
下面结合说明书附图对本发明实施例进行详细的描述。
参见图1,为本发明实施例中对软件进行保护的流程图,该流程包括以下步骤:
步骤101、客户端向服务器端发送程序运行请求,还请求中携带有客户端的标识信息与请求运行软件(后续将该请求运行的软件称为待运行软件)的版本信息。
该步骤中,程序运行请求可基于任何网络通讯协议,如TCP(TransmissionControl Protocol,传输控制协议)/UDP(User Datagram Protocol,用户数据报协议)等。客户端标识既可以是用户编号也可以是软件序列号等特定信息,还可以是客户端临时产生的GUID。
步骤102、服务器端根据该程序运行请求,将该请求中携带的版本信息与该客户端标识对应的多个软件的版本信息进行匹配,匹配成功后向发起程序运行请求的客户端发送随机数据。
步骤103、客户端采用Hash算法根据服务器端发送的随机数据、客户端保存待运行软件版本信息对应的程序代码段以及客户端标识进行Hash运算,将得到的第一Hash值发送至服务器端。
该步骤中,将第一Hash值发送至服务器端具体为:将第一Hash值以及客户端标识以及待运行软件版本信息封装成相应的通讯报文之后,发送至服务器端。
该步骤中,客户端获取本地保存的程序代码段的方式如下:应用程度代码段以可执行文件的形式保存,由于可执行文件都具有相应的文件格式,因此在操作系统加载可执行文件时,通过一定的映射内存方式存储可执行文件;客户端通过相关的编程接口可获取到可执行文件;如Windows操作系统中的PE文件,被操作系统加载后通过其规定的方式加载到内存中,客户端可通过微软提供的API获取该PE文件。
该步骤中的程序代码段以二进制文件的形式存储在客户端。
步骤104、服务器端采用设定的Hash算法根据下发给客户端的随机数、服务器端保存的待运行软件版本信息对应的程序代码段以及客户端发送的客户端标识进行Hash运算,得到第二Hash值。
该步骤中,服务器端生成第二Hash值与客户端生成第一Hash值所采用的Hash算法一致。
步骤105、服务器端将第二Hash值与接收到的第一Hash值进行比较,根据比较结果向发起程序运行请求的客户端发送运行结果通知消息,以通知客户端根据该服务器端发送的运行结果通知消息进行相应的操作。
该步骤中,若第一Hash值与第二Hash值相等,服务器端向客户端发送的运行结果通知消息为允许客户端执行程序的通知消息;若第一Hash值与第二Hash值不相等,服务器端向客户端发送的运行结果报文为禁止客户端执行程序的通知消息。
该步骤中,可以报文的形式发送运行结果通知消息。
该步骤中,客户端进行相应的操作,具体为:当接收到的运行结果通知消息为允许客户端执行程序的通知消息时,客户端则继续执行后续的功能;当接收到的运行结果通知消息为禁止客户端执行程序的通知消息时,客户端则自动退出,结束流程。
本发明实施例中,客户端与服务器端进行Hash运算所采用的Hash算法可以是MD5、SHA-1等较为常用的Hash算法。
较佳地,上述流程中,若客户端在向服务器发送第一Hash值之后的一段时间阈值后(该段时间阈值可根据实际应用场景进行预先设置)未收到服务器端下发的运行结果通知消息,客户端则不执行程序。
本发明实施例中,还可以是,服务器端默认设置为在判断第一Hash值与第二Hash值不相等时,向客户端发送禁止执行程序的通知消息;客户端在向服务器端发送第一Hash值之后的一段时间阈值后还未收到服务器端下发的禁止执行程序的通知消息时,客户端自动执行程序;或者,
服务器端默认设置为在判断第一Hash值与第二Hash值相等时,向客户端发送允许执行程序的通知消息;客户端在向服务器端发送第一Hash值之后的一段时间阈值后还未收到服务器端下发的允许执行程序的通知消息时,客户端自动退出,不执行程序;还或者,
客户端在向服务器端发送第一Hash值之后的一段时间阈值后还未收到服务器端下发的允许执行程序的通知消息时,客户端自动执行程序。
实现方式多种多样,并不仅限于本发明实施例中列举的上述几种方式,本领域技术人员应该可以理解还有其他的多种方式。
较佳地,为确保软件整体的保护机制的完好性,本发明实施例中,在服务器端确认第一Hash值与第二Hash值相等之后的一段时间内,客户端与服务器段还可以继续进行信息交互。
较佳地,为进一步提高报文传输的安全性,服务器端向客户端发送的运行结果通知消息(该运行结果通知消息可以报文的形式发送)之前,将该运行结果通知消息进行加密处理,加密算法以及加密密钥采用固定方式预先设置在服务器端与客户端上;客户端接收到该运行结果通知消息之后,采用加密密钥对该运行结果通知消息进行解密处理。
较佳地,为更进一步提高软件保护能力,在客户端与服务器端存储有相同的Hash算法映射表或列表,每种Hash算法对应一个索引值,在每一次启动程序运行流程时,需要客户端与服务器端进行协商,以决定该次程序运行应该采用哪种Hash算法。比如,在上述步骤102中,服务器端将该次程序运行所采用的Hash算法的索引值发送至客户端;在步骤103中,客户端根据该索引值对应的Hash算法进行Hash运算。
较佳地,为进一步防止侵入者通过软件反汇编将与网络侧的服务器端通讯的验证功能,本发明实施例中可通过增加其他防反汇编技术,如代码混淆、花指令等防反汇编技术;或者,将客户端代码段的校验文件存储至系统分区的某个位置,当网络无法正常运行时,采用本地保存的校验文件进行本地校验。
为更清楚描述本发明技术方案,下面以一具体的信令交互流程图对本发明技术方案进行详细描述,如图2所示。
参见图2,为本发明实施例中对软件进行保护的信令交互流程图,该流程包括以下步骤:
本发明实施例中,客户端软件开发相应的接口,提供生成客户端代码段采集的功能,并将客户端代码段以二进制文件的形式分别保存在客户端与服务器端。服务器端软件所在的主机上部署有客户端代码段文件,服务器端设置有相应的配置文件,该配置文件供客户端代码段文件部署时使用。
步骤201、客户端的客户端软件向服务器端的服务器端软件发送程序运行请求,该程序运行请求中携带有客户端标识信息与待运行软件的版本信息。
步骤202、服务器端软件根据接收到的程序运行请求,记录该运行请求中携带的客户端标识;并查询该客户端标识所对应的一个或多个软件版本信息,将该程序运行请求中携带的版本信息与查询得到的该客户端标识对应的多个软件版本信息进行匹配,若匹配成功,则执行步骤203,若匹配失败,则向客户端发送禁止运行程序的报文。
步骤203、服务器端软件向客户端软件发送程序运行响应,该响应中携带有随机数、客户端标识以及Hash算法的索引值。
步骤204、客户端软件对接收到的程序运行响应中的客户端标识与自身的客户端标识进行比较,若相同,则执行步骤205;若不相同,客户端软件自动退出,结束流程。
步骤205、客户端软件从客户端中的第一程序代码段文件存储器中(该第一程序代码段存储器用于存储客户端本地的各软件所对应的程序代码段)获取待运行软件版本信息所对应的程序代码段信息。
步骤206~207、客户端软件根据服务器端软件下发的随机数据、客户端标识以及获取到的程序代码段,采用服务器端软件下发的Hash算法索引值对应的Hash算法进行Hash运算,得到第一Hash值;以及,将得到的第一Hash值以及客户端标识发送至服务器端软件。
步骤208~209、服务器端软件接收到客户端软件发送的第一Hash值之后,从服务器端中的第二程序代码段文件存储器中获取待运行软件版本信息对应的程序代码段;并根据下发给客户端的随机数。客户端标识以及获取到的程序代码段采用索引值对应的Hash算法进行Hash运算,得到第二Hash值。
步骤210、服务器端软件对第一Hash值与第二Hash值进行比较,若相等,则向客户端软件发送允许执行程序的运行结果报文,若不相等,则向客户端软件发送禁止运行程序的运行结果报文。
基于上述流程相同的构思,本发明实施例还提供一种软件保护系统,该系统的结构如图3所示。
参见图3,为本发明实施例中软件保护系统的结构示意图,该系统包括服务器端31与客户端32,其中:
客户端31,用于向服务器端32发送携带有客户端标识以及待运行软件版本信息的程序运行请求;在接收到服务器端32下发的随机数之后,采用设定的Hash算法根据客户端标识、随机数据以及客户端存储的待运行软件版本信息对应的程序代码段确定出第一Hash值,并将该第一Hash值发送至服务器端32;根据服务器端32下发的允许执行程序的通知消息执行所述待运行软件对应的程序代码段。
服务器端32,用于根据客户端31发送的程序运行请求中的客户端标识与待运行版本信息,向客户端31发送随机数据;采用设定的Hash算法根据客户端标识、随机数据以及服务器端32存储的待运行软件版本信息对应的程序代码段确定出第二Hash值;在第一Hash值与第二Hash值相等时,向客户端31发送允许执行程序的通知消息。
按照功能划分,将该客户端31划分为第一收发模块311、第一确定模块312以及执行模块313,其中:
第一收发模块311,用于向服务器端32发送携带有客户端标识以及待运行软件版本信息的程序运行请求、第一Hash值;以及,用于接收服务器端32发送的随机数据以及允许执行程序的通知消息;
第一确定模块312,用于采用设定的Hash算法根据客户端标识、随机数据以及客户端存储的待运行软件版本信息对应的程序代码段确定出第一Hash值,并将该第一Hash值发送至第一收发模块311;
执行模块313,用于根据第一收发模块311接收到的允许执行程序的通知消息执行待运行软件对应的程序代码段。
按功能划分,可将服务器端32划分为第二收发模块321、第二确定模块322以及验证模块323,其中:
第二收发模块321,用于接收客户端31发送的程序运行请求和第一Hash值;以及,用于将随机数与允许执行程序的通知消息发送至客户端321;
第二确定模块,用于采用上述设定的Hash算法根据客户端标识、随机数据以及服务器端32存储的待运行软件版本信息对应的程序代码段确定出第二Hash值,并将该第二Hash值发送至第二收发模块321;
验证模块323,用于根据第二收发模块321接收到的程序运行请求中的客户端标识与待运行版本信息,确定是否向客户端31发送随机数据;以及,比较第一Hash值与第二Hash值,在第一Hash值与第二Hash值相等时,指示第二收发模块321向客户端31发送允许执行程序的通知消息。
验证模块323确定是否向客户端31发送随机数据,具体为:验证模块323获取客户端标识相对应的一个或多个软件版本信息;并将待运行软件版本信息与获取到的一个或多个软件版本信息进行匹配,并在匹配成功时确定向客户端31发送随机数据。
较佳地,验证模块323在第一Hash值与第二Hash值相等时,指示第二收发模块321向客户端31发送禁止执行程序的通知消息。
较佳地,客户端31还包括第一存储模块310,服务器端32还包括第二存储模块320,其中:
第一存储模块310,用于存储用户终端31与服务器端32之间约定的加密机制与密钥。
第二存储模块320,用于存储用户终端31与服务器端32之间约定的加密机制与密钥。
较佳地,第二收发模块321在向客户端31发送允许执行程序的通知消息之前,采用第二存储模块320存储的加密机制对所述允许执行程序的通知消息进行加密;第一收发模块311采用第一存储模块310中存储的密钥对接收到允许执行程序的通知消息进行解密。
较佳地,第一存储模块310还存储有服务器端32与客户端31之间约定的多种Hash算法,每种Hash算法对应一个索引值。
第二存储模块320还存储有服务器端32与客户端31之间约定的多种Hash算法,每种Hash算法对应一个索引值。
较佳地,第二收发模块321在向客户端31发送随机数据时,还向客户端31发送用于确定第一Hash值的Hash算法的索引值;第一确定模块312采用第一收发模块311接收到的索引值对应的Hash算法根据客户端标识、随机数据以及客户端本地存储的待运行软件对应的程序代码段确定出第一Hash值。
本发明实施例中的第一收发模块311、第一收发模块312以及执行模块313构成客户端软件;第二收发模块321、第二确定模块322以及验证模块323构成服务器端软件;第一存储模块310即为第一程序代码段文件存储器,第二存储模块320即为第二程序代码段文件存储器。
本发明实施例中提供的技术方案,可以应用于很多场景,对于基于网络Client/Server架构的通讯软件具有较好的效果,比如,即时聊天工具、网游客户端、认证客户端、需要在线更新病毒库的杀毒软件、email客户端等,在这些应用场景中,应用本发明技术方案可以避免应用程序代码被篡改而导致完整性检查失效的问题。
本发明实施例中,由于将客户端软件对应的程序代码段存储在服务器端,在验证客户端的应用程序代码端是否被篡改时,客户端根据客户端标识、服务器下发的随机数以及客户端存储的待运行软件版本信息对应的应用程序生成第一Hash值,服务器端根据客户端标识、下发给客户端的随机数以及服务器端存储的待运行软件版本信息对应的程序代码段生成第二Hash值;服务器端根据所述第一Hash值与第二Hash值是否相等来确定客户端的程序代码段是否被篡改;由于一般情况下,服务器端的程序代码段不容易被篡改,因此,通过服务器端存储的程序代码段来判断客户端程序代码段是否被篡改的检测方式更准确,提高了对客户端软件是否被篡改进行检测的有效性;另外,不需要增加新的硬件设备,因此,相对于现有的软件结合硬件来保护软件的方式而言,降低硬件资源的消耗,节省硬件资源。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于网络的软件保护方法,其特征在于,包括:
服务器端接收客户端发送的程序运行请求,所述程序运行请求携带有客户端标识以及待运行软件版本信息;
服务器端根据所述客户端标识与待运行版本信息,向所述客户端发送随机数据;
客户端采用设定的Hash算法,根据客户端标识、所述随机数据以及客户端存储的所述待运行版本信息对应的程序代码段确定出第一Hash值,并将该第一Hash值发送至所述服务器端;
服务器端采用所述设定的Hash算法,根据所述客户端标识、随机数据以及服务器端存储的所述待运行版本信息对应的程序代码段确定出第二Hash值;
服务器端将所述第一Hash值与第二Hash值进行比较,并根据比较结果确定是否允许所述客户端执行程序。
2.如权利要求1所述的方法,其特征在于,所述服务器端根据所述客户端标识与待运行版本信息,向所述客户端发送随机数据,具体为:
服务器端获取所述客户端标识相对应的一个或多个软件版本信息;
服务器端将所述待运行软件版本信息与获取到的所述一个或多个软件版本信息进行匹配,并在匹配成功时向所述客户端发送随机数据。
3.如权利要求2所述的方法,其特征在于,还包括步骤:
服务器端在匹配不成功时,向所述客户端发送禁止运行程序的通知消息。
4.如权利要求1所述的方法,其特征在于,根据比较结果确定是否允许所述客户端执行程序,具体为:
服务器端在所述第一Hash值与第二Hash值相等时,确定允许所述客户端执行程序,并向所述客户端发送允许执行程序的通知消息;
服务器端在所述第一Hash值与第二Hash值不相等时,确定禁止所述客户端执行程序,并向所述客户端发送禁止执行程序的通知消息。
5.如权利要求1~4任一项所述的方法,其特征在于,所述服务器端与所述客户端存储有约定的多种Hash算法,每种Hash算法对应一个索引值;
所述服务器端在向所述客户端发送随机数据时,还包括向所述客户端发送用于确定所述第一Hash值的Hash算法的索引值;
所述客户端与服务器端所采用的设定的Hash算法为所述索引值对应的Hash算法。
6.如权利要求1~4任一项所述的方法,其特征在于,所述客户端标识为用户编号、待运行软件的序列号或者为所述客户端临时产生的全球唯一标识符GUID。
7.一种客户端,其特征在于,包括第一收发模块、第一确定模块以及执行模块,其中:
第一收发模块,用于向所述服务器端发送携带有客户端标识以及待运行软件版本信息的程序运行请求、第一Hash值;用于接收服务器端发送的随机数据,以及,用于接收服务器端下发的允许执行程序的通知消息或禁止执行程序的通知消息;
第一确定模块,用于采用设定的Hash算法根据客户端标识、所述随机数据以及客户端存储的待运行软件版本信息对应的程序代码段确定出第一Hash值,并将所述第一Hash值发送至所述第一收发模块;
执行模块,用于根据所述收发模块接收到的允许执行程序的通知消息执行所述待运行软件对应的程序代码段;或者,根据所述收发模块接收到的禁止执行程序的通知消息不执行程序。
8.如权利要求7所述的客户端,其特征在于,还包括所述第一存储模块;
所述第一存储模块,用于存储所述服务器端与所述客户端存储有约定的多种Hash算法,每种Hash算法对应一个索引值;
所述第一收发模块进一步应用为,接收所述服务器端发送的用于确定所述第一Hash值的Hash算法的索引值;
所述第一确定模块具体应用为:采用所述第一收发模块接收到的索引值对应的Hash算法根据客户端标识、所述随机数据以及客户端存储的待运行软件对应的程序代码段确定出第一Hash值。
9.一种服务器,其特征在于,包括第二收发模块、第二确定模块以及验证模块,其中:
第二收发模块,用于接收客户端发送的程序运行请求和第一Hash值;以及,用于将随机数与允许执行程序的通知消息发送至所述客户端;
第二确定模块,用于采用所述设定的Hash算法根据所述客户端标识、随机数据以及服务器端存储的待运行软件版本信息对应的程序代码段确定出第二Hash值;
验证模块,用于根据所述第二收发模块接收到的程序运行请求中的客户端标识与待运行版本信息,确定是否向所述客户端发送随机数据;以及,比较所述第一Hash值与第二Hash值,根据比较结果确定是否允许客户端执行程序。
10.如权利要求9所述的服务器,其特征在于,所述验证模块确定是否向所述客户端发送随机数据,具体应用为:验证模块获取所述客户端标识相对应的一个或多个软件版本信息;并将所述待运行软件版本信息与获取到的所述一个或多个软件版本信息进行匹配,并在匹配成功时确定向所述客户端发送随机数据。
11.如权利要求9所述的服务器,其特征在于,所述验证模块根据比较结果确定是否允许客户端执行程序,具体应用为:
服务器端在所述第一Hash值与第二Hash值相等时,确定允许所述客户端执行程序,并向所述客户端发送允许执行程序的通知消息;
服务器端在所述第一Hash值与第二Hash值不相等时,确定禁止所述客户端执行程序,并向所述客户端发送禁止运行程序的通知消息。
12.如权利要求9所述的服务器,其特征在于,还包括第二存储模块;
所述第二存储模块,用于存储所述服务器端与所述客户端存储有约定的多种Hash算法,每种Hash算法对应一个索引值;
所述第二收发模块进一步应用为,在向所述客户端发送随机数据时,还包括向所述客户端发送用于确定所述第一Hash值的Hash算法的索引值;
所述第二确定模块具体应用为:采用所述第二收发模块发送的索引值对应的Hash算法根据客户端标识、所述随机数据以及服务器端存储的待运行软件对应的程序代码段确定出第二Hash值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010104857XA CN101783801B (zh) | 2010-01-29 | 2010-01-29 | 一种基于网络的软件保护方法、客户端及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010104857XA CN101783801B (zh) | 2010-01-29 | 2010-01-29 | 一种基于网络的软件保护方法、客户端及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101783801A true CN101783801A (zh) | 2010-07-21 |
CN101783801B CN101783801B (zh) | 2013-04-24 |
Family
ID=42523619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010104857XA Active CN101783801B (zh) | 2010-01-29 | 2010-01-29 | 一种基于网络的软件保护方法、客户端及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101783801B (zh) |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901323A (zh) * | 2010-07-22 | 2010-12-01 | 湖北盛天网络技术有限公司 | 一种监控程序模块加载活动的系统过滤方法 |
CN102890757A (zh) * | 2012-09-11 | 2013-01-23 | 中国电力科学研究院 | 一种电能表软件的比对方法及其比对系统 |
CN103077345A (zh) * | 2012-12-27 | 2013-05-01 | 深信服网络科技(深圳)有限公司 | 基于虚拟机的软件授权方法及系统 |
CN103108037A (zh) * | 2013-01-22 | 2013-05-15 | 华为技术有限公司 | 一种通信方法,Web服务器及Web通信系统 |
CN104134021A (zh) * | 2013-06-20 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 软件的防篡改验证方法及装置 |
WO2014206223A1 (zh) * | 2013-06-27 | 2014-12-31 | 华为终端有限公司 | 一种网页应用程序的安全访问方法、服务器和客户端 |
CN104268458A (zh) * | 2014-09-23 | 2015-01-07 | 潍柴动力股份有限公司 | 一种车辆程序加密验证方法及加密、验证装置 |
CN104301292A (zh) * | 2013-07-19 | 2015-01-21 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104392151A (zh) * | 2014-11-27 | 2015-03-04 | 北京深思数盾科技有限公司 | 一种软件保护方法及系统 |
CN105164969A (zh) * | 2013-12-06 | 2015-12-16 | 北京新媒传信科技有限公司 | 即时通信客户端的识别方法和识别系统 |
CN105190637A (zh) * | 2014-03-04 | 2015-12-23 | 华为技术有限公司 | 软件安全性检测方法、装置及设备 |
CN105260653A (zh) * | 2015-10-20 | 2016-01-20 | 浪潮电子信息产业股份有限公司 | 一种基于Linux的程序安全加载方法及系统 |
CN105678120A (zh) * | 2014-11-20 | 2016-06-15 | 中国移动通信集团公司 | 一种应用程序安全防护方法和服务器 |
CN105743643A (zh) * | 2016-04-26 | 2016-07-06 | 百度在线网络技术(北京)有限公司 | 通信安全的检测方法及装置 |
CN105959729A (zh) * | 2016-06-29 | 2016-09-21 | 武汉斗鱼网络科技有限公司 | 一种统计直播平台在线用户人数的方法及系统 |
WO2017041606A1 (zh) * | 2015-09-11 | 2017-03-16 | 北京金山安全软件有限公司 | 程序文件校验方法及装置、服务器和终端 |
CN106855804A (zh) * | 2016-11-03 | 2017-06-16 | 广州视源电子科技股份有限公司 | 代码变更管控方法及装置 |
CN107040524A (zh) * | 2017-03-21 | 2017-08-11 | 北京信安世纪科技有限公司 | 一种程序文件验证方法及程序文件验证装置 |
CN107566335A (zh) * | 2017-07-21 | 2018-01-09 | 北京海泰方圆科技股份有限公司 | 消息的处理方法和装置 |
CN107800536A (zh) * | 2016-08-30 | 2018-03-13 | Ncr公司 | 安全进程模仿检测 |
CN107919960A (zh) * | 2017-12-04 | 2018-04-17 | 北京深思数盾科技股份有限公司 | 一种应用程序的认证方法和系统 |
CN108199827A (zh) * | 2018-01-09 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 客户端代码完整性校验方法、存储介质、电子设备及系统 |
CN108881303A (zh) * | 2018-08-06 | 2018-11-23 | 罗伯特·博世有限公司 | 具有计算功能的节点、安全验证网络和安全验证方法 |
CN108959860A (zh) * | 2018-07-20 | 2018-12-07 | 厦门市美亚柏科信息股份有限公司 | 一种检测Android系统是否被破解和破解记录获取方法 |
CN109063514A (zh) * | 2018-06-29 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 用于防止数据篡改的方法、装置、设备和计算机可读存储介质 |
CN109150840A (zh) * | 2018-07-25 | 2019-01-04 | 重庆邮电大学 | 一种车联网中更新包自适应防篡改的数据结构及方法 |
CN109492392A (zh) * | 2017-09-12 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种核心函数的检测方法及系统 |
CN110383277A (zh) * | 2017-03-07 | 2019-10-25 | 华为技术有限公司 | 虚拟机监视器测量代理 |
CN110968870A (zh) * | 2019-11-28 | 2020-04-07 | 广发证券股份有限公司 | 一种软件运行时安全的检测方法 |
CN111104669A (zh) * | 2018-10-29 | 2020-05-05 | 中兴通讯股份有限公司 | 破解检测方法、装置、系统、服务器、终端及存储介质 |
CN111402658A (zh) * | 2019-01-03 | 2020-07-10 | 福建天泉教育科技有限公司 | 一种自动化校验作答系统的方法及终端 |
CN112968748A (zh) * | 2021-04-14 | 2021-06-15 | 中国人民解放军海军航空大学岸防兵学院 | 软件同步误差补偿方法、系统、介质及设备 |
CN113343224A (zh) * | 2021-06-04 | 2021-09-03 | 中交第一公路勘察设计研究院有限公司 | 一种基于互联网的软件保护方法 |
CN113672920A (zh) * | 2021-08-06 | 2021-11-19 | 安天科技集团股份有限公司 | 一种样本篡改行为的识别方法、装置及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7231518B1 (en) * | 2003-03-28 | 2007-06-12 | Cisco Technology, Inc. | System and method for authenticating a storage device for use with driver software in a storage network |
CN101083660A (zh) * | 2007-05-30 | 2007-12-05 | 北京润汇科技有限公司 | 基于会话控制的动态地址分配协议的ip网认证鉴权方法 |
CN101459516B (zh) * | 2009-02-20 | 2010-12-08 | 浙江工业大学 | 一种动态口令安全登录方法 |
-
2010
- 2010-01-29 CN CN201010104857XA patent/CN101783801B/zh active Active
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901323A (zh) * | 2010-07-22 | 2010-12-01 | 湖北盛天网络技术有限公司 | 一种监控程序模块加载活动的系统过滤方法 |
CN101901323B (zh) * | 2010-07-22 | 2015-04-22 | 湖北盛天网络技术股份有限公司 | 一种监控程序模块加载活动的系统过滤方法 |
CN102890757B (zh) * | 2012-09-11 | 2015-08-05 | 中国电力科学研究院 | 一种电能表软件的比对方法及其比对系统 |
CN102890757A (zh) * | 2012-09-11 | 2013-01-23 | 中国电力科学研究院 | 一种电能表软件的比对方法及其比对系统 |
CN103077345A (zh) * | 2012-12-27 | 2013-05-01 | 深信服网络科技(深圳)有限公司 | 基于虚拟机的软件授权方法及系统 |
CN103077345B (zh) * | 2012-12-27 | 2015-10-21 | 深信服网络科技(深圳)有限公司 | 基于虚拟机的软件授权方法及系统 |
CN103108037A (zh) * | 2013-01-22 | 2013-05-15 | 华为技术有限公司 | 一种通信方法,Web服务器及Web通信系统 |
CN103108037B (zh) * | 2013-01-22 | 2015-12-02 | 华为技术有限公司 | 一种通信方法,Web服务器及Web通信系统 |
CN104134021A (zh) * | 2013-06-20 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 软件的防篡改验证方法及装置 |
US9607147B2 (en) | 2013-06-20 | 2017-03-28 | Tencent Technology (Shenzhen) Company Limited | Method and device for detecting software-tampering |
CN104134021B (zh) * | 2013-06-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 软件的防篡改验证方法及装置 |
CN104253791A (zh) * | 2013-06-27 | 2014-12-31 | 华为终端有限公司 | 一种网页应用程序的安全访问方法、服务器和客户端 |
WO2014206223A1 (zh) * | 2013-06-27 | 2014-12-31 | 华为终端有限公司 | 一种网页应用程序的安全访问方法、服务器和客户端 |
US9830454B2 (en) | 2013-06-27 | 2017-11-28 | Huawei Device (Dongguan) Co., Ltd. | Web application security access method, server, and client |
CN104301292A (zh) * | 2013-07-19 | 2015-01-21 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104301292B (zh) * | 2013-07-19 | 2018-05-18 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN105164969A (zh) * | 2013-12-06 | 2015-12-16 | 北京新媒传信科技有限公司 | 即时通信客户端的识别方法和识别系统 |
CN105190637A (zh) * | 2014-03-04 | 2015-12-23 | 华为技术有限公司 | 软件安全性检测方法、装置及设备 |
CN104268458A (zh) * | 2014-09-23 | 2015-01-07 | 潍柴动力股份有限公司 | 一种车辆程序加密验证方法及加密、验证装置 |
CN105678120A (zh) * | 2014-11-20 | 2016-06-15 | 中国移动通信集团公司 | 一种应用程序安全防护方法和服务器 |
CN105678120B (zh) * | 2014-11-20 | 2019-06-07 | 中国移动通信集团公司 | 一种应用程序安全防护方法和服务器 |
CN104392151A (zh) * | 2014-11-27 | 2015-03-04 | 北京深思数盾科技有限公司 | 一种软件保护方法及系统 |
WO2017041606A1 (zh) * | 2015-09-11 | 2017-03-16 | 北京金山安全软件有限公司 | 程序文件校验方法及装置、服务器和终端 |
CN105260653A (zh) * | 2015-10-20 | 2016-01-20 | 浪潮电子信息产业股份有限公司 | 一种基于Linux的程序安全加载方法及系统 |
CN105743643A (zh) * | 2016-04-26 | 2016-07-06 | 百度在线网络技术(北京)有限公司 | 通信安全的检测方法及装置 |
CN105959729A (zh) * | 2016-06-29 | 2016-09-21 | 武汉斗鱼网络科技有限公司 | 一种统计直播平台在线用户人数的方法及系统 |
CN107800536A (zh) * | 2016-08-30 | 2018-03-13 | Ncr公司 | 安全进程模仿检测 |
CN107800536B (zh) * | 2016-08-30 | 2021-05-25 | Ncr公司 | 安全进程模仿检测 |
CN106855804B (zh) * | 2016-11-03 | 2020-05-19 | 广州视源电子科技股份有限公司 | 代码变更管控方法及装置 |
CN106855804A (zh) * | 2016-11-03 | 2017-06-16 | 广州视源电子科技股份有限公司 | 代码变更管控方法及装置 |
CN110383277A (zh) * | 2017-03-07 | 2019-10-25 | 华为技术有限公司 | 虚拟机监视器测量代理 |
US11126706B2 (en) | 2017-03-07 | 2021-09-21 | Huawei Technologies Co., Ltd. | Hypervisor measurement agent |
CN110383277B (zh) * | 2017-03-07 | 2021-09-14 | 华为技术有限公司 | 虚拟机监视器测量代理 |
CN107040524A (zh) * | 2017-03-21 | 2017-08-11 | 北京信安世纪科技有限公司 | 一种程序文件验证方法及程序文件验证装置 |
CN107566335A (zh) * | 2017-07-21 | 2018-01-09 | 北京海泰方圆科技股份有限公司 | 消息的处理方法和装置 |
CN107566335B (zh) * | 2017-07-21 | 2019-04-02 | 北京海泰方圆科技股份有限公司 | 消息的处理方法和装置 |
CN109492392A (zh) * | 2017-09-12 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种核心函数的检测方法及系统 |
CN107919960A (zh) * | 2017-12-04 | 2018-04-17 | 北京深思数盾科技股份有限公司 | 一种应用程序的认证方法和系统 |
CN108199827A (zh) * | 2018-01-09 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 客户端代码完整性校验方法、存储介质、电子设备及系统 |
CN109063514B (zh) * | 2018-06-29 | 2022-01-25 | 阿波罗智联(北京)科技有限公司 | 用于防止数据篡改的方法、装置、设备和计算机可读存储介质 |
CN109063514A (zh) * | 2018-06-29 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 用于防止数据篡改的方法、装置、设备和计算机可读存储介质 |
CN108959860A (zh) * | 2018-07-20 | 2018-12-07 | 厦门市美亚柏科信息股份有限公司 | 一种检测Android系统是否被破解和破解记录获取方法 |
CN109150840B (zh) * | 2018-07-25 | 2021-04-20 | 重庆邮电大学 | 一种车联网中更新包自适应防篡改的数据结构及方法 |
CN109150840A (zh) * | 2018-07-25 | 2019-01-04 | 重庆邮电大学 | 一种车联网中更新包自适应防篡改的数据结构及方法 |
CN108881303A (zh) * | 2018-08-06 | 2018-11-23 | 罗伯特·博世有限公司 | 具有计算功能的节点、安全验证网络和安全验证方法 |
CN111104669A (zh) * | 2018-10-29 | 2020-05-05 | 中兴通讯股份有限公司 | 破解检测方法、装置、系统、服务器、终端及存储介质 |
CN111402658A (zh) * | 2019-01-03 | 2020-07-10 | 福建天泉教育科技有限公司 | 一种自动化校验作答系统的方法及终端 |
CN110968870A (zh) * | 2019-11-28 | 2020-04-07 | 广发证券股份有限公司 | 一种软件运行时安全的检测方法 |
CN112968748A (zh) * | 2021-04-14 | 2021-06-15 | 中国人民解放军海军航空大学岸防兵学院 | 软件同步误差补偿方法、系统、介质及设备 |
CN113343224A (zh) * | 2021-06-04 | 2021-09-03 | 中交第一公路勘察设计研究院有限公司 | 一种基于互联网的软件保护方法 |
CN113343224B (zh) * | 2021-06-04 | 2023-06-16 | 中交第一公路勘察设计研究院有限公司 | 一种基于互联网的软件保护方法 |
CN113672920A (zh) * | 2021-08-06 | 2021-11-19 | 安天科技集团股份有限公司 | 一种样本篡改行为的识别方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101783801B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101783801B (zh) | 一种基于网络的软件保护方法、客户端及服务器 | |
US10762209B2 (en) | Boot security | |
RU2568295C2 (ru) | Система и способ временной защиты операционной системы программно-аппаратных устройств от приложений, содержащих уязвимости | |
EP2441206B1 (en) | Discovery of secure network enclaves | |
KR100823738B1 (ko) | 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법 | |
US8677493B2 (en) | Dynamic cleaning for malware using cloud technology | |
US20150163229A1 (en) | Data Security and Integrity by Remote Attestation | |
US20100082984A1 (en) | Protocol-Independent Remote Attestation And Sealing | |
US20140101765A1 (en) | Auditing a device | |
CN106295407B (zh) | 一种检测文件是否被篡改的方法及装置 | |
EP3270318B1 (en) | Dynamic security module terminal device and method for operating same | |
CN101404576A (zh) | 一种网络资源查询方法和系统 | |
CN106973046B (zh) | 网关间数据传输方法、源网关及目的网关 | |
US20200226292A1 (en) | Protecting integrity of log data | |
CN110138731B (zh) | 一种基于大数据的网络防攻击方法 | |
US10339307B2 (en) | Intrusion detection system in a device comprising a first operating system and a second operating system | |
CN112134893A (zh) | 物联网安全防护方法、装置、电子设备及存储介质 | |
US10122755B2 (en) | Method and apparatus for detecting that an attacker has sent one or more messages to a receiver node | |
CN109302442B (zh) | 一种数据存储证明方法及相关设备 | |
CN111585995A (zh) | 安全风控信息传输、处理方法、装置、计算机设备及存储介质 | |
Netto et al. | An integrated approach for detecting ransomware using static and dynamic analysis | |
CN111224826B (zh) | 基于分布式系统的配置更新方法、设备、系统及介质 | |
CN117610083A (zh) | 文件校验方法、装置、电子设备及计算机存储介质 | |
CN109218009B (zh) | 一种提高设备id安全性的方法、客户端和服务器 | |
Jeong et al. | MysteryChecker: Unpredictable attestation to detect repackaged malicious applications in Android |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |